Come promesso eccovi in questo articolo dove parlo di fail2ban, eccovi la mia regola per bloccare i tentativi di utilizzo imporprio del vostro asterisk per usare i vostri provider SIP.
Per prima cosa, se non vi serve l’accesso dall’esterno al vostro asterisk, non fatelo 😀 che vivrete meglio, dato che degli attacchi sono sempre più comuni.
Tag: brute force
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.