{
"meta": {
"title": "Fail2Ban | Documentazione ProxMenux",
"description": "Installa Fail2Ban con tre jails ottimizzati per Proxmox (SSH aggressivo, Proxmox UI 8006, ProxMenux Monitor 8008). Include la correzione journald MaxLevelStore, servizi di registro personalizzati per l'affidabilità, backend nftables/iptables rilevati automaticamente e SSH MaxAuthTries rafforzamento.",
"ogTitle": "Fail2Ban | Documentazione ProxMenux",
"ogDescription": "Protezione contro la forza bruta per SSH e le interfacce web Proxmox, con correzioni di journald e del backend specifiche per Proxmox."
},
"header": {
"title": "Fail2Ban",
"description": "Installa Fail2Ban per Proxmox: tre jail (SSH aggressivo, interfaccia Proxmox su 8006, ProxMenux Monitor su 8008 e proxy inverso), correzione del livello journald per salvare gli eventi SSH, due servizi che copiano il journal in file per aggirare un problema del backend systemd, rilevamento del backend firewall e rafforzamento SSH con MaxAuthTries.",
"section": "Sicurezza"
},
"intro": {
"title": "Cosa fa",
"body": "Installa Fail2Ban dai repository Debian e scrive una configurazione Proxmox che protegge subito SSH, interfaccia web Proxmox e ProxMenux Monitor. Se rileva una installazione esistente, offre invece un menu per reinstallare o rimuovere."
},
"firstLaunch": {
"heading": "dialogo di primo lancio",
"body": "Se Fail2Ban non è installato, lo script mostra una conferma con ciò che installerà e configurerà. Annulla termina senza modifiche; confermare avvia l'installazione.",
"imageAlt": "Conferma di installazione di Fail2Ban con tre jail, correzione di journald e rafforzamento SSH"
},
"jails": {
"heading": "Le tre jail",
"headerJail": "Jail",
"headerProtects": "Protegge",
"headerRetries": "Tentativi / Finestra",
"headerBan": "Durata del blocco",
"rows": [
{
"jail": "[sshd]",
"protects": "SSH (modalità aggressive — include ddos, mode, normal)",
"retries": "2 / 60 min",
"ban": "9 ore"
},
{
"jail": "[proxmox]",
"protects": "Proxmox web UI (porta 8006)",
"retries": "3 / 10 min",
"ban": "1 ora"
},
{
"jail": "[proxmenux]",
"protects": "ProxMenux Monitor (porta 8008 + proxy inverso http/https)",
"retries": "3 / 10 min",
"ban": "1 ora"
}
],
"outro": "Impostazioni predefinite globali da jail.local: ignoreip = 127.0.0.1/8 ::1, ignoreself = true, bantime = 86400 (fallback di 24 ore per jails che non lo sovrascrivono), maxretry = 2, findtime = 1800."
},
"journald": {
"heading": "Perché la correzione journald è importante",
"intro": "Proxmox fornisce /etc/systemd/journald.conf con MaxLevelStore=warning. journald scarta i messaggi di livello inferiore a warning prima di salvarli. SSH e PAM segnalano gli errori di autenticazione ai livelli info / notice, quindi:",
"diagram": {
"sshLabel": "SSH / PAM",
"sshDetail": "errore di autenticazione\n(livello info / notice)",
"journaldLabel": "journald",
"journaldDetail": "MaxLevelStore=warning\n→ evento scartato senza avviso",
"fail2banLabel": "Fail2Ban",
"fail2banDetail": "non vede niente\n→ non vieta mai nulla",
"arrowLabel": "Proxmox predefinito"
},
"afterDiagram": "L'installatore rileva questo e scrive un drop-in a /etc/systemd/journald.conf.d/proxmenux-loglevel.conf aumentando sia MaxLevelStore che MaxLevelSyslog a info:",
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
"outro": "Poi riavvia systemd-journald. Il drop-in viene rimosso su disinstallazione, ripristinando il default Proxmox originale."
},
"loggers": {
"heading": "Perché due servizi logger personalizzati",
"intro1": "Fail2Ban può leggere direttamente il journal systemd (backend = systemd), ma su Proxmox questo backend ha problemi noti con i processi worker di pvedaemon: gli eventi di autenticazione compaiono nel journal ma non sempre vengono rilevati. Il problema riguarda occasionalmente anche sshd.",
"intro2": "ProxMenux crea due piccoli servizi systemd che seguono le unità interessate con journalctl -f e aggiungono ogni riga a un file. Fail2Ban legge questi file con il backend affidabile backend = auto (modalità file):",
"headerService": "Servizio",
"headerSource": "Unità di origine",
"headerOutput": "File di uscita",
"rows": [
{
"service": "proxmox-auth-logger.service",
"source": "pvedaemon.service",
"output": "/var/log/proxmox-auth.log"
},
{
"service": "ssh-auth-logger.service",
"source": "ssh.service",
"output": "/var/log/ssh-auth.log"
}
],
"outro": "Entrambi i servizi sono dichiarati PartOf=fail2ban.service in modo da riavviare con Fail2Ban e fermarsi con esso. Modalità 640 di proprietà di root:adm sui file di registro. Il terzo registro utilizzato dalla prigione [proxmenux] (/var/log/proxmenux-auth.log) è scritto direttamente dall'app ProxMenux Monitor Flask — nessun servizio logger necessario per questo."
},
"backend": {
"heading": "Auto-detezione backend Firewall",
"intro": "L'installatore sonda l'host: se nft list ruleset funziona, sceglie nftables come l'azione di divieto. In caso contrario torna a iptables-multiport / iptables-allports. La scelta è scritta in jail.local:",
"code": "# nftables host\nbanaction = nftables\nbanaction_allports = nftables[type=allports]\n\n# iptables host (fallback)\nbanaction = iptables-multiport\nbanaction_allports = iptables-allports"
},
"hardening": {
"heading": "Rafforzamento SSH: MaxAuthTries",
"intro": "Il controllo Lynis SSH-7408 raccomanda MaxAuthTries 3 in sshd_config. La jail SSH usa maxretry = 2 per bloccare dopo errori ripetuti; MaxAuthTries limita i tentativi nella stessa connessione. Questa impostazione aggiunge protezione anche quando Fail2Ban è fermo per manutenzione.",
"installerIntro": "L'installatore:",
"items": [
"Legge il valore attuale di MaxAuthTries (o di default a 6 se assente).",
"Lo salva a /usr/local/share/proxmenux/sshd_maxauthtries_backup.",
"Modifica sshd_config direttamente: sostituisce la riga esistente, rimuove il commento dalla riga commentata o ne aggiunge una nuova.",
"Ricarica sshd senza riavviarlo, mantenendo attive le sessioni esistenti."
],
"outro": "Su disinstallazione, il valore originale salvato viene ripristinato e sshd viene ricaricato di nuovo."
},
"manage": {
"heading": "Gestire un'installazione esistente",
"intro": "Se Fail2Ban è già installato, lo script lo rileva e mostra un menu di gestione invece di ripetere l'installazione.",
"headerAction": "Azione",
"headerWhat": "Che cosa fa",
"rows": [
{
"action": "Reinstallare",
"what": "Esegue nuovamente l'installazione completa e riscrive tutte le jail con i valori attuali di ProxMenux. Usalo quando un aggiornamento modifica le raccomandazioni."
},
{
"action": "Rimuovi",
"what": "Arresta fail2ban e i due servizi di logger, elimina il pacchetto apt, rimuove tutti i jail / file filtro, elimina il drop-in journald (ripristinando le impostazioni predefinite di Proxmox) e ripristina il SSH originale MaxAuthTries."
}
]
},
"verify": {
"heading": "Verifica che funzioni.",
"intro": "Dopo l'installazione, comandi utili dall'host:",
"code": "# Service status and version\nsystemctl status fail2ban\nfail2ban-client --version\n\n# All active jails\nfail2ban-client status\n\n# Detail on one jail\nfail2ban-client status sshd\nfail2ban-client status proxmox\nfail2ban-client status proxmenux\n\n# Currently banned IPs in a jail\nfail2ban-client status sshd | grep \"Banned IP\"\n\n# Manually unban an IP (use this if you ban yourself)\nfail2ban-client unban 192.0.2.10\n\n# Tail the auth logs Fail2Ban watches\ntail -f /var/log/ssh-auth.log\ntail -f /var/log/proxmox-auth.log\ntail -f /var/log/fail2ban.log"
},
"troubleshoot": {
"heading": "Risoluzione dei problemi",
"neverBansTitle": "Fail2Ban corre ma non vieta mai nulla",
"neverBansBody": "Verifica che tail -f /var/log/ssh-auth.log riceva una voce dopo un tentativo SSH con password errata da un'altra macchina. Se rimane vuoto, controlla systemctl status ssh-auth-logger.service. Se il logger è attivo, consulta gli eventi recenti con journalctl -u ssh.service -n 50 --no-pager -p info e verifica che il drop-in journald consenta il livello info.",
"monitorEmptyTitle": "ProxMenux Monitor jail non ha voci anche dopo accessi non riusciti",
"monitorEmptyBody": "Il [proxmenux] jail legge /var/log/proxmenux-auth.log, che è scritto dall'app ProxMenux Monitor Flask - non da un logger journald. Se non esegui il Monitor, il file rimane vuoto e il jail non si attiva mai. Questo è previsto; la configurazione jail è innocua. Se esegui il Monitor e il registro è vuoto, controlla la configurazione di registrazione Flask.",
"selfBanTitle": "Ho bloccato il mio stesso accesso",
"selfBanIntro": "Da una console / IPMI / iKVM (o da un altro IP whitelist):",
"selfBanCode": "fail2ban-client unban '<'YOUR_IP'>'\n\n# To prevent it next time, edit /etc/fail2ban/jail.local and add your IP:\nignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 203.0.113.42\n\n# Then reload\nfail2ban-client reload",
"aptFailTitle": "apt-get non riesce: ''Unable to locate package fail2ban''",
"aptFailBody": "L'host manca il repos Debian (comune sulle installazioni di Barebones Proxmox). L'installatore rileva questo e scrive /etc/apt/sources.list.d/debian.sources con il nome giusto in codice (bookworm / trixie) prima di riprovare. Se non riesce ancora, controllare /etc/os-release per VERSION_CODENAME e confermare che l'URL repo è raggiungibile.",
"lockoutTitle": "SSH mi blocca dopo l'installazione",
"lockoutBody": "L'installatore imposta MaxAuthTries=3. Se il tuo password manager / agente richiama più chiavi, puoi superarlo su un singolo tentativo di connessione. Limitare le chiavi offerte: ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host. O sollevare temporaneamente MaxAuthTries in sshd_config mentre si debug."
},
"files": {
"heading": "File scritti",
"code": "/etc/fail2ban/jail.local # global defaults + [sshd]\n/etc/fail2ban/jail.d/proxmox.conf # [proxmox]\n/etc/fail2ban/jail.d/proxmenux.conf # [proxmenux]\n/etc/fail2ban/filter.d/proxmox.conf # auth-failure regex for pvedaemon\n/etc/fail2ban/filter.d/proxmenux.conf # auth-failure regex for Monitor\n/etc/systemd/system/proxmox-auth-logger.service # journal → file (pvedaemon)\n/etc/systemd/system/ssh-auth-logger.service # journal → file (sshd)\n/etc/systemd/journald.conf.d/proxmenux-loglevel.conf # MaxLevelStore=info\n/etc/ssh/sshd_config # MaxAuthTries=3 (in-place edit)\n/var/log/proxmox-auth.log # written by logger service\n/var/log/ssh-auth.log # written by logger service\n/var/log/proxmenux-auth.log # written by Monitor Flask app\n/usr/local/share/proxmenux/sshd_maxauthtries_backup # for restore on uninstall"
},
"related": {
"heading": "Correlati",
"monitorLabel": "ProxMenux Monitor → Scheda di sicurezza",
"monitorTail": " — installazione dal pannello, stato delle jail in tempo reale, IP bloccati e regolazione di tentativi e durata del blocco per ogni jail dal browser.",
"lynisLabel": "Lynis",
"lynisTail": " — esegui un audit prima e dopo per verificare che il controllo SSH-7408 sia soddisfatto.",
"securityLabel": "Panoramica della sicurezza",
"securityTail": "— di nuovo alla panoramica della sezione."
}
}