Cos'è fail2ban
fail2ban è un servizio open source che monitora i file di log alla ricerca di pattern di attacco e blocca automaticamente gli IP responsabili tramite regole firewall (iptables, nftables, firewalld). È particolarmente efficace contro bruteforce SSH, FTP, SMTP, IMAP, POP3, e accessi web sospetti. La configurazione è basata su "jail" specifiche per servizio.
Architettura
fail2ban è composto da: fail2ban-server (daemon che monitora log), fail2ban-client (CLI per controllo), filtri (regex per identificare pattern attacco), azioni (cosa fare quando un pattern è trovato), jail (combinazione filtro+azione+log da monitorare). Tutti configurabili in /etc/fail2ban/.
Jail per Postfix
Postfix ha jail predefinite in /etc/fail2ban/jail.d/postfix.conf. Le principali sono: postfix (errori SMTP generici, autenticazione fallita), postfix-sasl (specifico per fallimenti SASL auth), postfix-rbl (per ban di chi è già in RBL). Attivare con enabled = true nella sezione jail.
Configurazione tipica
Esempio jail postfix-sasl: enabled = true\nport = smtp,submission,smtps\nfilter = postfix-sasl\nlogpath = /var/log/mail.log\nmaxretry = 5\nfindtime = 600\nbantime = 3600. Significato: 5 tentativi falliti in 600 secondi → ban di 3600 secondi (1 ora). Parametri vanno tarati su base traffico.
Filtri regex
I filtri sono regex Python definite in /etc/fail2ban/filter.d/*.conf. Esempio per postfix-sasl: failregex = ^.+ postfix/smtpd.+: warning: .+\[<HOST>\]: SASL .+ authentication failed. La macro <HOST> identifica l'IP da bannare. È possibile customizzare filtri per pattern specifici dell'ambiente.
Azioni di ban
fail2ban supporta diverse azioni: iptables-multiport (blocco iptables sulle porte del servizio), nftables-multiport (equivalente nftables), firewalld-cmd (firewalld su CentOS/RHEL), cloudflare (ban a livello CDN tramite API), route (null route). Tipicamente si usa iptables/nftables per ban locali.
Persistenza ban
I ban di default vengono persi al restart del servizio. Per persistenza usare recidive jail che monitora log fail2ban stesso e applica ban lunghi (es. 1 settimana) a IP che vengono bannati ripetutamente. Database SQLite in /var/lib/fail2ban/fail2ban.sqlite3 traccia storia ban e permette ripristino al restart.
Monitoring e gestione
Comandi utili: fail2ban-client status (jail attive), fail2ban-client status postfix-sasl (dettaglio jail), fail2ban-client set postfix-sasl unbanip 1.2.3.4 (sblocco manuale), fail2ban-client banned (lista IP bannati). Log in /var/log/fail2ban.log mostra eventi. Integrabile con sistemi di alerting (Slack, email, Telegram).
Hai bisogno di aiuto?
Se hai problemi di blacklist o deliverability email, il team di G Tech Group può aiutarti. Contattaci tramite il modulo di contatto.