Installazione e configurazione di Fail2Ban su CentOS 7
In questo tutorial andremo a descrivere come installare e configurare Fail2Ban su CentOS 7.
Iniziamo partendo da una macchina CentOS 7 preinstallata ( per l’installazione seguire il seguente articolo) ed aggiorniamola
yum update
CentOS Linux release 7.5.1804 (Core)
aggiungiamo il repository epel
yum install epel-release vim
ed installiamo Fail2Ban
yum install fail2ban
avviamo il servizio e impostiamolo in modo tale da avviarsi anche dopo il riavvio della macchina
systemctl start fail2ban
systemctl enable fail2ban
La fase di configurazione del software Fail2ban passa dal file di configurazione jail.local
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
vim /etc/fail2ban/jail.local
i parametri generali da considerare sono sotto la direttiva [DEFAULT], ad esempio i più noti
# Indirizzi da non considerare durate l’analisi
ignoreip = 127.0.0.1/8
# Quanto tempo rimane bannado l’indirizzo ip
bantime = 600
# Tentativi dopo il ban
maxretry = 5
consideriamo il caso di ban attraverso la porta SSH, sempre dal file di configurazione jail.local ricerchiamo la parola ssh, avremo
[sshd]
enable=true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
dopo avere fatto queste modifiche riavviamo il demone
systemctl restart fail2ban
adesso supponiamo di accedere tramite ssh al server, sbagliando volutamente la password attraverso l’utente root per 5 volte (maxretry), avremo che al quindo tentativo la sessione andrà in timeout, infatti se l’installazione è stata fatta da VirtualBox potremo controllare tramite console che il server è sempre attivo, ma il nostro indirizzo ip è stato bannato per l’accesso tramite ssh.
Dalla tabella di iptables, avremo questo risultato
Chain f2b-sshd ( 1 references)
target prot opt source destination
REJECT all — ip_macchina_client anywhere reject-with icmp-port-unreachable
dopo 600 secondi (bantime) potremo di nuovo provare a ricollegarci.
Possiamo avere evidenza del tutto dail log
vim /var/log/fail2ban.log
2018-12-03 15:04:26,810 fail2ban.actions [2827]: NOTICE [sshd] Ban ip_macchina_client
dopo 600 secondi avremo
2018-12-03 15:14:26,941 fail2ban.actions [2827]: NOTICE [sshd] Unban ip_macchina_client
I parametri inseriti precedentemente sono in generale per tutti i servizi, ma se volessimo avere un valore diverso per singolo servizio, bisogna inserirlo sotto la direttiva del servizio, ad esempio
[sshd]
enable=true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
bantime = 700