Installare e configurare Fail2ban

Come proteggere il tuo server SSH dagli attacchi brute-force con Fail2ban.

Fail2ban è un daemon che monitora i file di log e blocca automaticamente gli indirizzi IP con comportamento sospetto — troppi tentativi di accesso falliti, scansioni di porte e pattern simili. È uno dei metodi più semplici ed efficaci per proteggere il tuo server SSH dagli attacchi brute-force.

Installazione

Ubuntu / Debian:

apt-get install fail2ban

CentOS:

yum install fail2ban

Struttura della configurazione

Fail2ban ha due file di configurazione principali:

  • /etc/fail2ban/fail2ban.conf — controlla come il processo Fail2ban si avvia e funziona
  • /etc/fail2ban/jail.conf — definisce le regole di protezione per servizi specifici, incluso SSH

Il file jail.conf è suddiviso in sezioni chiamate jail — ognuna punta a un servizio specifico e a un tipo di attacco:

[DEFAULT]
ignoreip = 127.0.0.1/8
bantime  = 600
maxretry = 3
banaction = iptables-multiport

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 6

Le impostazioni nella sezione [DEFAULT] si applicano a tutte le jail, a meno che non vengano esplicitamente sovrascritte in una sezione specifica.

La jail [ssh] gestisce la protezione contro i tentativi di accesso falliti ripetuti — il classico brute-force.

Descrizione dei parametri principali

  • ignoreip — indirizzi IP che non verranno mai bloccati. Accetta un elenco di IP, maschere di sottorete o nomi DNS separati da spazi.
  • bantime — durata (in secondi) per cui un IP rimane bloccato prima di essere rilasciato automaticamente.
  • maxretry — numero di eventi corrispondenti che attiva un blocco. Per [ssh], corrisponde al numero di tentativi di accesso falliti.
  • findtime — la finestra temporale (in secondi) entro cui devono verificarsi maxretry eventi perché scatti il blocco. Il valore predefinito è 600 secondi (10 minuti).
  • enabled — impostare su true per attivare una jail, false per disattivarla.
  • port — la porta su cui il tuo servizio è in ascolto. Per SSH è 22 o l'alias ssh.
  • filter — il nome del file di filtro contenente i pattern regex che Fail2ban usa per rilevare eventi sospetti. Il filtro sshd si trova in /etc/fail2ban/filter.d/sshd.conf.
  • logpath — il file di log monitorato da Fail2ban. Tutta l'attività di accesso (riuscita e fallita) viene registrata per impostazione predefinita in /var/log/auth.log.

Buone pratiche di configurazione

Non modificare mai jail.conf direttamente. Fail2ban è progettato per essere personalizzato tramite file .local — vengono caricati automaticamente e hanno la precedenza sui valori predefiniti. In questo modo le tue modifiche sopravvivono agli aggiornamenti del pacchetto.

Crea il tuo file di override:

nano /etc/fail2ban/jail.local

Ecco una configurazione di partenza solida:

[DEFAULT]
# L'IP statico del tuo server — evita di bloccarti accidentalmente.
# Se non imposti ignoreip qui, commentalo in jail.conf.
ignoreip = 57.66.158.131

[ssh]
# Se nell'arco di 1 ora...
findtime  = 3600
# ...si registrano 6 tentativi di accesso falliti...
maxretry  = 6
# ...quell'IP viene bloccato per 24 ore.
bantime   = 86400

Perché dovresti modificare ignoreip: il valore predefinito 127.0.0.1/8 è una falla di sicurezza sui server condivisi. Se un attaccante compromette qualsiasi account shell sulla macchina, può eseguire uno strumento di brute-force in locale — e Fail2ban lo ignorerà, perché il traffico sembra provenire da localhost.

Perché dovresti aumentare findtime: le botnet che usano attacchi «brute-force lento» sono progettate appositamente per aggirare la finestra predefinita di 10 minuti. Con maxretry = 6, un attaccante può provare 5 password, aspettare 10 minuti, provarne altre 5 e ripetere all'infinito senza mai venire bloccato. Aumentare findtime a un'ora o più chiude questa lacuna.

Riavvio di Fail2ban

Una volta applicata la configurazione, riavvia il servizio:

service fail2ban restart

Aiuto

Hai domande o ti serve una mano? Scrivici tramite il sistema di ticket — siamo sempre qui per aiutarti!

Hai bisogno di aiuto?I nostri ingegneri ti aiuteranno gratuitamente con qualsiasi domanda in pochi minutiContattaci