Skip to content

v3.6.20

Latest

Choose a tag to compare

@syhgorath syhgorath released this 02 Nov 20:36
· 4 commits to main since this release
8efb286

Bu yama sürümü linux-hardening 0.12.0'ı kilitler ve sunucu eklerken platform seçimini, güncelleme panelini getirir.

Dikkat

  • Mevcut sunucularda linux-hardening eylemleri ⛔ görünebilir: 0.12.0 preview, apply, pve_firewall_preview ve pve_firewall_apply eylemlerini hardening_ssh_allow_from dolu olmadan çalıştırmaz (kemer ve pantolon: erişim kısıtını boş bırakıp kendinizi dışarıda bırakmayı önler). Paket menüsünü ilk açtığınızda sunucu türü ve izinli ağlar sorulur; "Şimdi değil" derseniz değer yazılmaz ve eylemler ⛔ kalır. audit ve rollback_* etkilenmez. Güncellemeden sonra --components report hangi sunucunun etkilendiğini gösterir.
  • Proxmox'ta apply artık hardening_pve_apply=true'yu o koşuya özel verir (yalnızca sunucu türü proxmox-host seçiliyse, uyarı sunucu adı onayından önce gösterilir, .vars dosyanıza yazılmaz ve kendi yazdığınız değer ezilmez).
  • Gerçek VM (Ubuntu + Proxmox) doğrulaması henüz yapılmadı (3.6.19'daki fail2ban maddesi dahil): yalnızca birim testleri, gerçek 0.12.0 manifestiyle yerel denemeler ve Docker LAB e2e (18/18) yeşil. Platform seçimi, apply_vars ve güncelleme paneli gerçek terminalde/sunucuda elle denenmedi.

Düzeltildi

  • Sunucu eklerken CIDR editörü: ModuleGenerator.sh SSHModule.sh'yi yüklemediği için sunucu bilgileri (IP/port/kullanıcı/anahtar) okunamıyor ve "_ssh_env_get: command not found" yazıyordu; ayrıca değişken türü sorgusu Python'a BrokenPipe izi bastırabiliyordu. İkisi de giderildi (test eklendi).

Eklendi

  • Paket değişiklik raporu (güncelleme paneli, 3. adım): güncellemede bir paketin sürümü değişince (--components sync, hem menü hem --update yolunda) sonda "📋 paket eski → yeni: ne değişti?" yazılır: yeni/kalkan değişkenler, türü ya da varsayılanı değişenler (örn. hardening_fail2ban_bantime "1h" → "10m"), yeni requires_vars kuralları, eklenen sunucu türü seçimi ve bu bilgisayardaki sunucularınıza etkisi ("web1: preview, apply ⛔ — değeri boş: …", "sunucu türü seçilmemiş"). Yalnızca okur, hiçbir şey yazmaz/değiştirmez; paket hiç ayarlanmamış sunucular atlanır. Eski sürüm, diskte duran bir önceki sürümdür (eski sürümler prune ile silinmeden önce). Elle: --components report [paket [eski-sürüm]]. Yeni: Helpers/ComponentsReport.sh.
  • Güncelleme paneli (Update.sh, bölgeli akış): terminalde (en az 24 satır × 60 sütun) imza ve arşiv denetiminden sonra üstte sabit iki sütunlu özet (solda sürüm/imza/paket farkları, sağda ### Dikkat), altta kaydırma bölgesinde sürüm notları, "Kurulsun mu?" sorusu ve kurulum akar; bölge her çıkışta (iptal, hata, Ctrl-C dahil) sıfırlanır. Özet üst bölüme sığmazsa (çok paket) tamamı kaydırma bölgesinin başında düz yazılır, bilgi kaybolmaz. Terminal küçükse ya da çıktı terminal değilse bugünkü düz akış aynen sürer. Güvenlik sırası (indir → imza → arşiv denetimi → özet → onay → kur) değişmedi. Ortak UI: ui_region_begin2 artık sığmama durumunu UI_REGION_TRUNC ile bildirir.
  • Güncelleme özeti (Update.sh): imza ve arşiv denetimi geçtikten sonra, sürüm notlarından ve "Kurulsun mu?" sorusundan ÖNCE tek tablo gösterilir: sshpocket sürümü (eski → yeni), imza durumu, components.lock paket farkları (değişen / yeni / kilitten çıkan / değişmeyenlerin sayısı) ve yeni sürümün CHANGELOG'undaki ### Dikkat satırları. Salt gösterimdir, hiçbir şey yazmaz; güvenlik sırası (indir → imza → arşiv denetimi → özet) değişmedi. Sonraki adımlar: bölgeli akış, değişken farkı raporu.
  • Eski sunucular için ilk açılış sorusu: paket platform listesi bildiriyor (platform_choices + platform_var) ama sunucunun değerler dosyasında platform yazılı değilse, paket menüsü açılırken (etkileşimli) sunucu türü ve onboarding_vars (örn. allow_from) bir kez sorulur — sunucu eklerken sorulanla aynı akış. "Şimdi değil" hiçbir şey yazmaz ve soru sonraki girişte yine çıkar; allow_from boş kalırsa preview/apply her seferinde ⛔ kalır. Platform listesi olmayan paketlerde (eski sürümler) hiçbir şey sorulmaz. Dolu değerler ezilmez.
  • Platform apply_vars uygulaması: manifestte seçili platform (değerler dosyasında açıkça yazılı) apply_vars bildiriyorsa (örn. proxmox-host: hardening_pve_apply=true), değişken YALNIZCA değiştiren "önizle→uygula" eyleminde (type-server-name onaylı, changes-config etkili, yıkıcı olmayan, requires taşıyan: apply, pve_firewall_apply) o koşuya özel -e ile geçirilir. Paketin apply_warnings metni ve "bu koşuya özel" bilgisi sunucu adı onayından ÖNCE gösterilir; onay verilmezse hiçbir şey çalışmaz. Değerler dosyasına YAZILMAZ, dosyada zaten yazılı değer (false dahil) ve eylemin kendi set'i ezilmez; günlüğe bu koşuya özel: … satırı yazılır. audit, rollback_*, kaldir* ve preview etkilenmez; alan yoksa davranış değişmez. Riskli değer (warn_if) ise mevcut "yine de devam?" sorusu da çıkar.
  • linux-hardening 0.12.0 kilitlendi (components.lock): manifestte platform_choices (generic / proxmox-host / raspberry-pi), onboarding_vars, requires_vars (preview, apply, pve_firewall_preview, pve_firewall_apply için hardening_ssh_allow_from) ve apply_vars (proxmox-host: hardening_pve_apply=true) bildirilir; roller/playbook davranışı değişmedi. Gerçek paket manifesti sshpocket doğrulayıcısından geçti, boş allow_from ile 4 eylem ⛔ (audit/rollback_status açık), sunucu ekleme akışında platform sorusu gerçek manifestle çalıştı. Gerçek VM (Ubuntu + Proxmox) doğrulaması henüz yapılmadı (akşam yapılacak); apply_vars uygulaması ve eski sunucuların ilk açılış sorusu sonraki PR'larda.
  • Eylem düzeyi requires_vars (isteğe bağlı manifest alanı): bir eylem, listedeki değişken değerler dosyasında boş/yoksa ssh'a gitmeden "⛔ çalıştırılmadı: değeri boş değişken: …" ile reddedilir; menüde eylem kartında ⛔ ve "Boş: …" ipucu görünür. Yalnızca o eylemleri kapatır (audit, rollback_* etkilenmez); alan yoksa davranış değişmez. Amaç: erişim kısıtını (örn. hardening_ssh_allow_from) boş bırakıp kendini dışarıda bırakmayı önlemek.
  • Manifest: platform_choices / onboarding_vars okunur ve doğrulanır (sunucu eklerken platform seçimi için hazırlık; seçim ekranı ve apply_vars uygulaması sonraki PR'larda). Alan yoksa davranış değişmez; bozuksa paket kilide yazılmaz. Tasarım: docs/sunucu-ekleme-platform-secimi.md.
  • Sunucu eklerken platform ve allow_from sorusu: ModuleGenerator.sh (anahtar adımından sonra), kurulu ve manifestinde platform_choices olan her paket için sunucu türünü doğrudan sorar ("Bilmiyorum" = generic, "Şimdi değil" = hiçbir şey yazılmaz), seçilen platformun defaults değerlerini özetleyip onayla servers/<ad>/<paket>.vars'a yazar (dosyadaki değerler ezilmez) ve onboarding_vars için (örn. list[cidr] allow_from) mevcut CIDR editörünü açar; boş bırakılırsa değer yazılmaz ve ilgili eylemler ⛔ kalır. Manifest yoksa/alan yoksa hiçbir şey sorulmaz. apply_vars bu adımda YAZILMAZ (sonraki PR). Algılama (platform_detect) henüz yok; liste doğrudan sorulur. Yeni: Helpers/ComponentsOnboard.sh; platform_var= bilgi satırı.

Değişti

  • Çalışma paneli iki sütunlu (fzf eylem menüsü, eylem çalışırken): üst bölüm artık terminal genişliğinin tamamını kullanır: solda eylem özeti (ad, etkiler, onay, ön koşul), sağda son sonuç ve uyarılar; │ ayırıcı ve fzf'e benzer kenarlık etiketleri (Eylem, Son sonuç ve uyarılar). Üst bölümün yüksekliği içeriğe göre ayarlanır (en az 9 satır, en çok terminalin %40'ı), çıktı bölgesi altta tam genişlikte kalır; çıktı çerçevesinin başlığı canlı ilerlemeyi göstermeye devam eder. BECOME password: ve diğer istemler alt bölgede aynen çalışır. Terminal < 24 satır ya da < 60 sütunsa eski akış kullanılır. Çizim başlangıçtaki genişliğe göre yapılır; çalışırken terminal yeniden boyutlandırılırsa üst bölüm yeniden çizilmez. UI parçası: ui_region_begin2, ui_wrap_text (UI.sh).