mirror of
https://github.com/MacRimi/ProxMenux.git
synced 2026-11-01 10:22:08 +00:00
153 lines
12 KiB
JSON
153 lines
12 KiB
JSON
{
|
|
"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 <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>:",
|
|
"code": "[Journal]\nMaxLevelStore=info\nMaxLevelSyslog=info",
|
|
"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>:",
|
|
"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 <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."
|
|
}
|
|
]
|
|
},
|
|
"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 <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."
|
|
}
|
|
}
|