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, 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). ATTENZIONEper 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.
Quando si dice che l'IP viene bloccato su un determinato servizio, la macchina resta aperta sugli altri.
Installazione.
L'installazione è molto semplice:
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: parametro = valore
parametro2 = valore
parametro3 = valore
[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:
/etc/fail2ban/filter.d/dovecot-pop3imap.conf
: failregex = (?: pop3-login|imap-login): (?:Authentication failure|Aborted login \(auth failed|Disconnected \(auth failed).*rip=(?P<host>\S*),.*
ignoreregex =
/etc/fail2ban/jail.conf
: 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
/etc/fail2ban/filter.d/postfix-auth.conf
: failregex = (?i): warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD$
ignoreregex =
/etc/fail2ban/jail.conf
: enabled = true
port = smtp,ssmtp
filter = postfix-auth
logpath = /var/log/syslog
/etc/fail2ban/filter.d/postfix-sasl.conf
: failregex = (?i): warning: [-._\w]+\[<HOST>\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGE$
ignoreregex =
/etc/fail2ban/jail.conf
: enabled = true
port = smtp,ssmtp,imap2,imap3,imaps,pop3,pop3s
filter = postfix-sasl
logpath = /var/log/mail.log
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 =
/etc/fail2ban/jail.conf
: 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. #
[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
/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:
/etc/fail2ban/jail.conf
è presente una sezione SSH in cui basta abilitare quello che si desidera. 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
/etc/fail2ban/jail.conf
occorre riavviare il demone di fail2ban: 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;
Esistono due comandi accessori che permettono la programmazione del servizio o la visualizzazione dello status di jailing (monitoraggio) dei servizi:
Status
|- Number of jail: 3
`- Jail list: proftpd, ssh, apache-multiport
Per listare lo stato di una JAIL specifica si utilizzi il comando:
Status for the jail: ssh
|- filter
| |- Currently failed: 0
| `- Total failed: 8
`- action
|- Currently banned: 0
| `- IP list: []
`- Total banned: 1
False
Added jail apache
# fail2ban-client start apache
Jail started
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
mail-whois[name=%(__name__)s, dest=%(destemail)s]
mail-whois-lines[name=%(__name__)s, dest=%(destemail)s, logpath=%(logpath)s]
Nessun commento:
Posta un commento
Non inserire link cliccabili altrimenti il commento verrà eliminato. Metti la spunta a Inviami notifiche per essere avvertito via email di nuovi commenti.