Proteggere il tuo server dagli attacchi brute force è fondamentale. La domanda è: come esattamente? Per fortuna, Fail2Ban è proprio dietro l’angolo per proteggere il tuo server, ma la configurazione predefinita di Fail2Ban ha bisogno di alcuni aggiustamenti per una sicurezza ottimale. Non preoccuparti, però, questo tutorial ti copre a fondo.
In questo tutorial imparerai come configurare Fail2Ban e respingere gli attacchi brute force proteggendo il tuo server SSH.
Pronto? Continua a leggere per ottimizzare la sicurezza del tuo server SSH!
Prerequisiti
Questo tutorial comprende istruzioni passo passo. Se vuoi seguirci, assicurati di avere quanto segue:
- Un server Ubuntu e Debian – Questo tutorial utilizza un server con Ubuntu 18.04 LTS per configurare Fail2Ban e un server Debian 10 per testare le configurazioni di blocco di Fail2Ban.
- Accesso come root o privilegi sudo sul server per eseguire comandi come superutente.
- Fail2Ban installato in un server Ubuntu o Debian.
Configurazione di un firewall di base
Fail2Ban protegge il tuo server monitorando i log e bandendo gli indirizzi IP che effettuano troppi tentativi di accesso entro un certo periodo di tempo. Ma prima, configurerai un firewall di base dove potrai aggiungere regole per bloccare attività dannose sul tuo server.
1. In primo luogo, esegui il comando service
qui sotto per fermare Fail2Ban (fail2ban stop
) dall’esecuzione. Arresta Fail2Ban quando apporti modifiche ai file di configurazione in modo da poter testare le modifiche e assicurarti che funzionino come previsto.

2. Esegui il comando apt install
per installare Sendmail
e IPTables-persistent
. Sendmail è un programma che Fail2Ban utilizza per notificarti quando bandisce un indirizzo IP. Mentre IPTables-persistent è un programma che salva le tue impostazioni di configurazione modificate nel file /etc/sysconfig/iptables.
Avere questi programmi installati mantiene integre le impostazioni del tuo firewall anche se si verifica qualcosa di inaspettato, come un’interruzione di corrente.
Ora esegui ciascun comando iptables
di seguito per configurare il tuo firewall. Questi comandi non genereranno alcun output, ma aggiungeranno quattro regole al tuo firewall. Queste regole consentono o bloccano le connessioni al tuo server.

4. Esegui il comando iptables
di seguito per visualizzare un riepilogo di ciò che hai configurato nel tuo firewall.
Di seguito, evidenziate le regole che hai aggiunto al tuo firewall.

5. Successivamente, esegui i seguenti comandi per salvare le tue regole nel file /etc/sysconfig/iptables-config e avviare il servizio Fail2Ban. Il file iptables-config contiene tutte le tue regole permanenti del firewall.
Fail2Ban aggiornerà automaticamente alcune regole nel tuo firewall per proteggere il tuo server.
6. Infine, esegui nuovamente il comando iptables
di seguito per visualizzare le regole del tuo firewall.
Come mostrato di seguito, in rosso sono evidenziate le nuove regole che Fail2Ban ha aggiunto al tuo firewall.

Regolazione della tua configurazione locale di Fail2Ban
Ora che hai un firewall di base in esecuzione, è il momento di regolare il file di configurazione locale di Fail2Ban per aggiungere maggiore controllo nella sicurezza del tuo server. Questo tutorial utilizza il file di configurazione /etc/fail2ban/jail.conf poiché contiene tutte le opzioni necessarie per configurare le impostazioni globali per l’applicazione Fail2Ban.
Forse vuoi creare regole personalizzate per il tuo server SSH. In tal caso, creerai un nuovo file jail.local (basato sul file jail.conf) e inserirai le regole specifiche per SSH nel file jail.local. In questo modo puoi sovrascrivere le impostazioni nel file jail.conf per il tuo server.
1. Esegui il comando awk
qui sotto per eseguire le seguenti operazioni:
- Stampa il contenuto (
'{ printf "# "; print; }'
) del file/etc/fail2ban/jail.conf
. - Crea un file chiamato jail.local (basato sul file jail.conf), che puoi utilizzare per sovrascrivere le impostazioni predefinite nel file jail.conf.
- Inoltra il contenuto del file
/etc/fail2ban/jail.conf
al comandotee
. In questo modo verrà scritto il contenuto del filejail.conf
nel tuo filesystem locale (/etc/fail2ban/jail.local
).

2. Una volta creato il file jail.local, esegui il comando ls
di seguito. Il comando elenca i contenuti della directory Fail2Ban del tuo server (/etc/fail2ban
) per verificare che il tuo file jail.local sia generato correttamente.
Se vedi il nuovo file jail.local, come mostrato di seguito, allora il tuo file locale è stato generato correttamente.

3. Apri il file /etc/fail2ban/jail.local nel tuo editor di testo preferito e vai alla sezione [ssh].
De-commenta le opzioni [sshd] e enabled eliminando il simbolo # davanti alle opzioni, come mostrato di seguito per abilitare SSH.
Da questo punto fino alla fine del tutorial, rimuovi il simbolo # davanti alle sezioni o alle opzioni per abilitarle.

4. Scorri verso il basso e de-commenta la sezione [DEFAULT] mostrata di seguito. Questa sezione è dove configurare le impostazioni predefinite per Fail2Ban. Qualsiasi impostazione in questa sezione verrà applicata a tutti i jails che Fail2Ban gestisce.

5. Successivamente, scorri verso il basso fino alla sezione bantime e imposta un bantime per 60 minuti. L’opzione bantime imposta la durata del tempo, in minuti, per cui un indirizzo IP è bandito dopo un tentativo di accesso fallito.
Impostazione predefinita del tempo di ban: 600 secondi (10 minuti). Puoi regolare questa impostazione a tuo piacimento, ma è importante notare che più bassa è l’impostazione del tempo di ban, maggiore sarà il carico sul tuo server.

6. Naviga fino alle opzioni findtime e maxretry. Mantieni il valore di findtime come è attualmente (10m) e abbassa il valore di maxretry a 3.
L’opzione findtime imposta il tempo, in minuti, che un indirizzo IP può fallire nel tentativo di accesso prima di essere bannato. Mentre l’opzione maxretry imposta il numero di tentativi di accesso falliti prima che un indirizzo IP venga bannato.
L’impostazione predefinita di findtime è di 10 minuti e maxretry è di 5 minuti. Di conseguenza, un indirizzo IP che fallisce nel tentativo di accesso 5 volte entro un periodo di 10 minuti verrà bannato.

7. Scorri verso il basso, decommenta e configura le opzioni destemail, sender e mta:
- destemail – Inserisci un indirizzo email dove Fail2Ban invierà le notifiche.
- sender – Imposta il campo “Da” nell’email che Fail2Ban invierà a destemail.
- mta – Mantieni il valore predefinito (sendmail) come è. L’opzione mta imposta l’agente di consegna email che Fail2Ban utilizza per inviare le notifiche.

8. Naviga alle opzioni di azione, come mostrato di seguito, e rimuovi il commento dall’opzione action_mwl. Ciò permette a Fail2Ban di inviarti email di logwatch. Puoi controllare le email di logwatch per indagare ulteriormente su eventuali problemi di sicurezza sul tuo server.
Salva le modifiche ed esci dall’editor di testo.

9. Ora esegui i comandi seguenti per riavviare il servizio fail2ban
.
10. Infine, esegui il comando seguente per controllare lo stato
del servizio fail2ban
. sudo service fail2ban status
Se il servizio Fail2Ban sta funzionando, otterrai un output simile a quello riportato di seguito.
Se il servizio Fail2Ban sta funzionando, otterrai un output simile a quello riportato di seguito.

Test delle tue configurazioni di bannaggio
Hai appena configurato Fail2Ban, quindi è ora di verificare se le configurazioni di bannaggio funzionano effettivamente. Prova a effettuare più accessi SSH falliti al tuo server Fail2Ban da un server secondario e verifica se quel server secondario viene bannato.
1. Accedi al tuo server secondario (Debian) e esegui il comando seguente per SSH nel tuo server Fail2Ban.
Questa demo utilizza un server Debian 10 con un IP di 134.122.20.103 per fare ssh
al server fail2ban
che ha un IP di 69.28.83.134
.
2. Inserisci una password casuale quando richiesto e premi Invio.
Al primo tentativo, il server Fail2Ban interromperà il tentativo di accesso SSH e stamperà il messaggio Permesso negato, come mostrato di seguito. Ripeti il tentativo di accesso SSH circa due o tre volte in più, e il server Fail2Ban smetterà alla fine di rispondere al tuo tentativo di accesso SSH.
A questo punto, non riceverai più un messaggio Permesso negato, ma uno schermo vuoto. Un’interfaccia vuota indica che il tuo secondo server (Debian) è stato bloccato dal server Fail2Ban.

Ma forse hai già un elenco di indirizzi IP da bloccare dal tuo server Fail2Ban. In tal caso, apri il file jail.local e vai alla sezione [DEFAULT]. Rimuovi il commento dall’opzione ignoreip e imposta gli indirizzi IP da bloccare, come mostrato di seguito.
L’indirizzo può essere sia una serie di voci IPv4 o IPv6 separate, oppure separate da virgole.

3. Sul tuo server Fail2Ban (Ubuntu), esegui nuovamente il comando iptables
di seguito per visualizzare le regole del firewall.
Nota che c’è una nuova regola che rifiuta i tentativi di accesso SSH dall’indirizzo IP 134.122.20.103.
Riceverai anche una email da Fail2Ban, in caso di un ban riuscito, con un file di log allegato se hai sendmail configurato sul tuo server Fail2Ban. La notifica via email indica che Fail2Ban ha fermato con successo un attacco di forza bruta e ha salvato il tuo server da danni potenziali.

Conclusione
Attraverso questo tutorial, hai imparato come configurare Fail2Ban su un server Ubuntu. A questo punto, dovresti essere ben equipaggiato con le conoscenze per proteggere il tuo server SSH dagli attacchi di forza bruta.
Ora, perché non portare questa nuova conoscenza ad un livello superiore? Forse inizia con il blocco degli indirizzi IP su tutte le porte con Fail2Ban su un host Docker?