4 069
contributi
Nessun oggetto della modifica |
|||
Riga 1: | Riga 1: | ||
=Introduzione= | |||
'''Fail2ban''' ([http://www.fail2ban.org Sito ufficiale]) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di [[brute force]] via [[ssh]]. | '''Fail2ban''' ([http://www.fail2ban.org Sito ufficiale]) è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di [[brute force]] via [[ssh]]. | ||
Riga 5: | Riga 6: | ||
Con le ultime versioni, però, si è ampliato ed è in grado di coprire svariati servizi (che andranno, però, configurati manualmente), come ad esempio apache, vsftpd, postfix, etc... | Con le ultime versioni, però, si è ampliato ed è in grado di coprire svariati servizi (che andranno, però, configurati manualmente), come ad esempio apache, vsftpd, postfix, etc... | ||
= Il funzionamento = | |||
Il funzionamento è semplice: il software si occupa di effettuare il parsing di alcuni file di log (nel caso di ssh, <tt>/var/log/auth.log</tt>) che contengono le informazioni relative agli accessi falliti. Se vengono contati un numero di tentativi maggiori ad una soglia, l'indirizzo IP viene bloccato per un tempo impostato e non potrà più accedere al servizio in ascolto su quella porta (ma potrà ancora accedere a quelli sulle altre, cosa molto importante nel caso di indirizzi IP condivisi, come avviene per Fastweb o all'interno delle reti aziendali). | Il funzionamento è semplice: il software si occupa di effettuare il parsing di alcuni file di log (nel caso di ssh, <tt>/var/log/auth.log</tt>) che contengono le informazioni relative agli accessi falliti. Se vengono contati un numero di tentativi maggiori ad una soglia, l'indirizzo IP viene bloccato per un tempo impostato e non potrà più accedere al servizio in ascolto su quella porta (ma potrà ancora accedere a quelli sulle altre, cosa molto importante nel caso di indirizzi IP condivisi, come avviene per Fastweb o all'interno delle reti aziendali). | ||
= Installazione = | |||
L'installazione è semplice: | L'installazione è semplice: | ||
<pre> | <pre> | ||
Riga 16: | Riga 15: | ||
</pre> | </pre> | ||
= Configurazione = | |||
Il file di configurazione è <tt>/etc/fail2ban/jail.local</tt> e contiene i parametri necessari al funzionamento del software | Il file di configurazione è <tt>/etc/fail2ban/jail.local</tt> e contiene i parametri necessari al funzionamento del software | ||
Riga 29: | Riga 28: | ||
Ogni sezione, quindi, identificherà un controllo da eseguire. Fa eccezione la prima: <tt>[DEFAULT]</tt>, in quanto contiene i valori di default che verranno usati nelle sezioni successive; ovviamente potranno essere ridefiniti per adattarli ai propri gusti. | Ogni sezione, quindi, identificherà un controllo da eseguire. Fa eccezione la prima: <tt>[DEFAULT]</tt>, in quanto contiene i valori di default che verranno usati nelle sezioni successive; ovviamente potranno essere ridefiniti per adattarli ai propri gusti. | ||
= I Parametri = | |||
I parametri più importanti sono: | I parametri più importanti sono: | ||
Riga 42: | Riga 41: | ||
; <tt>logpath = /var/log/auth.log</tt> : il file contenente il log da controllare | ; <tt>logpath = /var/log/auth.log</tt> : il file contenente il log da controllare | ||
= Esempi di Azioni = | |||
== Filtraggio semplice == | |||
Questa azione applica semplicemente un filtro in modo che l'host che ha effettuato un numero di tentativi maggiori di quello definito viene fermato. | Questa azione applica semplicemente un filtro in modo che l'host che ha effettuato un numero di tentativi maggiori di quello definito viene fermato. | ||
<pre>action = iptables[name=%(__name__)s, port=%(port)s] | <pre>action = iptables[name=%(__name__)s, port=%(port)s] | ||
</pre> | </pre> | ||
== Filtraggio con Notifica == | |||
Questa regola amplia quella precedente, in quanto manda una mail contenente l'ip ed il [[whois]] dell'ip dell'host che ha fatto scattare l'allarme | Questa regola amplia quella precedente, in quanto manda una mail contenente l'ip ed il [[whois]] dell'ip dell'host che ha fatto scattare l'allarme | ||
<pre> | <pre> | ||
Riga 55: | Riga 54: | ||
</pre> | </pre> | ||
== Filtraggio con Notifica Avanzata == | |||
Come prima, ma in aggiunta sono presenti anche le linee del file di log che hanno fatto scattare l'allarme. | Come prima, ma in aggiunta sono presenti anche le linee del file di log che hanno fatto scattare l'allarme. | ||
<pre>action = iptables[name=%(__name__)s, port=%(port)s] | <pre>action = iptables[name=%(__name__)s, port=%(port)s] | ||
Riga 62: | Riga 61: | ||
= Conclusioni = | = Conclusioni = | ||
Una volta installato, il software è automaticamente attivo | Una volta installato, il software è automaticamente attivo e gira in background come servizio. In caso di modifica del file di configurazione, è necessario effettuare un restart del servizio tramite il comando | ||
<pre> | <pre> | ||
# /etc/init.d/fail2ban restart | # /etc/init.d/fail2ban restart | ||
</pre> | </pre> | ||
=Prova di funzionamento= | |||
Ora volendo potete testare <tt>fail2ban</tt>.<br> | |||
Come esempio ho cercato di accedere al servizio FTP inserendo nome utente e/o pawwsord sbagliate con il comando: | |||
<pre> | |||
fail2ban-regex "file di log" "filtro prescelto" | |||
</pre> | |||
Ad esempio: | |||
<pre> | |||
fail2ban-regex /var/log/secure.log /etc/fail2ban/filter.d/proftpd.conf | |||
</pre> | |||
Si noti che il comando va eseguito con sudo o con i permessi di su.<br/> | |||
L'output di questo comando sarà una cosa del genere: | |||
<pre> | |||
barabba@server:~$ fail2ban-regex /var/log/secure.log /etc/fail2ban/filter.d/proftpd.conf | barabba@server:~$ fail2ban-regex /var/log/secure.log /etc/fail2ban/filter.d/proftpd.conf | ||
Running tests | Running tests | ||
Riga 142: | Riga 141: | ||
However, look at the above section 'Running tests' which could contain important | However, look at the above section 'Running tests' which could contain important | ||
information. | information. | ||
</pre> | |||
Come potete vedere ho aggiunto una regola (numero 5 ) al filtro proftpd.conf : | Come potete vedere ho aggiunto una regola (numero 5 ) al filtro proftpd.conf: | ||
<pre>USER S+: no such user found from S* ?[] to S+s*$</pre> | <pre> | ||
<USER S+: no such user found from S* ?[] to S+s*$ | |||
</ | </pre> | ||
Grazie a questo semplice test potete già testare se fail2ban è in grado di rilevare possibili errori dai vostri file di log , altrimenti non vi resta che modificare i vari filtri in | Con questa riga aggiunta il sistema riesce a bannare gli IP che provano a loggarsi con nome utente sbagliato, cosa che prima non avveniva, e infatti il test non rilevava alcun errore dal file di log. | ||
<br/> | |||
Per finire vi lascio alla mail che vi arriva in caso un IP venga bannato : | Grazie a questo semplice test potete già testare se fail2ban è in grado di rilevare possibili errori dai vostri file di log, altrimenti non vi resta che modificare i vari filtri in <tt>/etc/fail2ban/filter.d/</tt>, oppure cercarne uno che funzioni e aggingerlo alla lista come ho fatto io per il mio file <tt>/etc/fail2ban/filter.d/proftpd.conf</tt>. | ||
<br/> | |||
Per finire vi lascio alla mail che vi arriva in caso un IP venga bannato: | |||
<pre> | |||
Subject: [Fail2Ban] proftpd: banned 58.252.70.99 | Subject: [Fail2Ban] proftpd: banned 58.252.70.99 | ||
From: Fail2Ban | From: Fail2Ban | ||
Riga 188: | Riga 189: | ||
Regards, | Regards, | ||
Fail2Ban | Fail2Ban | ||
</pre> | |||
[[Categoria:Sicurezza]] | [[Categoria:Sicurezza]] | ||
[[Categoria:Firewalling]] | [[Categoria:Firewalling]] |