Sicurezza · 6 min read · Dec 03, 2025
Prevenire Attacchi Brute Force Con Fail2ban Su Mandriva 2008.1
Prevenire Attacchi Brute Force Con Fail2ban Su Mandriva 2008.1
Versione 1.0
Autore: Falko Timme
In questo articolo mostrerò come installare e configurare fail2ban su un sistema Mandriva 2008.1. Fail2ban è uno strumento che osserva i tentativi di accesso a vari servizi, ad es. SSH, FTP, SMTP, Apache, ecc., e se trova tentativi di accesso falliti ripetutamente dallo stesso indirizzo IP o host, fail2ban interrompe ulteriori tentativi di accesso da quell’indirizzo IP/host bloccandolo con una regola del firewall iptables.
Questo documento viene fornito senza alcuna garanzia! Voglio dire che questo non è l’unico modo per impostare un sistema del genere. Ci sono molti modi per raggiungere questo obiettivo, ma questo è il modo che seguo. Non rilascio alcuna garanzia che questo funzionerà per te!
1 Nota Preliminare
Fail2ban è simile a DenyHosts di cui ho parlato in questo tutorial: https://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts, ma a differenza di DenyHosts che si concentra su SSH, fail2ban può essere configurato per monitorare qualsiasi servizio che scrive tentativi di accesso in un file di log, e invece di utilizzare solo /etc/hosts.deny per bloccare indirizzi IP/host, fail2ban può utilizzare iptables e /etc/hosts.deny.
In questo esempio configurerò fail2ban per monitorare i tentativi di accesso al server SSH, al server Proftpd, ai siti web protetti da .htaccess/.htpasswd, a Courier POP3 e Courier IMAP, e a SASL (per l’invio di email). Installerò il pacchetto fail2ban disponibile per Mandriva 2008.1. Viene fornito con una configurazione predefinita, ma sfortunatamente quella configurazione non funziona correttamente per la maggior parte dei servizi sopra menzionati. Pertanto, creerò una configurazione fail2ban personalizzata che ho testato e che funziona per me.
2 Installazione di fail2ban
Prima di installare qualsiasi pacchetto, dobbiamo abilitare i repository main, main_updates, contrib e contrib_updates. Vai su http://easyurpmi.zarb.org/ - dovrebbe darti i comandi necessari per abilitare questi repository. Nel mio caso, ho eseguito
urpmi.addmedia contrib ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/release with media_info/hdlist.czurpmi.addmedia --update contrib_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/contrib/updates with media_info/hdlist.czurpmi.addmedia main ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/release with media_info/hdlist.czurpmi.addmedia --update main_updates ftp://distrib-coffee.ipsl.jussieu.fr/pub/linux/MandrivaLinux/official/2008.1/i586/media/main/updates with media_info/hdlist.czFail2ban può essere installato come segue:
urpmi fail2banPoi avviamo fail2ban:
/etc/init.d/fail2ban startTroverai tutti i file di configurazione di fail2ban nella directory /etc/fail2ban.
3 Configurazione di fail2ban
Il comportamento predefinito di fail2ban è configurato nel file /etc/fail2ban/jail.conf. Dai un’occhiata, non è difficile da capire. C’è una sezione [DEFAULT] che si applica a tutte le altre sezioni a meno che le opzioni predefinite non vengano sovrascritte nelle altre sezioni.
Spiego alcune delle opzioni di configurazione qui:
- ignoreip: Questa è un elenco separato da spazi di indirizzi IP che non possono essere bloccati da fail2ban. Ad esempio, se il computer da cui ti connetti al server ha un indirizzo IP statico, potresti volerlo elencare qui.
- bantime: Tempo in secondi in cui un host è bloccato se è stato catturato da fail2ban (600 secondi = 10 minuti).
- maxretry: Numero massimo di tentativi di accesso falliti prima che un host venga bloccato da fail2ban.
- filter: Si riferisce al file di filtro appropriato in /etc/fail2ban/filter.d.
- action: Si riferisce al file di azione appropriato in /etc/fail2ban/action.d.
- logpath: Il file di log che fail2ban controlla per i tentativi di accesso falliti.
Questo è come appare il mio file /etc/fail2ban/jail.conf:
vi /etc/fail2ban/jail.conf| # Fail2Ban configuration file # # Author: Cyril Jaquier # # $Revision: 617 $ # # The DEFAULT allows a global definition of the options. They can be override # in each jail afterwards. [DEFAULT] # "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not # ban a host which matches an address in this list. Several addresses can be # defined using space separator. ignoreip = 127.0.0.1 192.168.0.99 # "bantime" is the number of seconds that a host is banned. bantime = 600 # A host is banned if it has generated "maxretry" during the last "findtime" # seconds. findtime = 600 # "maxretry" is the number of failures before a host get banned. maxretry = 3 # "backend" specifies the backend used to get files modification. Available # options are "gamin", "polling" and "auto". This option can be overridden in # each jail too (use "gamin" for a jail and "polling" for another). # # gamin: requires Gamin (a file alteration monitor) to be installed. If Gamin # is not installed, Fail2ban will use polling. # polling: uses a polling algorithm which does not require external libraries. # auto: will choose Gamin if available and polling otherwise. backend = auto # This jail corresponds to the standard configuration in Fail2ban 0.6. # The mail-whois action send a notification e-mail with a whois request # in the body. [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, [email protected], [email protected]] logpath = /var/log/auth.log maxretry = 5 [proftpd-iptables] enabled = true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, [email protected]] logpath = /var/log/proftpd/proftpd.log maxretry = 6 [sasl-iptables] enabled = true filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, [email protected]] logpath = /var/log/mail/info.log [apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/log/httpd/*error_log maxretry = 6 [postfix-tcpwrapper] enabled = true filter = postfix action = hostsdeny sendmail[name=Postfix, [email protected]] logpath = /var/log/mail/info.log bantime = 300 [courierpop3] enabled = true port = pop3 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [courierimap] enabled = true port = imap2 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail/info.log maxretry = 5 [ssh-tcpwrapper] enabled = false filter = sshd action = hostsdeny sendmail-whois[name=SSH, [email protected]] ignoreregex = for myuser from logpath = /var/log/auth.log [vsftpd-notification] enabled = false filter = vsftpd action = sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [vsftpd-iptables] enabled = false filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/vsftpd.log maxretry = 5 bantime = 1800 [apache-badbots] enabled = false filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, [email protected]] logpath = /var/www/*/logs/access_log bantime = 172800 maxretry = 1 [apache-shorewall] enabled = false filter = apache-noscript action = shorewall sendmail[name=Postfix, [email protected]] logpath = /var/log/apache2/error_log [ssh-ipfw] enabled = false filter = sshd action = ipfw[localhost=192.168.0.1] sendmail-whois[name="SSH,IPFW", [email protected]] logpath = /var/log/auth.log ignoreip = 168.192.0.1 [named-refused-udp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=udp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 [named-refused-tcp] enabled = false filter = named-refused action = iptables-multiport[name=Named, port="domain,953", protocol=tcp] sendmail-whois[name=Named, [email protected]] logpath = /var/log/named/security.log ignoreip = 168.192.0.1 |
Il mio computer client ha l’indirizzo IP statico 192.168.0.99, e poiché non voglio essere bloccato, l’ho aggiunto all’elenco ignoreip.
Voglio controllare i tentativi di accesso a SSH, Apache, Proftpd, Courier-POP3, Courier-IMAP e Sasl, quindi ho impostato abilitato su true per questi servizi e su false per tutti gli altri servizi. Si prega di notare che alcuni servizi come SSH possono essere bloccati sia da iptables che da TCPWrappers (/etc/hosts.deny). Decidi tu stesso quale metodo preferisci.
Assicurati di sostituire l’indirizzo email [email protected] con il tuo indirizzo email in modo da essere avvisato quando qualcuno viene bloccato da fail2ban.
Se confronti il file con il predefinito /etc/fail2ban/jail.conf, noterai anche che ho cambiato alcuni file di log perché i file di log nel predefinito /etc/fail2ban/jail.conf non sono corretti per Mandriva 2008.1.
Ogni volta che modifichiamo la configurazione di fail2ban, dobbiamo riavviare fail2ban, quindi questo è ciò che facciamo ora:
/etc/init.d/fail2ban restartEcco fatto. Fail2ban registra in /var/log/fail2ban.log, quindi puoi controllare quel file per scoprire se/qual è stato bloccato. Se un host è stato bloccato da fail2ban, appare così:
2008-08-12 17:49:09,466 fail2ban.actions: WARNING [apache-tcpwrapper] Ban 1.2.3.4
2008-08-12 18:08:33,213 fail2ban.actions: WARNING [sasl-iptables] Ban 1.2.3.4
2008-08-12 18:26:37,769 fail2ban.actions: WARNING [courierlogin] Ban 1.2.3.4
2008-08-12 18:39:06,765 fail2ban.actions: WARNING [courierimap] Ban 1.2.3.4Puoi anche controllare il tuo firewall per vedere se ci sono host attualmente bloccati. Basta eseguire
iptables -LPer i servizi che utilizzano TCPWrappers per bloccare gli host, dai un’occhiata a /etc/hosts.deny.
Link
- Fail2ban: http://www.fail2ban.org
- Mandriva: http://www.mandriva.com
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.