Tutti i server esposti a Internet sono a rischio di attacchi di malware. Ad esempio, se disponi di un software connesso a una rete pubblica, gli aggressori possono utilizzare tentativi di forza bruta per accedere all'applicazione.
Fail2ban è uno strumento open source che aiuta a proteggere la tua macchina Linux dalla forza bruta e da altri attacchi automatizzati monitorando i registri dei servizi per attività dannose. Utilizza espressioni regolari per eseguire la scansione dei file di registro. Vengono contate tutte le voci che corrispondono ai modelli e quando il loro numero raggiunge una determinata soglia predefinita, Fail2ban bandisce l'IP offensivo per un determinato periodo di tempo. Il firewall di sistema predefinito viene utilizzato come azione di divieto. Allo scadere del periodo di esclusione, l'indirizzo IP viene rimosso dall'elenco di esclusione.
Questo articolo spiega come installare e configurare Fail2ban su CentOS 8.
Installazione di Fail2ban su CentOS #
Il pacchetto Fail2ban è incluso nei repository CentOS 8 predefiniti. Per installarlo, inserisci il seguente comando come root o utente con privilegi sudo:
sudo dnf install fail2ban
Una volta completata l'installazione, abilita e avvia il servizio Fail2ban:
sudo systemctl enable --now fail2ban
Per verificare se il server Fail2ban è in esecuzione, digita:
sudo systemctl status fail2ban
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/usr/lib/systemd/system/fail2ban.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-09-10 12:53:45 UTC; 8s ago
...
Questo è tutto. A questo punto, hai Fail2Ban in esecuzione sul tuo server CentOS.
Configurazione Fall2ban #
L'installazione predefinita di Fail2ban include due file di configurazione, /etc/fail2ban/jail.conf
e /etc/fail2ban/jail.d/00-firewalld.conf
. Questi file non devono essere modificati in quanto potrebbero essere sovrascritti quando il pacchetto viene aggiornato.
Fail2ban legge i file di configurazione nel seguente ordine:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
Ogni .local
il file sovrascrive le impostazioni da .conf
file.
Il modo più semplice per configurare Fail2ban è copiare jail.conf
a jail.local
e modifica il .local
file. Gli utenti più avanzati possono creare un .local
file di configurazione da zero. Il .local
il file non deve includere tutte le impostazioni dal corrispondente .conf
file, solo quelli che vuoi sovrascrivere.
Crea un .local
file di configurazione dal predefinito jail.conf
file:
sudo cp /etc/fail2ban/jail.{conf,local}
Per iniziare a configurare il server Fail2ban apri, il jail.local
file con il tuo editor di testo:
sudo nano /etc/fail2ban/jail.local
Il file include commenti che descrivono cosa fa ciascuna opzione di configurazione. In questo esempio, cambieremo le impostazioni di base.
Indirizzi IP nella whitelist #
Gli indirizzi IP, gli intervalli IP o gli host che desideri escludere dal divieto possono essere aggiunti a ignoreip
direttiva. Qui dovresti aggiungere l'indirizzo IP del tuo PC locale e tutte le altre macchine che desideri inserire nella whitelist.
Decommenta la riga che inizia con ignoreip
e aggiungi i tuoi indirizzi IP separati da uno spazio:
ignoreip = 127.0.0.1/8 ::1 123.123.123.123 192.168.1.0/24
Impostazioni ban #
I valori di bantime
, findtime
e maxretry
le opzioni definiscono il tempo di esclusione e le condizioni di esclusione.
bantime
è la durata per la quale l'IP viene bannato. Quando non viene specificato alcun suffisso, il valore predefinito è secondi. Per impostazione predefinita, il bantime
il valore è impostato su 10 minuti. In genere, la maggior parte degli utenti vorrà impostare un tempo di ban più lungo. Modifica il valore a tuo piacimento:
bantime = 1d
Per vietare definitivamente l'IP, utilizza un numero negativo.
findtime
è la durata tra il numero di fallimenti prima che venga impostato un divieto. Ad esempio, se Fail2ban è impostato per vietare un IP dopo cinque errori (maxretry
, vedi sotto), tali errori devono verificarsi entro il findtime
durata.
findtime = 10m
maxretry
è il numero di errori prima che un IP venga bannato. Il valore predefinito è cinque, che dovrebbe andare bene per la maggior parte degli utenti.
maxretry = 5
Notifiche e-mail #
Fail2ban può inviare avvisi e-mail quando un IP è stato bannato. Per ricevere messaggi di posta elettronica, devi avere un SMTP installato sul tuo server e modificare l'azione predefinita, che vieta solo l'IP a %(action_mw)s
, come mostrato di seguito:
action = %(action_mw)s
%(action_mw)s
bandirà l'IP offensivo e invierà un'e-mail con un rapporto whois. Se vuoi includere i log rilevanti nell'email, imposta l'azione su %(action_mwl)s
.
Puoi anche modificare gli indirizzi email di invio e ricezione:
/etc/fail2ban/jail.localdestemail = [email protected]
sender = [email protected]
Fail2ban Jail #
Fail2ban usa un concetto di jail. Una jail descrive un servizio e include filtri e azioni. Le voci di registro che corrispondono al modello di ricerca vengono conteggiate e, quando viene soddisfatta una condizione predefinita, vengono eseguite le azioni corrispondenti.
Fail2ban viene fornito con un numero di jail per diversi servizi. Puoi anche creare le tue configurazioni jail.
Per impostazione predefinita, su CentOS 8, non sono abilitate jail. Per abilitare una jail, devi aggiungere enabled = true
dopo il titolo di carcere. L'esempio seguente mostra come abilitare sshd
carcere:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Le impostazioni di cui abbiamo discusso nella sezione precedente possono essere impostate per jail. Ecco un esempio:
/etc/fail2ban/jail.local
I filtri si trovano in /etc/fail2ban/filter.d
directory, memorizzata in un file con lo stesso nome della jail. Se hai una configurazione personalizzata e hai esperienza con le espressioni regolari, puoi mettere a punto i filtri.
Ogni volta che il file di configurazione viene modificato, il servizio Fail2ban deve essere riavviato affinché le modifiche abbiano effetto:
sudo systemctl restart fail2ban
Fail2ban Client #
Fail2ban viene fornito con uno strumento da riga di comando chiamato fail2ban-client
che puoi utilizzare per interagire con il servizio Fail2ban.
Per visualizzare tutte le opzioni disponibili del fail2ban-client
comando, invocalo con il -h
opzione:
fail2ban-client -h
Questo strumento può essere utilizzato per vietare/rimuovere indirizzi IP, modificare le impostazioni, riavviare il servizio e altro. Ecco alcuni esempi:
-
Controlla lo stato di una prigione:
sudo fail2ban-client status sshd
-
Sbannare un IP:
sudo fail2ban-client set sshd unbanip 23.34.45.56
-
Ban un IP:
sudo fail2ban-client set sshd banip 23.34.45.56