This is an old revision of the document!
fail2ban
fail2ban est un script qui permet de bloquer les IPs (avec iptables) des machines distantes qui dépassent un certains seuil de logins manqués, pour un certain temps. Pour cela, il consulte les log des différents logiciels : serveur SSH, serveur web apache, serveur de mail, serveur FTP, …
Son comportement diffère de celui du fichier /etc/hosts.deny
(qui, pour mémoire, blackliste directement toute connexion issue des IPs renseignées dans ce fichier) : fail2ban, lui, puni les abus, et temporairement.
Installation :
aptitude install fail2ban
Sous Debian Lenny, les fichiers de configuration sont situés dans /etc/fail2ban
:
fail2ban.conf
qui est la configuration du démon fail2banjail.conf
est la configuration par défaut. Il contient une section “[DEFAULT]” qui contient la configuration globale :
[DEFAULT] # liste d'IPs qui ne seront jamais blacklistées ignoreip = 127.0.0.1 192.168.0.0/24 # temps de blocage bantime = 600 # apres 5 tentatives de login infructueuses maxretry = 5 # destinataire des mails de rapports destemail = root@localhost mta = sendmail
…ainsi qu'une section par service ([ssh], [apache], etc…) qui peut surchargé les paramètres globaux :
[ssh] enabled = true port = ssh # nom du filtre qui est déclaré dans le dossier filter = sshd # il est possible de définir soit même des filtres sous forme d'expressions régulières failregex = courierpop3login: LOGIN FAILED.*ip=\[.*:<HOST>\] # chemin vers le fichier de log du démon sshd logpath = /var/log/auth.log # surcharge du paramètre maxretry maxretry = 6
filter.d/*
est le dossier qui contient la définition des expressions régulières permettant de détecter les erreurs d'identification dans les logsaction.d/
est le fichier de description des actions entreprises lorsqu'un seuil de connexion est dépassé.
Après modification d'un fichier de conf, penser à recharger la conf ou le service complet :
/etc/init.d/fail2ban reload # ou /etc/init.d/fail2ban restart
Les alertes de fail2ban sont recueillies dans le fichier de log /var/log/fail2ban.log
par défaut ; lorsqu'il bloque une machine on obtient :
grep WARNING /var/log/fail2ban.log 18:2010-07-08 14:36:54,228 fail2ban.actions: WARNING [ssh] Ban 192.168.0.22 20:2010-07-08 14:46:39,376 fail2ban.actions: WARNING [ssh] Unban 192.168.0.22