Introduzione
Tutti i server esposti a Internet sono a rischio di attacchi di malware. Ad esempio, se si dispone di un software connesso a una rete pubblica, gli aggressori possono utilizzare tentativi di forza bruta per ottenere l'accesso all'applicazione.
Fail2ban è uno strumento open source che aiuta a proteggere la tua macchina Linux dal brute force e da altri attacchi automatici monitorando i log dei servizi per attività dannose. Utilizza espressioni regolari per analizzare i file di registro. Vengono conteggiate tutte le voci che corrispondono ai patterns e quando il loro numero raggiunge una certa soglia predefinita, Fail2ban banna l'IP offensivo per un periodo di tempo specifico. Il firewall di sistema predefinito viene utilizzato come azione di esclusione. Quando il periodo di divieto scade, l'indirizzo IP viene rimosso dall'elenco dei ban.
Questo articolo spiega come installare e configurare Fail2ban su CentOS 8.
Se desideri installare Fail2ban su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.
Connessione al Server
Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:
ssh root@IP_DEL_SERVER
Successivamente sarà necessario inserire la password dell'utente root.
Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:
ssh nome_utente@IP_DEL_SERVER
Successivamente vi verrà chiesto di inserire la password del vostro utente.
La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:
ssh nome_utente@IP_DEL_SERVER -p PORTA
Installare Fail2ban su CentOS
Il pacchetto Fail2ban dipende dai pacchetti disponibili solo nel repository software EPEL. Se il repository non è abilitato sul tuo sistema, abilitalo inserendo il seguente comando come root o utente con privilegi sudo:
sudo yum install epel-release
Adesso è possibile installare Fail2ban, scrivi il seguente comando:
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 Sat 2020-09-12 13:05:53 CEST; 5s ago
Docs: man:fail2ban(1)
Process: 1844 ExecStartPre=/bin/mkdir -p /run/fail2ban (code=exited, status=0/SUCCESS)
Main PID: 1845 (f2b/server)
Tasks: 3 (limit: 12210)
Memory: 11.0M
CGroup: /system.slice/fail2ban.service
└─1845 /usr/bin/python3.6 -s /usr/bin/fail2ban-server -xf start
...
Questo è tutto. A questo punto, hai Fail2Ban in esecuzione sul tuo server CentOS.
Configurare Fail2ban
L'installazione predefinita di Fail2ban viene fornita con 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 file .local
sovrascrive le impostazioni del file .conf
.
Il modo più semplice per configurare Fail2ban è quello di copiare il contenuto del file jail.conf
in jail.local
e modificare il file .local
. Gli utenti più avanzati possono creare un file .local
di configurazione da zero. Il file .local
non deve includere tutte le impostazioni del file .conf
corrispondente, solo quelle che si desidera sovrascrivere.
Crea un file .local
di configurazione dal file jail.conf
predefinito:
sudo cp /etc/fail2ban/jail.{conf,local}
Per iniziare a configurare il server Fail2ban, apri il file jail.local
con il tuo editor di testo. In questo tutorial utilizziamo nano altrimenti puoi utilizzare qualsiasi altro editor come vi/vim:
sudo yum install nano
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 in whitelist
È possibile aggiungere alla direttiva ignoreip
indirizzi IP, intervalli IP o host che si desidera escludere dal divieto. Qui dovresti aggiungere l'indirizzo IP del tuo PC locale e tutte le altre macchine che desideri inserire nella whitelist.
Rimuovi il commento dalla riga che inizia con ignoreip
e aggiungi i tuoi indirizzi IP separati da uno spazio:
Impostazioni divieto
I valori di bantime
, findtime
e le opzioni maxretry
definiscono l'orario e le condizioni di divieto.
bantime
è la durata per la quale l'IP è vietato. Quando non viene specificato alcun suffisso, il valore predefinito è secondi. Per impostazione predefinita, il valore bantime
è impostato su 10 minuti. In generale, la maggior parte degli utenti vorrà impostare un periodo di divieto più lungo. Modifica il valore a tuo piacimento:
Per bannare definitivamente l'IP, usa un numero negativo.
findtime
è la durata tra il numero di errori prima che venga impostato un divieto. Ad esempio, se Fail2ban è impostato per escludere un IP dopo cinque errori (maxretry
, vedi sotto), tali errori devono verificarsi entro la durata findtime
.
maxretry
è il numero di errori prima che un IP venga bannato. Il valore predefinito è impostato su cinque, che dovrebbe andare bene per la maggior parte degli utenti.
Notifiche di posta elettronica
Fail2ban può inviare avvisi e-mail quando un IP è stato bannato. Per ricevere messaggi di posta elettronica, è necessario disporre di un SMTP installato sul server e modificare l'azione predefinita, che vieta solo l'IP %(action_mw)s
, come mostrato di seguito:
%(action_mw)s
metterà al bando l'IP incriminato e invierà un'e-mail con un rapporto whois. Se desideri includere i log pertinenti nell'e-mail, imposta l'azione su %(action_mwl)s
.
Puoi anche modificare gli indirizzi di posta elettronica di invio e ricezione:
Fail2ban Jails
Fail2ban utilizza 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 una serie di jail per diversi servizi. Puoi anche creare le tue configurazioni jail.
Per impostazione predefinita, su CentOS 8, nessuna jail è abilitata. Per abilitare una jail, è necessario aggiungere enabled = true
dopo il titolo della jail. L'esempio seguente mostra come abilitare la jail sshd
:
Le impostazioni che abbiamo discusso nella sezione precedente possono essere impostate per jail.
I filtri si trovano nella directory /etc/fail2ban/filter.d
, archiviati in un file con lo stesso nome della jail. Se disponi di una configurazione personalizzata ed esperienza con le espressioni regolari, puoi ottimizzare 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
Client Fail2ban
Fail2ban viene fornito con uno strumento della riga di comando denominato fail2ban-client
che è possibile utilizzare per interagire con il servizio Fail2ban.
Per visualizzare tutte le opzioni disponibili del comando fail2ban-client
, richiamalo con l'opzione -h
:
fail2ban-client -h
Questo strumento può essere utilizzato per vietare/sbloccare indirizzi IP, modificare le impostazioni, riavviare il servizio e altro ancora. Ecco alcuni esempi:
Controlla lo stato di una jail:
sudo fail2ban-client status sshd
Annulla esclusione di 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
Conclusione
Ti abbiamo mostrato come installare e configurare Fail2ban su CentOS 8. Per ulteriori informazioni sulla configurazione di Fail2ban, visita la documentazione ufficiale.