Fail2ban: differenze tra le versioni

nessun oggetto della modifica
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 =
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 =
 
== Installazione ==
L'installazione è semplice:  
L'installazione è semplice:  
<pre>
<pre>
Riga 16: Riga 15:
</pre>
</pre>


== Configurazione ==
= 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 =
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 ==
= Esempi di Azioni =
=== Filtraggio semplice ===
== 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 ===
== 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 ===
== 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, e gira in [[background]] come servizio. In caso di modifica del file di configurazione, è necessario effettuare un restart del servizio tramite il comando
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==
=Prova di funzionamento=
 
Fino a qui tutto bene , ora volendo potete testare fail2ban
ma prima andiamo a creare gli errori di login nel file di log ,
 
nel mio esempio ho cercato di accedere al servizio FTP
inserendo nome utente e/o pawwsord sbagliate
con il comando:
fail2ban-regex "file di log" "filtro prescelto"
esempio :
fail2ban-regex /var/log/secure.log /etc/fail2ban/filter.d/proftpd.conf
il comando va eseguito con sudo o con i permessi di su.
Riporto ora l'output di queso comando :


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>
adesso con questa riga aggiunta riesce a bannarmi gli IP che provano a loggarsi con nome utente sbagliato cosa che prima non avveniva , infatti il test non rilevava alcun errore dal file di log.
<USER S+: no such user found from S* ?[] to S+s*$
</br>
</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 /etc/fail2ban/filter.d/ oppure cercarne uno che funzioni e aggingerlo alla lista come ho fatto io per il mio file /etc/fail2ban/filter.d/proftpd.conf
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]]