Come installare e configurare Fail2Ban su Linux
9 min di lettura - 14 maggio 2026

Guida passo-passo all'installazione, alla configurazione e al test di Fail2Ban su server Linux basati su Ubuntu, Debian e RHEL.
Come installare e configurare Fail2Ban su Linux
Fail2Ban monitora i log del server alla ricerca di attività sospette e vieta automaticamente gli IP incriminati aggiornando le regole del firewall. Blocca gli attacchi brute-force, riduce il rumore dei log e, una volta configurato, funziona silenziosamente in background. Questa guida copre l'installazione su Ubuntu/Debian, la configurazione del nucleo, la configurazione del jail e alcune opzioni avanzate che vale la pena conoscere.
Prerequisiti
Fail2Ban funziona sulla maggior parte delle distribuzioni Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux e Fedora. Sono necessari:
- Python 3 installato sul sistema
- Accesso root o sudo per l'installazione dei pacchetti e le modifiche al firewall
- Un firewall attivo (iptables, nftables, ufw o firewalld)
- File di log che catturino i tentativi di login falliti
(/var/log/auth.logsu sistemi basati su Debian,/var/log/securesu sistemi basati su RHEL)
Sui sistemi basati su RHEL, abilitare prima il repository EPEL. Prima di installare Fail2Ban, verificare che il firewall sia in funzione con ufw status o systemctl status firewalld.
Installazione di Fail2Ban su Ubuntu/Debian
Aggiornate i pacchetti e installate Fail2Ban:
sudo apt update && sudo apt upgrade -y
sudo apt install fail2banAbilitare il servizio in modo che parta all'avvio, quindi avviarlo:
sudo systemctl enable fail2ban
sudo systemctl start fail2banCopiare la configurazione predefinita in un file di sovrascrittura locale. Modificare sempre jail.local, non jail.conf, per evitare che gli aggiornamenti dei pacchetti sovrascrivano le impostazioni:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localVerificare che tutto sia in funzione:
sudo systemctl status fail2ban
sudo fail2ban-client statusIl primo comando dovrebbe mostrare "Active: active (running)". Il secondo elenca le jail attive. Confermare che Fail2Ban è abilitato all'avvio con sudo systemctl is-enabled fail2ban.
Configurazione delle prigioni
Impostazioni predefinite
Aprite /etc/fail2ban/jail.local e modificate la sezione [DEFAULT]. Queste impostazioni si applicano a tutte le jail, a meno che non vengano sovrascritte:
| Parametro | Valore consigliato | Cosa fa |
|---|---|---|
bantime | 3600 | Blocca un IP per 1 ora |
tempo di ricerca | 600 | Conta i guasti entro una finestra di 10 minuti |
maxretry | da 3 a 5 | Fallimenti prima che scatti il divieto |
ignoraip | 127.0.0.1/8 ::1 | IP che non vengono mai bannati |
Aggiungere il proprio IP di gestione a ignoreip per non bloccarsi. Esempio: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.
Protezione SSH
Abilitare la prigione SSH in jail.local:
[sshd]
enabled = trueControllare che logpath punti al file di log corretto per la propria distro. Se SSH è stato spostato su una porta non standard (ad esempio, 2222), aggiornare il parametro della porta per adattarlo.
Protezione del server web
Abilitare il jail corrispondente al proprio server web:
- Nginx:
[nginx-http-auth]per i fallimenti dell'autenticazione,[nginx-botsearch]per i bot maligni - Apache:
[apache-auth]per l'autenticazione,[apache-badbots]per i bot
Prigione recessiva
La prigione [recidive] cattura gli IP che continuano a essere bannati in altre prigioni e applica una sanzione più lunga, in genere una settimana (604.800 secondi). È utile per gli attaccanti persistenti che ruotano il loro approccio.
Dopo aver apportato le modifiche, ricaricare:
sudo systemctl restart fail2ban
sudo fail2ban-client statusTest e monitoraggio
Verifica dei divieti
Prima di affidarsi a Fail2Ban in produzione, testatelo. Da un computer remoto (non dal vostro IP di amministrazione), tentate di accedere a SSH fino a superare il numero massimo di tentativi. Dovreste essere bloccati. Confermare con:
sudo fail2ban-client status sshdOsservare i divieti in tempo reale:
tail -f /var/log/fail2ban.logSe si banna per sbaglio un IP legittimo, sbloccarlo:
sudo fail2ban-client set sshd unbanip 203.0.113.50Monitoraggio giorno per giorno
Esaminare la cronologia dei ban consultando il log:
grep "Ban\|Unban" /var/log/fail2ban.logComandi di gestione utili:
| Comando | Scopo |
|---|---|
fail2ban-client stato | Elenca tutte le carceri attive |
fail2ban-client banned | Mostra tutti gli IP attualmente banditi |
fail2ban-client set <carcere> unbanip <IP> | Disabilita un IP specifico |
fail2ban-client unban --all | Cancella tutti i divieti |
fail2ban-client imposta <jail> banip <IP> | Bandisce manualmente un IP |
I ban persistono attraverso i riavvii. Fail2Ban li memorizza in un database SQLite in /var/lib/fail2ban/fail2ban.sqlite3.
Configurazione avanzata
Passare a nftables
nftables è il sostituto moderno di iptables. Gestisce IPv4 e IPv6 in un unico framework, si adatta meglio a liste di divieto di grandi dimensioni e ha una limitazione di velocità integrata. Se si utilizza Ubuntu 22.04+, Debian 11+ o qualsiasi altra distro recente, è la scelta migliore.
Impostatelo in jail.local:
[DEFAULT]
banaction = nftables-multiportRiavviare Fail2Ban, quindi verificare con sudo nft list ruleset. Dovreste vedere f2b-table e f2b-chain nell'output. Rimanete su iptables solo se avete un sistema vecchio o se avete esigenze di compatibilità.
Notifiche via e-mail
Per impostazione predefinita, Fail2Ban vieta in modo silenzioso. Per ricevere avvisi via e-mail, aggiungete quanto segue alla sezione [DEFAULT] di jail.local:
[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)sL'azione action_mwl invia un'e-mail con i dettagli dell'interdizione, i dati WHOIS e le righe di log che hanno innescato l'interdizione. Usate action_mw se volete solo i dati WHOIS. È necessario installare un agente di trasferimento della posta come sendmail o un relay SMTP configurato con qualcosa come msmtp.
Per gli avvisi di Slack o Discord, creare uno script che invii un webhook e collegarlo a un file di azione personalizzato in /etc/fail2ban/action.d/.
Se state cercando un server con accesso root completo e larghezza di banda non misurata per eseguire Fail2Ban, date un'occhiata ai server dedicati di FDC.

Stanchi di implementazioni lente o di limiti di larghezza di banda? FDC Servers offre potenza dedicata istantanea, portata globale e piani flessibili costruiti per qualsiasi scala. Pronti per l'aggiornamento?
Sbloccate le prestazioni ora
Lista di controllo per l'irrigidimento del server Linux
Lista di controllo passo-passo per rendere più sicuro un server Linux. Copre SSH, firewall, patch, permessi dei file, SELinux/AppArmor e registrazione degli audit
15 min di lettura - 8 maggio 2026
tutorial iperf3: Test della velocità di rete su Linux e Windows
10 min di lettura - 7 maggio 2026

Avete domande o avete bisogno di una soluzione personalizzata?
Opzioni flessibili
Portata globale
Distribuzione immediata
Opzioni flessibili
Portata globale
Distribuzione immediata