fail2ban è uno strumento fondamentale per proteggere i server da attacchi malevoli, come brute force, accessi non autorizzati e tentativi di hacking. Non può ovviamente essere efficace contro qualsiasi tipo di attacco, ma non averlo sul server può davvero essere un grosso errore.

In questo post cercherò di spiegarti che cos’è fail2ban, come funziona, come installarlo e configurarlo per proteggere i servizi più comuni come SSH, IMAP e addirittura i tuoi siti WordPress.

Cos’è fail2ban

fail2ban è un software open-source che monitora i file di log del server alla ricerca di attività sospette. Quando rileva un numero eccessivo di tentativi di accesso falliti o comportamenti anomali, blocca l’IP dell’attaccante utilizzando un firewall (ad esempio o ufw).

In altre parole, fail2ban è uno strumento leggero ma efficace per mitigare attacchi brute force e proteggere i tuoi servizi più vulnerabili.

Come funziona fail2ban

  1. Monitoraggio dei log: fail2ban analizza i file di log del sistema per individuare eventi specifici, come tentativi di accesso falliti.
  2. Definizione delle regole: Utilizza delle regole preconfigurate chiamate “jail” per identificare comportamenti sospetti.
  3. Blocchi automatici: Quando un’attività anomala supera una soglia configurata (ad esempio, 5 tentativi falliti in 10 minuti), l’IP da cui provengono i tentativi viene bloccato per un periodo definito.

Come si installa fail2ban


Su sistemi Debian/Ubuntu:

sudo apt update
sudo apt install fail2ban

Su sistemi CentOS/RHEL:

sudo yum install epel-release
sudo yum install fail2ban

Avvio del servizio:

Dopo l’installazione, avvia e abilita fail2ban:

sudo systemctl start fail2ban
sudo systemctl enable fail2ban

Configurazione base di fail2ban

La configurazione principale si trova nel file:

/etc/fail2ban/jail.conf

Nota: Non modificare direttamente jail.conf. Crea invece un file jail.local per personalizzazioni:

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

Nel file jail.local, puoi configurare le seguenti impostazioni generali:

  • ignoreip: Indica gli IP da non bloccare (ad esempio, il tuo).
  • bantime: Durata del blocco (es. 10 minuti: 600 secondi).
  • findtime: Intervallo in cui devono avvenire i tentativi falliti.
  • maxretry: Numero massimo di tentativi falliti prima di bloccare l’IP.

Esempio:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime  = 3600
findtime = 600
maxretry = 5

Configurazione per servizi specifici


1. Protezione SSH

fail2ban ha una jail preconfigurata per SSH. Attivala nel file jail.local:

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 5
  1. Protezione IMAP

Se utilizzi un server di posta, puoi configurare una jail per bloccare gli attacchi su IMAP:

[imap]
enabled  = true
port     = imap,imap3,imaps
filter   = dovecot
logpath  = /var/log/mail.log
maxretry = 3
  1. Protezione login WordPress

Per WordPress, puoi usare un filtro personalizzato. Crea un file wordpress.conf:

sudo nano /etc/fail2ban/filter.d/wordpress.conf

Aggiungi il seguente filtro per rilevare i tentativi falliti di login:

[Definition]
failregex = <HOST>.*"POST /wp-login.php"
ignoreregex =

Configura la jail nel file jail.local:

[wordpress]
enabled  = true
port     = http,https
filter   = wordpress
logpath  = /var/log/apache2/access.log
maxretry = 5

Verifica e riavvio

Dopo ogni modifica, verifica la configurazione:

sudo fail2ban-client configtest

Riavvia Fail2ban:

sudo systemctl restart fail2ban

Controllo dello stato

Puoi verificare quali jail sono attive e quali IP sono bloccati:

sudo fail2ban-client status

sudo fail2ban-client status sshd

Recappino veloce

fail2ban è uno strumento indispensabile per proteggere i tuoi server da molti tipi di attacco. Con una configurazione mirata, puoi salvaguardare servizi critici come SSH, IMAP e addirittura WordPress da tentativi di intrusione. Provalo subito per migliorare la sicurezza del tuo sistema!

Se hai domande o hai bisogno di supporto nella configurazione di fail2ban, contattami subito!
Condividi questo post