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 Jails
  • 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 blocca automaticamente gli IP dannosi aggiornando le regole del firewall. Blocca gli attacchi di forza bruta, riduce il rumore dei log e, una volta configurato, funziona silenziosamente in background. Questa guida illustra l'installazione su Ubuntu/Debian, la configurazione di base, l'impostazione della 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. Avrai bisogno di:

  • Python 3 installato sul sistema
  • Accesso come root o tramite sudo per l'installazione dei pacchetti e le modifiche al firewall
  • Un firewall attivo (iptables, nftables, ufw o firewalld)
  • File di log che registrano i tentativi di accesso falliti (/var/log/auth.log sui sistemi basati su Debian, /var/log/secure su sistemi basati su RHEL)

Su sistemi basati su RHEL, abilita prima il repository EPEL. Prima di installare Fail2Ban, verifica che il tuo firewall sia in esecuzione con ufw status o systemctl status firewalld.

Installazione di Fail2Ban su Ubuntu/Debian

Aggiorna i pacchetti e installa Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Abilita il servizio in modo che si avvii all'avvio del sistema, quindi avvialo:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copia la configurazione predefinita in un file di override locale. Modifica sempre jail.local, non jail.conf, in modo che gli aggiornamenti dei pacchetti non sovrascrivano le tue impostazioni:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Verifica che tutto funzioni:

sudo systemctl status fail2ban
sudo fail2ban-client status

Il primo comando dovrebbe mostrare "Active: active (running)". Il secondo elenca le tue jail attive. Conferma che Fail2Ban sia abilitato all'avvio con sudo systemctl is-enabled fail2ban.

Configurazione delle Jails

Impostazioni predefinite

Aprire /etc/fail2ban/jail.local e modifica la [DEFAULT] . Queste impostazioni si applicano a tutte le jail a meno che non vengano sovrascritte:

ParametroValore consigliatoCosa fa
bantime3600Blocca un IP per 1 ora
findtime600Conta gli errori in un intervallo di 10 minuti
maxretry3 fino a 5fallimenti prima che scatti il ban
ignoreip127.0.0.1/8 ::1IP che non vengono mai bloccati

Aggiungi il tuo IP di gestione a ignoreip in modo da non rimanere bloccati fuori. Esempio: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Protezione SSH

Abilita la jail SSH in jail.local:

[sshd]
enabled = true

Verifica che logpath punti al file di log corretto per la tua distribuzione. Se hai spostato SSH su una porta non standard (ad es. 2222), aggiorna il port parametro di conseguenza.

Protezione del server web

Abilita il jail corrispondente al tuo server web:

  • Nginx: [nginx-http-auth] in caso di errori di autenticazione, [nginx-botsearch] per i bot dannosi
  • Apache: [apache-auth] per l'autenticazione, [apache-badbots] per i bot

Recidive Jail

Il [recidive] jail intercetta gli IP che continuano a essere bannati in altre jail e applica una penalità più lunga, in genere una settimana (604.800 secondi). È utile per gli aggressori persistenti che cambiano continuamente approccio.

Dopo aver apportato le modifiche, ricaricare:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Test e monitoraggio

Test dei blocchi

Prima di affidarti a Fail2Ban in produzione, testalo. Da una macchina remota (non il tuo IP di amministratore), prova ad effettuare accessi SSH fino a superare maxretry. Dovreste essere bloccati. Verificate con:

sudo fail2ban-client status sshd

Guarda i ban in tempo reale:

tail -f /var/log/fail2ban.log

Se si blocca accidentalmente un IP legittimo, sbloccarlo:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Monitoraggio quotidiano

Esamina la cronologia dei ban cercando nel log:

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

Comandi di gestione utili:

ComandoScopo
fail2ban-client statusElenca tutte le carceri attive
fail2ban-client bannedMostra tutti gli IP attualmente bannati
fail2ban-client set <jail> unbanip <IP>Rimuovere il ban da un IP specifico
fail2ban-client unban --allCancella tutti i ban
fail2ban-client set <jail> banip <IP>Bloccare manualmente un IP

I ban permangono anche dopo il riavvio. Fail2Ban li memorizza in un database SQLite in /var/lib/fail2ban/fail2ban.sqlite3.

Configurazione avanzata

Passaggio a nftables

nftables è il moderno sostituto di iptables. Gestisce IPv4 e IPv6 in un unico framework, si adatta meglio a liste di ban di grandi dimensioni e dispone di limitazione di velocità integrata. Se utilizzi Ubuntu 22.04+, Debian 11+ o qualsiasi distribuzione recente, è la scelta migliore.

Impostalo in jail.local:

[DEFAULT]
banaction = nftables-multiport

Riavvia Fail2Ban, quindi verifica con sudo nft list ruleset. Dovresti vedere f2b-table e f2b-chain nell'output. Continua a utilizzare solo iptables se utilizzi un sistema più vecchio o hai requisiti di compatibilità.

Notifiche via e-mail

Per impostazione predefinita, Fail2Ban blocca gli utenti in modo silenzioso. Per ricevere avvisi via email, aggiungi quanto segue alla [DEFAULT] sezione jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

L' action_mwl invia un'e-mail con i dettagli del ban, i dati WHOIS e le righe di log che hanno innescato il ban. Usa action_mw se desideri solo i dati WHOIS. Avrai bisogno di un mail transfer agent come sendmail installato, oppure di un relay SMTP configurato tramite qualcosa come msmtp.

Per gli avvisi su Slack o Discord, crea uno script che invii un webhook e collegalo tramite un file di azione personalizzato in /etc/fail2ban/action.d/.

Se stai cercando un server con pieno accesso root e larghezza di banda illimitata per eseguire Fail2Ban, dai 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
Guida alla configurazione di Prometheus e node_exporter

Guida alla configurazione di Prometheus e node_exporter

Installare Prometheus e node_exporter, configurare i target di scrape, impostare i servizi systemd e proteggere lo stack di monitoraggio. Passo dopo passo per Linux.

15 min di lettura - 29 maggio 2026

XDP e eBPF per l'elaborazione dei pacchetti Linux

14 min di lettura - 27 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