Come configurare Fail2Ban?

Se hai abilitato SSH, controlla la cronologia di accesso del tuo server Linux . Rimarrai sorpreso nel vedere un numero enorme di IP che tentano di accedere al tuo server tramite SSH. Se non disponi di alcun meccanismo per scoraggiare questi tentativi di accesso, il tuo sistema è suscettibile agli attacchi di forza bruta. Fondamentalmente, uno script/bot continuerà a tentare la connessione SSH al tuo sistema provando varie combinazioni di nome utente e password.

È qui che entra in gioco uno strumento come Fail2Ban. Fail2Ban è un software gratuito e open source che aiuta a proteggere il tuo server Linux da accessi dannosi. Fail2Ban vieterà l’IP (per un certo periodo) se si verifica un certo numero di tentativi di accesso falliti.

Fail2Ban funziona immediatamente con le impostazioni di base ma è anche estremamente configurabile. Puoi modificarlo a tuo piacimento e creare filtri e regole secondo le tue necessità.

Installazione di Fail2Ban su Linux

Puoi intuire la popolarità di Fail2Ban dal fatto che è disponibile nei repository ufficiali di tutte le principali distribuzioni Linux. Ciò rende l’installazione di Fail2Ban un compito semplice.

Installa Fail2Ban su CentOS e Red Hat

Devi essere un utente root o sudo per installare il nuovo software sul tuo sistema.

Devi assicurarti che il tuo sistema sia aggiornato e che tu abbia installato il repository EPEL

sudo yum update && sudo yum install epel-release

Ora puoi installare Fail2Ban con il seguente comando:

sudo yum install fail2ban

Installa Fail2Ban su Ubuntu e Debian

Innanzitutto, assicurati che il tuo sistema sia aggiornato:

sudo apt update && sudo apt upgrade -y

Ora installa Fail2Ban con questo comando:

sudo apt install fail2ban

Comprensione del file di configurazione Fail2Ban

Ci sono due file di configurazione principali in Fail2Ban: /etc/fail2ban/fail2ban.conf e /etc/fail2ban/jail.conf. Lasciatemi spiegare cosa fanno.

/etc/fail2ban/fail2ban.conf: questo è il file di configurazione per le impostazioni operative del demone Fail2Ban. Impostazioni come loglevel, file di registro, socket e file pid vengono definite qui.

/etc/fail2ban/jail.conf: è qui che avviene tutta la magia. Questo è il file in cui puoi configurare cose come il tempo di ban predefinito, il numero di reti prima di bannare un IP, gli IP nella whitelist, le informazioni sull’invio della posta ecc. Fondamentalmente controlli il comportamento di Fail2Ban da questo file.

Ora, prima di modificare questi file, Fail2Ban consiglia di crearne una copia con il file .local per questi file di configurazione. È perché i file conf predefiniti possono essere sovrascritti negli aggiornamenti e perderai tutte le tue impostazioni.

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

Ora capiamo il file jail.conf. Se usi il comando less per leggere questo file di grandi dimensioni, potrebbe sembrare piuttosto confuso. Il file conf cerca di spiegare tutto con troppi commenti. Quindi, lascia che te lo semplifichi.

Il file jail.conf è diviso in servizi. C’è una sezione [Default] e si applica a tutti i servizi. E poi puoi vedere vari servizi con le rispettive impostazioni (se presenti). Tutti questi servizi sono tra parentesi. Vedrai sezioni come [sshd], [apache-auth], [squid] ecc.

Se rimuovo i commenti, la sezione predefinita appare così:

[DEFAULT]
ignorecommand =
bantime = 10m
findtime = 10m
maxretry = 5
backend = auto
usedns = warn
logencoding = auto
enabled = false
mode = normal
filter = %(name)s[mode=%(mode)s]
destemail = root@localhost
sender = root@
mta = sendmail
protocol = tcp
chain =
port = 0:65535
fail2ban_agent = Fail2Ban/%(fail2ban_version)s
banaction = iptables-multiport
banaction_allports = iptables-allports
action_abuseipdb = abuseipdb
action = %(action_)s

copia

Lascia che ti spieghi il significato di alcuni di questi parametri.

  • bantime: imposta la durata del ban. L’impostazione predefinita è 10 minuti.
  • findtime: la finestra in cui verrà eseguita l’azione su un IP. L’impostazione predefinita è 10 minuti. Supponiamo che sia stato tentato un accesso errato da un determinato IP alle 10:30. Se lo stesso IP raggiunge il numero massimo di tentativi prima delle 10:40, verrà bannato. In caso contrario, il successivo tentativo fallito dopo le 10:40 verrà conteggiato come primo tentativo fallito.
  • maxretry: il numero di tentativi falliti prima che venga eseguita un’azione
  • usedns: l’impostazione “avvisa” tenta di utilizzare il DNS inverso per cercare il nome host e vietarlo utilizzando il nome host. Impostandolo su no verranno vietati gli IP, non il nome host.
  • destemail: l’indirizzo email a cui verranno inviati gli avvisi (deve essere configurato)
  • mittente: il nome del mittente nell’e-mail di notifica
  • mta: Mail Transfer Agent utilizzato per le e-mail di notifica
  • banaction: questo parametro utilizza il file /etc/fail2ban/action.d/iptables-multiport.conf per impostare l’azione dopo il numero massimo di tentativi falliti
  • protocollo: il tipo di traffico che verrà interrotto dopo il divieto

Se vuoi apportare modifiche per qualsiasi jail (o per tutte le jail), come il numero massimo di tentativi, il tempo di ban, il tempo di ricerca ecc., dovresti modificare il file jail.local.

Come utilizzare Fail2Ban per proteggere il server Linux

Lascia che ti mostri alcuni dei modi in cui puoi utilizzare Fail2Ban per rafforzare la sicurezza di Linux. Tieni presente che devi essere un utente root o avere accesso sudo per eseguire i comandi fail2ban.

Abilita Fail2Ban sul tuo server e controlla tutte le jail in esecuzione

Puoi utilizzare i comandi systemd per avviare e abilitare Fail2Ban sul tuo server Linux:

systemctl start fail2ban
systemctl enable fail2ban

Una volta abilitato Fail2Ban, puoi vedere lo stato e le jail attive con il comando fail2ban-client:

fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

Nel caso te lo stessi chiedendo, sshd jail è abilitato per impostazione predefinita.

Vedi il registro Fail2Ban

Il registro Fail2Ban si trova in /var/log/fail2ban.log. I file di registro sono nel seguente formato:

2019-03-25 07:09:08,004 fail2ban.filter [25630]: INFO [sshd] Found 139.59.69.76 – 2019-03-25 07:09:07
2019-03-25 07:09:36,756 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,757 fail2ban.filter [25630]: INFO [sshd] Found 159.89.205.213 – 2019-03-25 07:09:36
2019-03-25 07:09:36,774 fail2ban.actions [25630]: NOTICE [sshd] Ban 159.89.205.213
2019-03-25 07:09:36,956 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,957 fail2ban.filter [25630]: INFO [sshd] Found 182.70.253.202 – 2019-03-25 07:09:36
2019-03-25 07:09:36,981 fail2ban.actions [25630]: NOTICE [sshd] Ban 182.70.253.202
2019-03-25 07:09:37,247 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,248 fail2ban.filter [25630]: INFO [sshd] Found 112.64.214.90 – 2019-03-25 07:09:37
2019-03-25 07:09:37,589 fail2ban.actions [25630]: NOTICE [sshd] Ban 112.64.214.90

Puoi vedere che identifica gli IP e li vieta quando superano la soglia massima di tentativi.

Vedi gli IP vietati da Fail2Ban

Un modo è verificare lo stato di una determinata prigione. A questo scopo è possibile utilizzare il client Fail2Ban.

fail2ban-client status <jail_name>

Ad esempio, se devi vedere tutti gli accessi ssh errati vietati da Fail2Ban, puoi usarlo nel modo seguente. L’output mostrerebbe il totale dei tentativi falliti e il totale degli IP vietati.

root@test-server:~# fail2ban-client status sshd
Status for the jail: sshd
|- Filter
| |- Currently failed: 14
| |- Total failed: 715
| `- File list: /var/log/auth.log
`- Actions
|- Currently banned: 7
|- Total banned: 17
`- Banned IP list: 177.47.115.67 118.130.133.110 68.183.62.73 202.65.154.110 106.12.102.114 61.184.247.3 218.92.1.150

Il sistema che tenta di accedere tramite SSH dall’accesso non riuscito dovrebbe ricevere un errore come questo

ssh: connect to host 93.233.73.133 port 22: Connection refused

Come bannare permanentemente un IP con Fail2Ban

Ormai sai che il ban messo su un IP da Fail2Ban è temporaneo. Per impostazione predefinita è per 10 minuti e l’aggressore può provare ad accedere nuovamente dopo 10 minuti.

Ciò rappresenta un rischio per la sicurezza poiché gli aggressori potrebbero utilizzare uno script che tenta di accedere dopo un intervallo di 10 minuti.

Quindi, come si fa a mettere un ban permanente usando Fail2Ban? Non esiste una risposta chiara a questo.

A partire dalla versione 0.11 di Fail2Ban, il tempo di ban verrà calcolato automaticamente e il tempo di ban degli IP persistenti aumenterà in modo esponenziale.

Ma se controlli la tua versione di Fail2Ban, probabilmente stai utilizzando la versione 0.10.

fail2ban-server --version 
Fail2Ban v0.10.2
Copyright (c) 2004-2008 Cyril Jaquier, 2008- Fail2Ban Contributors
Copyright of modifications held by their respective authors.
Licensed under the GNU General Public License v2 (GPL).

Nelle versioni precedenti, potevi utilizzare un bantime negativo (bantime = -1) e ciò sarebbe stato equivalente a un ban permanente, ma se provi questo metodo, probabilmente vedrai un errore come ‘Avvio fail2ban: ERROR NOK: (‘ l’immagine del disco del database non è valida’,)’.

Una soluzione non così pulita sarebbe quella di aumentare il bantime a qualcosa come 1 giorno, 1 settimana, 1 mese o 1 anno. Ciò potrebbe aggirare il problema finché la nuova versione non sarà disponibile sul tuo sistema.

Come sbloccare un IP bloccato da Fail2Ban

Per prima cosa controlla se l’IP è bloccato o meno. Poiché Fail2Ban funziona su iptables, puoi esaminare iptable per visualizzare gli IP vietati dal tuo server:

iptables -n -L

Potrebbe essere necessario utilizzare il comando grep se ci sono troppi IP vietati.

Se trovi l’indirizzo IP specificato nell’output, è stato bannato:

Quindi, il passo successivo è scoprire quale “jail” sta vietando il suddetto IP. Dovrai utilizzare il comando Grep con i log fail2ban qui.

Come puoi vedere nell’output seguente, l’IP è stato bandito da sshd jail.

root@test-server:~# grep -E ‘Ban.*61.184.247.3’ /var/log/fail2ban.log
2019-03-14 13:09:25,029 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3
2019-03-14 13:52:56,745 fail2ban.actions [25630]: NOTICE [sshd] Ban 61.184.247.3

copia

Ora che conosci il nome della jail che blocca l’IP, puoi sbloccare l’IP utilizzando il client fail2ban:

fail2ban-client set <jail_name> unbanip <ip_address>

Come autorizzare l’IP in Fail2Ban

Non sarebbe una buona cosa se ti bannassi, vero? Per ignorare che un indirizzo IP venga bannato dalla sessione corrente di Fail2Ban, puoi inserire l’IP nella whitelist utilizzando un comando come questo:

fail2ban-client set <JAIL_NAME> addignoreip <IP_Address>

Puoi trovare facilmente il tuo indirizzo IP in Linux.

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
`- 203.93.83.113

Se desideri inserire permanentemente l’IP nella whitelist, dovresti modificare il file di configurazione della jail. Vai alla sezione jail e aggiungi la riga ignoreip in questo modo:

ignoreip = 127.0.0.1/8 <IP_TO_BE_WHITELISTED>

Se vuoi inserire nella whitelist un IP da tutte le jail del tuo sistema, sarebbe un’idea migliore modificare il file /etc/fail2ban/jail.local e aggiungere una riga nella sezione DEFAULT come quella che abbiamo visto sopra.

Dovrai riavviare Fail2Ban per rendere effettiva questa modifica.

Come vedere la whitelist degli IP di una jail

Puoi vedere tutti gli IP inseriti nella whitelist di una jail usando questo comando:

fail2ban-client get <JAIL_NAME> ignoreip

Dovrebbe mostrare tutti gli IP ignorati da Fail2Ban per quella jail:

sudo fail2ban-client set sshd addignoreip 203.93.83.113
These IP addresses/networks are ignored:
|- 127.0.0.0/8
|- ::1
`- 203.93.83.113

Come rimuovere un IP dalla whitelist di Fail2Ban

Se stai rimuovendo l’IP dalla whitelist di una determinata jail, puoi utilizzare questo comando:

fail2ban-client set <JAIL_NAME> delignoreip <IP_Address>

Se vuoi rimuovere permanentemente l’IP, dovresti modificare il file /etc/fail2ban/jail.local. Puoi fare molte più cose con Fail2Ban. Questa guida ti fornisce le nozioni di base per iniziare con Fail2Ban. Non ho toccato argomenti come azioni, notifiche email, filtri ecc.

Una volta che conosci le nozioni di base di Fail2Ban, puoi iniziare a esplorarne di più. Per il momento, giocaci e aggiungi un ulteriore livello di sicurezza a SSH sul tuo server Linux.

Autore

Classe Novanta3, Fondatore di TrgtKLS. Appassionato in Sec IT & Tech. Expert per l'amministrazione web server e supporto in Back-&, ottimizzazione e manutenzione di esso. • Metà Free e Metà Freelancer • mail@trgtkls.org

Articoli correlati

Lascia un commento

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

close