Come installare e configurare Fail2Ban su Linux Debian/Ubuntu

Come installare e configurare Fail2Ban su Linux Debian/Ubuntu

Introduzione

In questa guida vedremo come installare e configurare Fail2Ban su Linux Debian/Ubuntu.

Qualsiasi server, che sia casalingo o in un datacenter, è destinato a ricevere degli attacchi informatici.
Il “bot” in questione bombarda il povero server provando a fare svariati login casuali, per lo più fallendo, fino a riuscire ad avere accesso alla macchina.

Non c’è purtroppo un modo per eliminarli totalmente, sono naturali, ma possiamo arginarli installando e configurando Fail2Ban.

Fail2Ban non è nient’altro che un applicativo, scritto in python, che, tramite una serie di regole, limita e blocca dopo un tot di login falliti l’IP del bot che sta provando ad accedere in maniera forzata.

Fail2Ban andrebbe installato nella macchina che è esposta maggiormente all’esterno.
Se hai dovuto aprire delle porte nel router, la 22 per SSH, la 80 per apache o la 1194 per la VPN, ad esempio, dovrai installare fail2ban proprio qui.

Di solito è una macchina sola, o a volte sono più, dipende dalle situazioni.

Per scrivere questa guida ho creato una macchina virtuale con Debian 11 nel mio server per fare delle prove.

Installare Fail2Ban su Debian/Ubuntu

Come installare e configurare Fail2Ban su Linux Debian/Ubuntu è davvero molto semplice, ma come prima cosa dovrai loggarti nel terminale come utente “root” con il comando

su -

aggiorna il sistema ed installa i nuovi pacchetti con questo comando

apt update && apt upgrade -y

A questo punto installa Fail2Ban con il comando

apt install fail2ban -y

Una volta installato, il servizio si avvia automaticamente, se vuoi fare un check puoi digitare questo comando

systemctl status fail2ban

e dovresti vedere un output di questo tipo

● fail2ban.service - Fail2Ban Service
     Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
     Active: active (running) since Mon 2022-05-30 15:19:56 UTC; 5h 37min ago
       Docs: man:fail2ban(1)
   Main PID: 128 (fail2ban-server)
      Tasks: 7 (limit: 38411)
     Memory: 22.8M
...

Se compare la scritta “running” vuol dire che è tutto funzionante e puoi passare al prossimo capitolo

Configurare Fail2Ban su Debian/Ubuntu

Ora devi andare a configurare Fail2Ban, ovvero devi andare ad abilitare quali servizi mettere sotto controllo per far sì che, dopo un tot di login falliti, venga bloccato l’IP dell’intruso.

Spostati nella cartella di Fail2Ban

cd /etc/fail2ban

con il prossimo comando ti apparirà la lista completa dei file

ls -l

come potrai notare, ci sono 2 file che cadono subito all’occhio, uno è fail2ban.conf e l’altro jail.conf.
Questi sono i file di configurazione che vengono generati di default al momento dell’installazione, non li devi toccare perchè se ci dovesse essere un’aggiornamento verrebbero sovrascritti.

Crea invece un nuovo file chiamato jail.local in cui andrai ad abilitare le varie regole, questo perchè Fail2Ban dà precedenza a questo tipo di estensione per “sovrascrivere” i suoi file config.

Crea ed apri subito con l’editor di testo il nuovo file con il comando

nano jail.local

qui non dovrai andare ad inserire di nuovo tutte le regole, ma dovrai solo inserire le impostazioni da sovrascrivere e gli eventuali filtri per cui vuoi attivare la protezione.

Configurazione BAN Fai2Ban

Ci sono 4 valori principali che puoi andare a modificare nel file appena aperto e sono

  • ignoreip
  • bantime
  • maxretry
  • findtime

ignoreip: è la tua cara e vecchia whitelist, ovvero la lista degli IP che non devono essere bannati in caso di login errato. Qui sicuramente dovrai inserire l’IP degli altri tuoi computer in modo che se per errore dovessi sbagliare il login più di un tot di volte, non verrai messo in blacklist e scordarti di rientrare in SSH.

Per aggiungere il/i tuo/i IP in whitelist inserisci nel file aperto questa sintassi

ignoreip = INDIRIZZOIP1, INDIRIZZOIP2, INDIRIZZOIP3, ECC...

bantime: con questo parametro si indica il tempo di quanto un IP verrà bannato. Il valore di default è di 10minuti, ma tu puoi mettere il valore che preferisci, io ti consiglio di mettere almeno 1 giorno (1d).

Per aumentare il tempo di ban, inserisci questo valore nell riga sotto

bantime = 1d

Se invece vuoi rendere definitivamente bloccato un IP per sempre, utilizza un numero negativo

maxretry: va a decidere per quante volte, lo stesso IP, può provare ad entrare prima che venga bannato.
Di default il valore è impostato su cinque, ma come sempre puoi scegliere tu quale valore assegnare a questo parametro, di solito viene lasciato invariato.

maxretry = 5

findtime: è invece quanto tempo deve passare, prima di arrivare alle 5 prove fallite, per cui l’IP debba essere bannato. In poche parole… se Fail2Ban blocca l’IP dopo 5 tentativi, findtime determina questi 5 tentativi in quanto tempo possono essere fatti.
Anche qui di default il parametro è impostato a 10 minuti, ma puoi cambiarlo aggiungendo questa riga

findtime: 10m

Salva il file con la combinazione CTRL+O > INVIO > CTRL+X

Abilitare filtri Fail2Ban

Le jail (prigioni), per Fail2Ban sono i servizi che si possono abilitare/disabilitare per poter proteggere la macchina dagli attacchi informatici, bloccando appunto gli IP dell’intruso secondo le regole che abbiamo visto sopra.

Fail2Ban dispone di molti servizi (jail) che possiamo utilizzare, da apache, alla posta, alla VPN, dobbiamo solo conoscere il nome del servizio, della jail, ed attivarlo.

Per abilitare una jail utilizziamo la sintassi enabled = true.

Di default, l’unica jail già attiva è quella relativa agli accessi SSH (sshd).

Se vuoi visualizzare i filtri che puoi attivare, naviga nella cartella filter.d con il comando

cd /etc/fail2ban/filter.d

ed esplora il contenuto con il comando

ls -l

Dovresti visualizzare un elenco simile al mio qui sotto con quasi 370 servizi utilizzabili

total 368
-rw-r--r-- 1 root root  467 Nov 23  2020 3proxy.conf
-rw-r--r-- 1 root root 3228 Nov 23  2020 apache-auth.conf
-rw-r--r-- 1 root root 2831 Nov 23  2020 apache-badbots.conf
-rw-r--r-- 1 root root 1265 Nov 23  2020 apache-botsearch.conf
-rw-r--r-- 1 root root 1619 Nov 23  2020 apache-common.conf
-rw-r--r-- 1 root root  324 Nov 23  2020 apache-fakegooglebot.conf
-rw-r--r-- 1 root root  511 Nov 23  2020 apache-modsecurity.conf
-rw-r--r-- 1 root root  596 Nov 23  2020 apache-nohome.conf
-rw-r--r-- 1 root root 1246 Nov 23  2020 apache-noscript.conf
-rw-r--r-- 1 root root 2184 Nov 23  2020 apache-overflows.conf
-rw-r--r-- 1 root root  362 Nov 23  2020 apache-pass.conf
-rw-r--r-- 1 root root 1020 Nov 23  2020 apache-shellshock.conf
-rw-r--r-- 1 root root 3492 Nov 23  2020 assp.conf
-rw-r--r-- 1 root root 2369 Nov 23  2020 asterisk.conf
-rw-r--r-- 1 root root  427 Nov 23  2020 bitwarden.conf
-rw-r--r-- 1 root root  522 Nov 23  2020 botsearch-common.conf
-rw-r--r-- 1 root root  307 Nov 23  2020 centreon.conf
-rw-r--r-- 1 root root 2775 Nov 23  2020 common.conf
-rw-r--r-- 1 root root  244 Nov 23  2020 counter-strike.conf
-rw-r--r-- 1 root root  429 Nov 23  2020 courier-auth.conf
-rw-r--r-- 1 root root  512 Nov 23  2020 courier-smtp.conf
-rw-r--r-- 1 root root  444 Nov 23  2020 cyrus-imap.conf
...

Poniamo il caso che tu voglia abilitare il filtro per apache, il web server installato nella tua macchina, non dovrai fare altro che riaprire con nano il file di prima /etc/fail2ban/jail.local ed inserire questa riga

[apache-auth]
enabled = true

a questo, puoi includere gli altri parametri che abbiamo visto sopra, ricordi?
ignoreip, bantime, ecc… ed avrai una jail tipo questa qui sotto

[apache-auth]
enabled = true
ignoreip = 10.0.0.123
bantime = 1d

Ora puoi salvare oppure abilitare altre jail.
Non c’è bisogno di abilitarle tutte, bastano solo i servizi che effettivamente sono attivi nella macchina.

Ricordati una cosa molto importante: ad ogni modifica del file jail.local dovrai riavviare il servizio di Fail2Ban per aggiornare le impostazioni e lo puoi fare con il seguente comando

systemctl restart fail2ban

Controllo BAN Fail2Ban

Fail2Ban ha un’interfaccia client in cui poter vedere il reale funzionamento dell’applicativo in modo da consultare lo stato delle singole jail o lo stato corrente del server.

Prova a digitare questo comando

fail2ban-client status sshd

Ti apparirà lo stato attuale della jail del servizio SSH dove potrai visualizzare varie informazioni, dovresti avere un output simile al mio qui sotto

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list:

Comandi utili Fail2Ban

Status fail2ban-client

fail2ban-client status

Status jail

fail2ban-client status JAIL_ATTIVA

Conclusione

In questa piccola guida ti ho mostrato come installare e configurare fail2ban su Linux Debian/Ubuntu

Related Articles

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *