Tutti i server accessibili da Internet sono a rischio di attacchi di malware. Ad esempio, se disponi di un'applicazione accessibile dalla rete pubblica, gli aggressori possono utilizzare tentativi di forza bruta per ottenere l'accesso all'applicazione.
Fail2ban è uno strumento 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 utilizzando il firewall di sistema per un periodo di tempo specifico. Allo scadere del periodo di esclusione, l'indirizzo IP viene rimosso dall'elenco di esclusione.
Questo articolo spiega come installare e configurare Fail2ban su Debian 10.
Installazione di Fail2ban su Debian #
Il pacchetto Fail2ban è incluso nei repository Debian 10 predefiniti. Per installarlo, esegui il seguente comando come root o utente con privilegi sudo:
sudo apt update
sudo apt install fail2ban
Una volta completato, il servizio Fail2ban si avvierà automaticamente. Puoi verificarlo controllando lo stato del servizio:
sudo systemctl status fail2ban
L'output sarà simile a questo:
● fail2ban.service - Fail2Ban Service
Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2021-03-10 18:57:32 UTC; 47s ago
...
Questo è tutto. A questo punto, hai Fail2Ban in esecuzione sul tuo server Debian.
Configurazione Fall2ban #
L'installazione predefinita di Fail2ban include due file di configurazione, /etc/fail2ban/jail.conf
e /etc/fail2ban/jail.d/defaults-debian.conf
. Non dovresti modificare questi file in quanto potrebbero essere sovrascritti quando il pacchetto viene aggiornato.
Fail2ban legge i file di configurazione nel seguente ordine. Ogni .local
il file sovrascrive le impostazioni da .conf
file:
/etc/fail2ban/jail.conf
/etc/fail2ban/jail.d/*.conf
/etc/fail2ban/jail.local
/etc/fail2ban/jail.d/*.local
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 copiando il file 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 autorizzati #
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 #
bantime
, findtime
e maxretry
le opzioni impostano 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. La maggior parte degli utenti preferisce 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 e-mail, 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
bandisce l'IP offensivo e invia un'e-mail con un rapporto whois. Se desideri includere i log pertinenti 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 il concetto di carcere. 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 di jail. Per impostazione predefinita, è abilitata solo la ssh jail.
Per abilitare una jail, devi aggiungere enabled = true
dopo il titolo di carcere. L'esempio seguente mostra come abilitare il postfix jail:
[postfix]
enabled = true
port = smtp,ssmtp
filter = postfix
logpath = /var/log/mail.log
Le impostazioni di cui abbiamo discusso nella sezione precedente possono essere impostate per jail. Ecco un esempio:
/etc/fail2ban/jail.local[sshd]
enabled = true
maxretry = 3
findtime = 1d
bantime = 4w
ignoreip = 127.0.0.1/8 11.22.33.44
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, invoca il comando con -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:
-
Ottieni lo stato attuale del server:
sudo fail2ban-client status
-
Controlla lo stato della prigione:
sudo fail2ban-client status sshd
-
Sbannare un IP:
sudo fail2ban-client set sshd unbanip 11.22.33.44
-
Ban un IP:
sudo fail2ban-client set sshd banip 11.22.33.44