Fail2ban: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
m (Nuova pagina: {{stub}} '''Fail2ban''' è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di brute force via ssh. Questo genere di ...)
 
Riga 20: Riga 20:
== 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
Il file di configurazione è diviso per sezioni: Ogni sezione inizia ha una struttura simile a:
<pre>
[nomesezione]
parametro = valore
parametro2 = valore
parametro3 = valore
</pre>
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:
; <tt>ignoreip = 127.0.0.1</tt> : permette di indicare un elenco di ip su cui non verrà fatto il controllo. Utile per non ''tagliare fuori'' accidentalmente l'ufficio
; <tt>bantime  = 600</tt> : il tempo, in secondi, per cui un host verrà bannato
; <tt>maxretry = 3</tt> : il numero massimo di tentativi dopo cui effettuare il ban dell'host
; <tt>destemail = root@localhost</tt> : l'indirizzo e-mail a cui inviare la mail di notifica
; <tt>action = iptables[name=%(__name__)s, port=%(port)s]</tt> : l'azione da prendere. Quella di default blocca semplicemente l'accesso alla porta del servizio all'ip che ha sforato il numero di tentativi massimo.
; <tt>enabled = true</tt> : abilita i controlli all'interno della sezione
; <tt>port    = ssh</tt> : indica la porta da bloccare
; <tt>filter  = sshd</tt> : indica il filtro da utilizzare (contenuto all'interno della directory <tt>/etc/fail2ban/filter.d</tt> )
; <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.
<pre>action = iptables[name=%(__name__)s, port=%(port)s]
</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
<pre>
action = iptables[name=%(__name__)s, port=%(port)s]
        mail-whois[name=%(__name__)s, dest=%(destemail)s]
</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.
<pre>action = iptables[name=%(__name__)s, port=%(port)s]
          mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]
</pre>


[[Categoria:Sicurezza]]
[[Categoria:Sicurezza]]
[[Categoria:Networking]]
[[Categoria:Networking]]

Versione delle 11:45, 2 giu 2008

Document-page-setup.png Attenzione: questo articolo è ancora incompleto e in fase di scrittura da parte del suo autore.

Sentitevi liberi di contribuire, proponendo modifiche alla guida tramite l'apposita pagina di discussione, in modo da non interferire con il lavoro portato avanti sulla voce. Per altre informazioni si rimanda al template.



Fail2ban è un software che è nato per permettere di bloccare gli host che stanno tentando di effettuare un attacco di brute force via ssh.

Questo genere di attacco si basa su continui tentativi di accesso, provando o l'username root con password probabili (come password, root, toor e così via..) oppure tramite coppie di username/password conosciute (create, ad esempio, da malware o da rootkit...).

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, /var/log/auth.log) 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:

# apt-get install fail2ban

Configurazione

Il file di configurazione è /etc/fail2ban/jail.local e contiene i parametri necessari al funzionamento del software

Il file di configurazione è diviso per sezioni: Ogni sezione inizia ha una struttura simile a:

[nomesezione]
parametro = valore
parametro2 = valore
parametro3 = valore

Ogni sezione, quindi, identificherà un controllo da eseguire. Fa eccezione la prima: [DEFAULT], 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:

ignoreip = 127.0.0.1
permette di indicare un elenco di ip su cui non verrà fatto il controllo. Utile per non tagliare fuori accidentalmente l'ufficio
bantime = 600
il tempo, in secondi, per cui un host verrà bannato
maxretry = 3
il numero massimo di tentativi dopo cui effettuare il ban dell'host
destemail = root@localhost
l'indirizzo e-mail a cui inviare la mail di notifica
action = iptables[name=%(__name__)s, port=%(port)s]
l'azione da prendere. Quella di default blocca semplicemente l'accesso alla porta del servizio all'ip che ha sforato il numero di tentativi massimo.
enabled = true
abilita i controlli all'interno della sezione
port = ssh
indica la porta da bloccare
filter = sshd
indica il filtro da utilizzare (contenuto all'interno della directory /etc/fail2ban/filter.d )
logpath = /var/log/auth.log
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.

action = iptables[name=%(__name__)s, port=%(port)s]

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

action = iptables[name=%(__name__)s, port=%(port)s]
         mail-whois[name=%(__name__)s, dest=%(destemail)s]

Filtraggio con Notifica Avanzata

Come prima, ma in aggiunta sono presenti anche le linee del file di log che hanno fatto scattare l'allarme.

action = iptables[name=%(__name__)s, port=%(port)s]
          mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]