Fail2ban: il guardiano del nostro server Linux

Quando si ha un Server Linux aziendale la cosa più utile che in genere si fa è abilitarlo per l’accesso dall’esterno, abilitando dei servizi come SSH e il port forwarding. In questo modo si avrà l’accesso al nostro server dall’esterno. Questo però espone il nostro server a molti potenziali rischi come il password cracking e le botnet. Un server è esposto a tali rischi anche se solo ospita altri servizi, come Web-server, mail-server, FTP-server ecc. Questo perché per avere accesso da fuori è necessario aprire dei “varchi” che vanno dall’esterno della rete aziendale fino al nostro server e possono quindi essere sfruttati da utenti malintenzionati.

Proteggersi con Fail2Ban

Un software che fa al caso nostro è Fail2Ban; il quale ci protegge da attacchi tipo il Bruteforcing e dai tentativi di accesso non autorizzati.

Come funziona

Il funzionamento è molto semplice, Fail2Ban rileva nei log del sistema operativo (tramite regular expression) le stringhe che indicano un tentativo di accesso fallito ad uno specifico servizio. Quando colleziona un numero di tentativi consecutivi errati istruisce il firewall di sistema, per bloccare i tentativi di accesso a quel servizio da parte dell’IP attaccante. L’IP attaccante rimarrà bannato per il tempo che noi specificheremo nella configurazione.

Configuriamo Fail2Ban

Installazione

Innanzitutto installiamo Fail2Ban sul nostro server Linux e quindi diamo il seguente comando sudo apt-get install fail2ban. Ad installazione terminata possiamo configurarlo. Il file di configurazione di Fail2Ban si trova in /etc/fail2ban/jail.conf quindi diamo il comando nano per aprire il file di configurazione, sudo nano /etc/fail2ban/jail.conf.

Il file jail.conf è costituito da un iniziale area DEFAULT nella quale dobbiamo definire 3 operazioni

  • ignoreip per definire un ip o una rete da ignorare nei controlli
  • bantime per definire il tempo in cui un ip deve rimanere bannato, espresso in secondi
  • maxretry per definire i tentativi massimi superati i quali Fail2Ban bannerà l’IP incriminato

Dopo ciò nell’area ACTIONS definiamo l’opzione banaction = iptables-multiport e concludiamo così la prima parte della configurazione.

Configuriamo le galere

Ora dobbiamo definire le così dette Jails e cioè le regole che si occuperanno di controllare i tentativi di accesso non autorizzati e di conseguenza bannare o meno un IP.

Le Jails sono così composte:

  • [ssh] (nome servizio)
  • enabled= (true/false abilita o disabilita la jail)
  • port= ssh (numero porta o nome servizio)
  • filter= sshd (nome del demone da controllare o regular expression da applicare al file log)
  • logpath= /var/log/auth.log (percorso del file di log del servizio specifico)

Nella sezione Jails troviamo già delle regole predefinite, per esempio troviamo già la regola per SSH correttamente compilata e già impostata su enabled = True. Questo ne abiliterà il funzionamento al prossimo riavvio di Fail2Ban.

Una volta definite le nostre jails possiamo salvare il file con la combinazione di tasti Ctrl+o e confermare con invio. Usciamo poi da nano con la combinazione di tasti Ctrl+x e riavviamo Fail2Ban con il comando sudo /etc/init.d/fail2ban restart.

Fatto questo abbiamo configurato il nostro Fail2Ban a guardia del nostro Server Linux.