Fail2ban
Fail2ban est un script permettant de surveiller les accès réseaux anormaux (tentatives de login répétitives, etc…) par analyse des logs et de réagir à ces accès par un bannissement temporaire de l'adresse IP grâce à iptables.
Pour l'installer, rien de plus simple :
sudo apt-get install fail2ban
Configuration
Pour éditer la configuration
sudo vi /etc/fail2ban/jail.conf
Paramètres de configuration jail
Si vous désirez recevoir un mail avec les logs des bans modifier la ligne action = %(action_)s par
action = %(action_mwl)s
Liste des adresses IP de confiance à ignorer par fail2ban, par exemple :
ignoreip = 127.0.0.1 192.168.0.0/24
Temps de bannissement en secondes :
bantime = 600
Nombre d'essais autorisés avant bannissement :
maxretry = 5
Adresse e-mail de destination des notifications (laisser par défaut si vous utilisez logwatch)
destemail = root@localhost
Paramètres de configuration par section
Les paramètres cités ci dessus sont surchargeables dans chaque section.
Activer le monitoring pour la section concernée :
enabled = true
Sélectionner le port tcp à surveiller, exemple :
port = ssh
Filtre utilisé pour analyser le log (voir dans le dossier /etc/fail2ban/filter.d pour les filtres), exemple :
filter = sshd
Sections utilisées couramment
ssh | Protège contre le bruteforce par SSH |
apache | Protège contre le bruteforce de type accès par fichier .htpasswd. |
apache-noscript | |
apache-overflows | Protège contre les attques de type overflow sur Apache |
proftpd | Protège contre le bruteforce par FTP sur ProFTP |
Sections optionnelles
Apache Bad Bots
Protège contre le parsing par des bots, le filtre existe par défaut.
ATTENTION : le filtre peut dans certains cas bloquer les bots de Google
[apache-badbots] enabled = true port = http,https bantime = 86400 filter = apache-badbots logpath = /var/log/apache*/*error.log maxretry = 1
Anti w00tw00t
Permet de filtrer les attaques / parsing de type w00tw00t :
vi /etc/fail2ban/filter.d/apache-w00tw00t.conf
on y insère le code suivant
#<HOST> - - [11/Jan/2010:14:56:27 +0200] "GET /w00tw00t.at.ISC.SANS.DFind:) HTTP/1.1" 400 326 [Definition] # Option: failregex # Notes.: regex to match the w00tw00t scan messages in the logfile. The # host must be matched by a group named "host". The tag "<HOST>" can # be used for standard IP/hostname matching. # Values: TEXT failregex = ^<HOST> -.*"GET \/w00tw00t\.at\.ISC\.SANS\.DFind\:\).*".* # Option: ignoreregex # Notes.: regex to ignore. If this regex matches, the line is ignored. # Values: TEXT ignoreregex =
on active la règle
vi /etc/fail2ban/jail.conf
[apache-w00tw00t] enabled = true filter = apache-w00tw00t port = http,https logpath = /var/log/apache*/*access.log maxretry = 1 bantime = 86400
Exécution
Après avoir modifié les règles, relancez fail2ban :
sudo service fail2ban restart