Fail2Ban Guida all’uso

Fail2ban è nato per bloccare i tentativi di connessione SSH degli host che tentano di connettersi continuamente per provare user e password differenti (di solito basati su dizionari) per connettersi (BRUTE FORCE). Con gli anni sono stati aggiunte la possibilità di verificare connessione ad altri servizi che vengono attaccati con lo stesso procedimento. Il funzionamento é semplice ed efficace allo stesso tempo. Analizzando i files di logs si riesce a capire i tentavi di brute force e li blocca per un periodo predeterminato, bloccando gli IP incriminati utilizzando dei comandi IPTABLES.

Cominciamo con lo specificare che fail2ban è composto da due programmi, il server che monitorizza i log e usa un socket unix per parlare con il client e passargli le informazioni in tempo reale, ed il client che è il frontend ed interroga il server.

Il server può essere fatto partire in modalità daemon con l’opzione -b per background ed in debug modo con l’opzione -f foreground e -s per dire che file usare per il socket unix.

Con il client possiamo variare il dettaglio del log, leggere la configurazione, ricaricala, ed altro.

Ora passiamo al divertimento e cominciamo ad installare l’applicativo. Personbalmente uso CentOS e di conseguenza illustrerò il procedimento su CentOS, su Ubunto o altre distribuzioni, le modalità ed i percorsi potrebbero essere differenti ma la configurazione è identica.

yum install fail2ban

Ora che l’abbiamo installato, editiamo il file di configurazione

vim /etc/fail2ban/jail.conf

I parametri più importanti

PARAMETRO DESCRIZIONE
ignoreip Lista di IP da ignorare, IP possono essere inseriti con il netmask /24 per esempio
bantime Tempo in secondi per il quale non accettiamo piu connessioni dal HOST
findtime Tempo di reset dei tentativi, dopo X secondi il contatore del retry è resettato
maxretry Numero di tentativi massimo in un intervallo findtime
action Cosa fare quando si raggiunge il maxretry, normalmente si blocca la porta a quel IP
port Il servizio o meglio la porta che usa quel servizio che vogliamo controllare
filter La regola di filtro che applichiamo ai log in /etc/fail2ban/filter.d
logpath Naturalmente il log da monitorare e ricordiamoci di attivare il daemon per scrivere le info necessarie

Ora che abbiamo dato alcuni parametri, partiamo con una sezione

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
logpath  = /var/log/auth.log
maxretry = 5

Per apache

[apache]
enabled = true
port    = http,https
filter  = apache-auth
logpath = /var/log/apache*/*error.log
maxretry = 6

E cosi per tutti gli altri
Il parametro che dobbiamo commentare è action, qui diciamo di bloccare la porta ssh, nello specifico con il protocollo tcp, usando lo script iptables.conf che si trova in /etc/fail2ban/action.d.

Possiamo accodare più azioni, per esempio mail-whois-lines che permette di inviare per email delle informazioni supplementari come sapere chi ha tentato la connessione e la linea del log interessata.

Di default vengono forniti differenti filti come apache, webmin, postfix ed altri, e possiamo sempre crearne di nuovi, lo stesso vale per le azioni.

Ora passiamo a dei comandi interessanti

per vedere tutta la configurazione con eventuali warning usiamo il comando

fail2ban-client -d

Possiamo testare le espressioni regolari di un filtro

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf

Per vedere chi è stato bannato

iptables -L

Se vogliamo eliminare un IP bannato e renderlo riutilizzabile, senza attendere il tempo settato in bantime. Possiamo dare il seguente comando

iptables -D

Il nome della catena potrebbe essere fail2ban-ssh nel caso che l’action sia avvenuta per un filtro ssh.

Per ora ho finito, come vedente niente di difficile, come avevo detto all’inizio, semplice ma efficace. Quest’articolo vuole parlare di questo software, non nel dettaglio, per farvi conoscere che esiste uno strumento utile ed interessante. Inoltre, arriva già preconfigurato e pronto all’uso. Quello che dovete fare e capire i parametri e personalizzarli.

Per il momento è tutto, nelle prossime settimane cercherò di fare un filtro per asterisk e di postarlo.

6 thoughts on “Fail2Ban Guida all’uso”

  1. Ciao, senti ti chiedo una cortesia, se io avessi un IP ese: 55.44.33.22 che vorrei reintegrare quale istruzione dovrei usare ? Non ho capito bene l’utilizzo di iptables -D, potresti farmi un esempio ? Grazie.

  2. Salve, si puo’ utilizzarlo anche per proteggere i tentativi di accesso alle caselle email pop3/imap/smtp?
    Attualmente ho centos con qmail

    1. Certamente, se i tentativi vengono loggati puoi farlo creandoti dei filtri, io l’avevo usato per roundcoube

Leave a Reply

Your email address will not be published. Required fields are marked *