Blocco tentativi di accesso non autorizzati – Fail2ban
Quando si installano server pubblici si è inevitabilmente soggetti a tentativi di accesso non autorizzati.
Una delle tecniche utilizzate è quella del brutal force attack, ovvero il tentativo ripetuto numerose volte di accedere al server provando varie combinazioni di utenti e password.
Il primo modo per difendersi è avere delle password serie che utilizzino lettere (MAISUCOLE e minuscole), numeri e caratteri speciali (!£$ …).
Esiste però anche la possibilità di bloccare gli indirizzi IP da cui provengono ripetuti tentativi di accesso non autorizzati tramite fail2ban.
Su Ubuntu Linux si installa con il seguente comando:
sudo apt-get install fail2ban
quindi si configura modificando il file /etc/fail2ban/jail.conf
Questo file ha delle impostazioni globali e delle sezioni per personalizzare il comportamento per servizi diversi.
Per esempio, se vogliamo utilizzare fail2ban per bloccare i tentativi di accesso su un server FTP realizzato con vsftpd dobbiamo fare le seguenti modifiche nella sezione relativa a [vsftpd]:
enabled = true # abilita il controllo sulle porte usate da questo servizio maxretry = 3 # numero ammesso di tentativi di accesso falliti. Bantime = 900 # indica il tempo in secondi in cui l'IP viene “bannato” (cioè bloccato)
Con queste impostazioni l'IP viene bannato per 15 minuti (900 secondi) dopo 3 tentativi di login falliti con un utente esistente (ATTENZIONE: i tentativi di accesso con utenti inesistenti non vengono conteggiati da fail2ban). Trascorsi i 15 minuti può riconnettersi.
Terminata la configurazione del servizio bisogna riavviarlo con il comando: con:
sudo /etc/init.d/fail2ban restart
Il file di log dove controllare il tutto è /var/log/fail2ban.log dove eventuali IP bannati verranno mostrati con la seguente registrazione:
2011-01-15 15:42:10,277 fail2ban.actions: WARNING [vsftpd] Ban 87.9.81.181
Quando fail2ban decide di bloccare un IP non fa altro che aggiungere una riga DROP nel firewall iptables
Per controllare eventuali IP bannati in quel momento è sufficiente dare il comando
sudo iptables -L
viene listata l'attuale configurazione di Iptables. Se in quel momento ci sono IP bannati li si trova sotto la sezione Chain fail2ban-vsftpd
Esempio:
........ Chain fail2ban-ssh (1 references) target prot opt source destination RETURN 0 -- anywhere anywhere Chain fail2ban-vsftpd (1 references) target prot opt source destination DROP 0 -- host35-78-dynamic.0-87-r.retail.telecomitalia.it anywhere RETURN 0 -- anywhere anywhere ........
se si volesse riabilitare un host bannato senza attendere i 15 minuti di tempo è sufficiente verificare il numero di riga DROP all'interno della sezione e dare il seguente comando:
sudo iptables -D fail2ban-ssh <num_riga>
in questo caso c'è un'unico IP (o nome host) quindi la riga è la nr. 1 per la sezione che interessa. Quindi il comando per riabilitarlo sarà:
sudo iptables -D fail2ban-ssh 1