"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)",
"outro":"Impostazioni predefinite globali da <code>jail.local</code>: <code>ignoreip = 127.0.0.1/8 ::1</code>, <code>ignoreself = true</code>,<code> bantime = 86400</code> (fallback di 24 ore per jails che non lo sovrascrivono), <code>maxretry = 2</code>, <code>findtime = 1800</code>."
},
"journald":{
"heading":"Perché la correzione journald è importante",
"intro":"Proxmox fornisce <code>/etc/systemd/journald.conf</code> con <codeNw>MaxLevelStore=warning</codeNw>. journald scarta i messaggi di livello <em>inferiore</em> a warning prima di salvarli. SSH e PAM segnalano gli errori di autenticazione ai livelli <em>info</em> / <em>notice</em>, 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 <codeXs>/etc/systemd/journald.conf.d/proxmenux-loglevel.conf</codeXs> aumentando sia <code>MaxLevelStore</code> che <code>MaxLevelSyslog</code> a <code>info</code>:",
"outro":"Poi riavvia <code>systemd-journald</code>. 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 (<code>backend = systemd</code>), ma su Proxmox questo backend ha problemi noti con i processi worker di <code>pvedaemon</code>: gli eventi di autenticazione compaiono nel journal ma non sempre vengono rilevati. Il problema riguarda occasionalmente anche <code>sshd</code>.",
"intro2":"ProxMenux crea due piccoli servizi systemd che seguono le unità interessate con <code>journalctl -f</code> e aggiungono ogni riga a un file. Fail2Ban legge questi file con il backend affidabile <code>backend = auto</code> (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 <code>PartOf=fail2ban.service</code> in modo da riavviare con Fail2Ban e fermarsi con esso. Modalità 640 di proprietà di <code>root:adm</code> sui file di registro. Il terzo registro utilizzato dalla prigione <code>[proxmenux]</code> (<code>/var/log/proxmenux-auth.log</code>) è 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 <code>nft list ruleset</code> funziona, sceglie <code>nftables</code> come l'azione di divieto. In caso contrario torna a <code>iptables-multiport</code> / <code>iptables-allports</code>. La scelta è scritta in <code>jail.local</code>:",
"intro":"Il controllo Lynis <strong>SSH-7408</strong> raccomanda <code>MaxAuthTries 3</code> in <code>sshd_config</code>. La jail SSH usa <code>maxretry = 2</code> 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 <code>MaxAuthTries</code> (o di default a 6 se assente).",
"Lo salva a <code>/usr/local/share/proxmenux/sshd_maxauthtries_backup</code>.",
"Modifica <code>sshd_config</code> direttamente: sostituisce la riga esistente, rimuove il commento dalla riga commentata o ne aggiunge una nuova.",
"Ricarica <code>sshd</code> senza riavviarlo, mantenendo attive le sessioni esistenti."
],
"outro":"Su disinstallazione, il valore originale salvato viene ripristinato e <code>sshd</code> 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."
"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 <code>tail -f /var/log/ssh-auth.log</code> riceva una voce dopo un tentativo SSH con password errata da un'altra macchina. Se rimane vuoto, controlla <code>systemctl status ssh-auth-logger.service</code>. Se il logger è attivo, consulta gli eventi recenti con <code>journalctl -u ssh.service -n 50 --no-pager -p info</code> e verifica che il drop-in journald consenta il livello <em>info</em>.",
"monitorEmptyTitle":"ProxMenux Monitor jail non ha voci anche dopo accessi non riusciti",
"monitorEmptyBody":"Il <code>[proxmenux]</code> jail legge <code>/var/log/proxmenux-auth.log</code>, 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 <code>/etc/apt/sources.list.d/debian.sources</code> con il nome giusto in codice (<code>bookworm</code> / <code>trixie</code>) prima di riprovare. Se non riesce ancora, controllare <code>/etc/os-release</code> per <code>VERSION_CODENAME</code> e confermare che l'URL repo è raggiungibile.",
"lockoutTitle":"SSH mi blocca dopo l'installazione",
"lockoutBody":"L'installatore imposta <code>MaxAuthTries=3</code>. Se il tuo password manager / agente richiama più chiavi, puoi superarlo su un singolo tentativo di connessione. Limitare le chiavi offerte: <code>ssh -o IdentitiesOnly=yes -i ~/.ssh/specific_key user@host</code>. O sollevare temporaneamente <code>MaxAuthTries</code> in <code>sshd_config</code> 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."