Come installare e configurare Fail2Ban su Linux

9 min di lettura - 14 maggio 2026

hero section cover
Indice
  • Come installare e configurare Fail2Ban su Linux
  • Prerequisiti
  • Installazione di Fail2Ban su Ubuntu/Debian
  • Configurazione delle prigioni
  • Test e monitoraggio
  • Configurazione avanzata
Condividi

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.log su sistemi basati su Debian, /var/log/secure su 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 fail2ban

Abilitare il servizio in modo che parta all'avvio, quindi avviarlo:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copiare 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.local

Verificare che tutto sia in funzione:

sudo systemctl status fail2ban
sudo fail2ban-client status

Il 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:

ParametroValore consigliatoCosa fa
bantime3600Blocca un IP per 1 ora
tempo di ricerca600Conta i guasti entro una finestra di 10 minuti
maxretryda 3 a 5Fallimenti prima che scatti il divieto
ignoraip127.0.0.1/8 ::1IP 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 = true

Controllare 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 status

Test 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 sshd

Osservare i divieti in tempo reale:

tail -f /var/log/fail2ban.log

Se si banna per sbaglio un IP legittimo, sbloccarlo:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Monitoraggio giorno per giorno

Esaminare la cronologia dei ban consultando il log:

grep "Ban\|Unban" /var/log/fail2ban.log

Comandi di gestione utili:

ComandoScopo
fail2ban-client statoElenca tutte le carceri attive
fail2ban-client bannedMostra tutti gli IP attualmente banditi
fail2ban-client set <carcere> unbanip <IP>Disabilita un IP specifico
fail2ban-client unban --allCancella 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-multiport

Riavviare 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)s

L'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.

background image
Il vostro server sta frenando la vostra crescita?

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

Blog

In primo piano questa settimana

Altri articoli
Lista di controllo per l'irrigidimento del server Linux

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

Altri articoli
background image

Avete domande o avete bisogno di una soluzione personalizzata?

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata

icon

Opzioni flessibili

icon

Portata globale

icon

Distribuzione immediata