'nicht installiert', 'label_ssh_root' => 'SSH-Root-Login', 'label_ssh_password' => 'SSH-Passwort-Login', 'label_auto_updates' => 'Automatische Updates', // ── HardeningService: modal titles (per direction) ─────────────────── 'title_ssh_root_enable' => 'SSH-Root-Login erlauben', 'title_ssh_root_disable' => 'SSH-Root-Login deaktivieren', 'title_ssh_password_enable' => 'SSH-Passwort-Login erlauben', 'title_ssh_password_disable' => 'SSH-Passwort-Login deaktivieren', 'title_fail2ban_enable' => 'fail2ban aktivieren', 'title_fail2ban_disable' => 'fail2ban deaktivieren', 'title_firewall_enable' => 'Firewall aktivieren', 'title_firewall_disable' => 'Firewall deaktivieren', 'title_unattended_enable' => 'Automatische Updates aktivieren', 'title_unattended_disable' => 'Automatische Updates deaktivieren', // ── HardeningService: modal descriptions (per direction) ───────────── 'desc_ssh_root_enable' => 'Erlaubt direkten Root-Login über SSH wieder (PermitRootLogin yes) und lädt den SSH-Dienst neu.', 'desc_ssh_root_disable' => 'Unterbindet direkten Root-Login über SSH (PermitRootLogin no) und lädt den SSH-Dienst neu.', 'desc_ssh_password_enable' => 'Erlaubt die Anmeldung per Passwort wieder (PasswordAuthentication yes).', 'desc_ssh_password_disable' => 'Anmeldung nur noch per SSH-Key (PasswordAuthentication no). Nur möglich, wenn ein Key hinterlegt ist.', 'desc_fail2ban_enable' => 'Installiert fail2ban (falls nötig) und startet den Dienst. Wiederholte Fehl-Logins werden gesperrt.', 'desc_fail2ban_disable' => 'Stoppt fail2ban und deaktiviert den Autostart.', 'desc_firewall_enable' => 'Installiert die Firewall (falls nötig), gibt vorher SSH + 80/443 frei und aktiviert sie.', 'desc_firewall_disable' => 'Deaktiviert die Firewall des Servers.', 'desc_unattended_enable' => 'Installiert (falls nötig) und aktiviert die automatischen Sicherheitsupdates des Systems.', 'desc_unattended_disable' => 'Schaltet die automatischen Updates ab.', // ── HardeningService: errors + guards ──────────────────────────────── 'hardening_status_read_failed' => 'Härtungs-Status konnte nicht gelesen werden.', 'ssh_probe_no_exec' => 'SSH-Anmeldung erfolgreich, aber es lassen sich keine Befehle ausführen.', 'ssh_password_self_lockout' => 'Clusev verbindet sich selbst per Passwort — Passwort-Login kann nicht deaktiviert werden, sonst verliert Clusev den Zugang. Hinterlege zuerst einen SSH-Key-Zugang.', 'ssh_password_no_key' => 'Kein SSH-Key hinterlegt — Passwort-Login kann nicht deaktiviert werden (Aussperrgefahr).', // ── FirewallService: guards / reasons / errors ─────────────────────── 'firewalld_read_only' => 'Regelverwaltung für firewalld ist in dieser Version nur lesend — bitte am Server konfigurieren.', 'invalid_port' => 'Ungültiger Port (1–65535).', 'invalid_source' => 'Ungültige Quelle — IP-Adresse oder CIDR erwartet.', 'port_or_source_required' => 'Port oder Quelle ist erforderlich.', 'deny_without_port_blocks_ssh' => 'Eine :action-Regel ohne Port würde auch den SSH-Zugang blockieren und ist nicht erlaubt. Nutze fail2ban, um einzelne IPs vom SSH-Zugang auszusperren.', 'deny_on_ssh_port_blocks_ssh' => 'Eine :action-Regel auf den SSH-Port (:port) ist nicht erlaubt (Aussperrgefahr). Nutze fail2ban, um einzelne IPs vom SSH-Zugang auszusperren.', 'firewalld_port_required' => 'firewalld: Bitte einen Port angeben.', 'firewall_status_read_failed' => 'Firewall-Status konnte nicht gelesen werden — Regel nicht entfernt.', 'rule_gone' => 'Regel existiert nicht mehr.', 'ssh_rule_guard' => 'Diese Regel hält den SSH-Zugang (Port :port) offen und kann nicht entfernt werden — sonst sperrt sich Clusev selbst aus. Deaktiviere bei Bedarf die gesamte Firewall.', // ── Fail2banService: guards / reasons / errors ─────────────────────── 'ip_belongs_to_clusev' => 'Diese IP gehört zum Clusev-Zugang und kann nicht gesperrt werden (Aussperrgefahr).', 'already_whitelisted' => 'Bereits auf der Whitelist.', 'not_on_whitelist' => 'Nicht auf der Whitelist.', 'loopback_stays_whitelisted' => 'Loopback bleibt immer auf der Whitelist.', 'invalid_input' => 'Ungültige Eingabe.', 'invalid_ip_or_cidr' => 'Ungültige IP-Adresse oder CIDR.', 'fail2ban_config_read_failed' => 'fail2ban-Konfiguration konnte nicht gelesen werden.', // ── OsProfile: family labels ───────────────────────────────────────── 'family_debian' => 'Debian/Ubuntu', 'family_rhel' => 'RHEL/Fedora', 'family_suse' => 'openSUSE/SLES', 'family_arch' => 'Arch Linux', 'family_alpine' => 'Alpine Linux', 'family_unknown' => 'Unbekanntes System', // ── OsProfile: firewall labels ─────────────────────────────────────── 'firewall_label_ufw' => 'Firewall (UFW)', 'firewall_label_firewalld' => 'Firewall (firewalld)', 'firewall_label_generic' => 'Firewall', // ── OsProfile: supports() reasons (:family = familyLabel()) ────────── 'support_ssh' => 'SSH-Härtung benötigt systemd, das auf :family nicht erkannt wurde.', 'support_services' => 'Dienst-Steuerung benötigt systemd, das hier nicht erkannt wurde.', 'support_updates' => 'Paket-Updates über Clusev werden unter :family noch nicht unterstützt.', 'support_fail2ban' => 'fail2ban wird unter :family über Clusev noch nicht unterstützt.', 'support_firewall' => 'Eine unterstützte Firewall (UFW oder firewalld) wurde unter :family nicht gefunden.', 'support_auto_updates' => 'Automatische Updates werden unter :family über Clusev noch nicht unterstützt.', // ── FleetService: SFTP / file-manager / journal errors ─────────────── 'authorized_keys_unreadable' => 'authorized_keys leer oder nicht lesbar.', 'delete_failed_perms' => 'Löschen fehlgeschlagen (Rechte?).', 'file_too_large_download' => 'Datei zu groß für den Download (>50 MB).', 'save_failed_perms' => 'Speichern fehlgeschlagen (Rechte?).', 'upload_failed_perms' => 'Upload fehlgeschlagen (Rechte?).', 'journal_needs_privileges' => 'Systemjournal benötigt erhöhte Rechte (Gruppe adm/systemd-journal) oder sudo.', // ── CredentialVault: SSH credential guards (:server = name) ────────── 'no_ssh_credential' => 'Kein SSH-Credential für Server :server hinterlegt.', 'ssh_access_locked' => 'SSH-Zugang für :server ist gesperrt.', // ── HardeningService: invalid action invariant (:action) ───────────── 'unknown_hardening' => 'Unbekannte Härtung: :action', // ── SshKeyProvisioner ───────────────────────────────────────────────── 'ssh_key_verify_failed' => 'Key-Login konnte nicht bestätigt werden (:error) — Passwort-Login bleibt aktiv.', ];