post h1 Fail2ban software nato per gli host che stanno tentando di effettuare un attacco di brute force via SSH. ~ Ubuntulandiapost h1

ottobre 04, 2013

Fail2ban software nato per gli host che stanno tentando di effettuare un attacco di brute force via SSH.

| No comment

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.

fail2ban

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, attraverso una regola di iptables, 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).

ATTENZIONE
Quando si dice che l'IP viene bloccato su un determinato servizio, la macchina resta aperta sugli altri.

per esempio  : se fail2ban blocca un attacco su FTP, blocca all'IP l'accesso alla porta 21 lasciando aperte le altre sessioni possibili come SSH, HTTP o altre porte aperte alla comunicazione.

Installazione.

L'installazione è molto semplice:

# apt-get install fail2ban

A questo punto, lanciando il comando:

# iptables -L

dovreste vedere una nuova chain relativa a fail2ban.

fail2ban-week

Configurazione.

Fail2ban è già configurato e pronto all'uso, ma alcuni punti hanno bisogno di piccole modifiche. I file di configurazione sono /etc/fail2ban/fail2ban.conf e /etc/fail2ban/jail.conf: il primo contiene i parametri di configurazione globali (ad esempio potrete specificare in quale file di log verranno registrati gli avvisi di fail2ban), mentre il secondo contiene i parametri necessari al funzionamento del software.

Il file di configurazione /etc/fail2ban/jail.conf è 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.
Per attivare un filtro è quindi necessario solamente portarsi nella sezione del filtro da attivare e variare il valore della direttiva di abilitazione da:

enabled = false

a

enabled = true

Attivazione di nuovi filtri.

Server di posta Dovecot

Creare il file di filtro /etc/fail2ban/filter.d/dovecot-pop3imap.conf:

[Definition]
failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =

Aggiungere questa sezione al file /etc/fail2ban/jail.conf:

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,imap", protocol=tcp]
logpath = /var/log/maillog
maxretry = 10
findtime = 1200
bantime = 1200

Server di Posta Postfix .

Creare il file di filtro /etc/fail2ban/filter.d/postfix-auth.conf:

[Definition]
failregex = (?i): warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD$
ignoreregex =

Aggiungere questa sezione al file /etc/fail2ban/jail.conf:

[postfix-auth]
enabled  = true
port     = smtp,ssmtp
filter   = postfix-auth
logpath  = /var/log/syslog

Creare il file di filtro /etc/fail2ban/filter.d/postfix-sasl.conf:

[Definition]
failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGE$
ignoreregex =

Aggiungere questa sezione al file /etc/fail2ban/jail.conf:

[postfix-sasl]
enabled  = true
port     = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter   = postfix-sasl
logpath  = /var/log/mail.log

fail2ban  statistics

Apache mod_security.

Se avete configurato il modulo di sicurezza di Apache mod_security potreste voler attivare un filtro anche per lui.
Create il file di configurazione /etc/fail2ban/filter.d/mod_sec.conf

# Fail2Ban configuration file for mod_security
[Definition]
failregex = \[.*?\]\s[\w-]*\s<HOST>\s
ignoreregex =

Aggiungete questa sezione al file /etc/fail2ban/jail.conf:

[mod_sec]
enabled  = true
filter   = mod_sec
action   = iptables-multiport[name=ModSec, port="http,https"]
simple-log[name=modsec]
logpath  = /var/log/httpd/modsec_audit.log
maxretry = 3

Server FTP

All'interno del file /etc/fail2ban/jail.conf è presente una sezione FTP in cui basta abilitare quello che si desidera.

# FTP servers
#

[vsftpd]

enabled  = false
port     = ftp,ftp-data,ftps,ftps-data
filter   = vsftpd
logpath  = /var/log/vsftpd.log
# or overwrite it in jails.local to be
# logpath = /var/log/auth.log
# if you want to rely on PAM failed login attempts
# vsftpd's failregex should match both of those formats
maxretry = 6

[proftpd]

enabled  = true
port     = ftp,ftp-data,ftps,ftps-data
filter   = proftpd
logpath  = /var/log/secure.log
maxretry = 3

[wuftpd]

enabled  = false
port     = ftp,ftp-data,ftps,ftps-data
filter   = wuftpd
logpath  = /var/log/auth.log
maxretry = 6

Nel caso di proftpd e wuftpd sono già presenti i filtri in /etc/fail2ban/filter.d

Si può aggiungere al filtro di proftpd questa stringa in caso di ban non effettuati su tentativi di accesso non consentito:

USER S+: no such user found from S* ?[] to S+s*$

SSH .

All'interno del file /etc/fail2ban/jail.conf è presente una sezione SSH in cui basta abilitare quello che si desidera.

[ssh]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 2

[ssh-ddos]

enabled  = true
port     = ssh
filter   = sshd-ddos
logpath  = /var/log/auth.log
maxretry = 2

se nella configurazione di SSH è stata impostata una porta diversa da quella di default (22), inserire il numero della porta usata nel campo port al posto del valore ssh , se per esempio si è scelta la porta 2856 :

port     = 2856

Attivazione dei nuovi filtri.

Dopo ogni modifica del file di configurazione /etc/fail2ban/jail.conf occorre riavviare il demone di fail2ban:

# /etc/init.d/fail2ban reload

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. Esempio: 192.168.1.0/24 consente l'accesso a tutta la lan 192.168.1.XXX;
  • 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;

Gestione di Fail2ban.

Esistono due comandi accessori che permettono la programmazione del servizio o la visualizzazione dello status di jailing (monitoraggio) dei servizi:

# fail2ban-client status
Status
|- Number of jail: 3
`- Jail list: proftpd, ssh, apache-multiport

ci elenca il numero di Jail attive.
Per listare lo stato di una JAIL specifica si utilizzi il comando:

# fail2ban-client status ssh
Status for the jail: ssh
|- filter
| |- Currently failed: 0
| `- Total failed: 8
`- action
|- Currently banned: 0
| `- IP list: []
`- Total banned: 1

Per disabilitare dinamicamente una JAIL, ad esempio ssh, si usi il comando:

# fail2ban-client set ssh idle off
False

Per attivare una nuova jail:

# fail2ban-client add apache
Added jail apache
# fail2ban-client start apache
Jail started

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]

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

# /etc/init.d/fail2ban restart

Fail2ban2

Se ti è piaciuto l'articolo , iscriviti al feed cliccando sull'immagine sottostante per tenerti sempre aggiornato sui nuovi contenuti del blog:

, , , , ,

Nessun commento:

Posta un commento

Caricamento in corso...

Ultimi post pubblicati

Archivio

Ubuntulandia in Instagram

>center>

Post Più Popolari