In questi giorni stavo ricevendo su diversi server attacchi di tipo “brute force” su SSH. Per risolvere il problema ho deciso di utilizzare fail2ban. E’ scritto in python e funziona su tutti i sistemi linux dove è installato iptables.
Questo è il sito web ufficiale:
Questa utile applicazione effettua una scansione del file di log ad esempio /var/log/apache/error_log e utilizzando iptables blocca tutti gli ip dai quali provengono attacchi o operazioni non autorizzate
La configurazione è molto semplice:
- Installazione: apt-get install fail2ban oppure yum -y install fail2ban
- Creazione del file di configurazione da quello d’esempio: cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
- Configurazione del file: nano /etc/fail2ban/jail.conf
- Riavvio del servizio: service fail2ban restart
- Configurare fail2ban per l’avvio automatico anche dopo un reboot: chkconfig –level 23 fail2ban on
Consiglio di modificare la sezione “ignoreip” del file di configurazione jail.conf , specificando che fail2ban dovrà ignorare un determinato ip oppure una subnet, ad esempio il vostro ip <X.X.X.X> oppure l’intera subnet della vostra rete aziendale <X.X.X.X/24>.
Nel file di configurazione di default viene protetto il servizio SSH
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
[ssh-iptables]
enabled = true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], sender=fail2ban@examp$
logpath = /var/log/secure
maxretry = 5
Dopo aver riavviato il servizio, se l’attacco è ancora in attivo, digitando il comando: tail /var/log/secure
Failed password for root from 150.242.215.2 port 16791 ssh2
Failed password for root from 150.242.215.2 port 24683 ssh2
Failed password for root from 150.242.215.2 port 21408 ssh2
Failed password for root from 150.242.215.2 port 21643 ssh2
Failed password for root from 150.242.215.2 port 23570 ssh2
sudo: root : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/sbin/iptables -L
sudo: root : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/sbin/iptables -L
sudo: root : TTY=pts/1 ; PWD=/var/log ; USER=root ; COMMAND=/sbin/iptables -L
è possibile visualizzare l’applicazione della regola automatica in iptables
Inoltre digitando il comando: iptables -L
Chain fail2ban-SSH (1 references)
target prot opt source destination
REJECT all — 150.242.215.2 anywhere reject-with icmp-port-unreachable
RETURN all — anywhere anywhere
è possibile osservare che è stata creata in automatico una regola che nega le connessioni da quell’ip
Per testare il funzionamento e generare un attacco alla porta SSH è possibile utilizzare il tool Hydra:
https://www.thc.org/thc-hydra/
dopo averlo installato con il comando:
apt-get -y install hydra
a aver scaricato un dizionario cone delle parole da utilizzare come password, ad esempio da qui:
http://www.insidepro.com/dictionaries.php
è possibile simulare l’attacco con il comando:
hydra -l root -P <FILE CONTENENTE LE PASSWORD> <IP DEL SERVER DA TESTARE> ssh