Ceci est une ancienne révision du document !
Fail2Ban est un petit utilitaire très pratique pour bloquer les attaques brute force inhérentes à toute machine directement accessible sur Internet.
Le principe est simple :
les journaux de logs sont analysés en permanence
en cas d'échec trop importants dans une courte période, l'IP source est bloquée temporairement via iptables
à la fin de la période de ban, l'IP est à nouveau autorisée
L'installation est réalisée sur Debian en ajoutant le paquet :
La structure de la configuration de fail2ban est la suivante :
/etc/fail2ban/jail.conf constitue le majeure partie de la configuration, notamment les services à protéger.
/etc/fail2ban/filter.d/ contient les filtres appliqués sur les logs afin d'identifier une tentative d'attaque
/etc/fail2ban/action.d/ contient les actions utilisables en cas d'attaque
/etc/fail2ban/fail2ban.conf contient quelques paramètres de configuration supplémentaires
Par défaut, sous Debian, fail2ban est configuré ainsi :
seul le serveur ssh est protégé
un attaquant est bloqué après 6 tentatives de connexions infructueuses
le temps de ban est 10 minutes
l'IP 127.0.0.1 est exclue du ban
une ligne est ajoutée au log de fail2ban sans envoie de mail
Il est possible d'activer l'alerte par mail en changeant le paramètre suivant :
# Choose default action. To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g. action_mw, action_mwl, etc) in jail.local
# globally (section [DEFAULT]) or per specific section
action = %(action_)s
Les valeurs suivantes sont des raccourcis :
action_ : blocage sans mail
action_mw : blocage avec envoie du whois de l'attaquant
action_mwl : blocage avec envoie du whois de l'attaquant et des logs générant le blocage
Vous pouvez empêcher Fail2ban de bloquer vos IP avec le paramètre “ignoreip”, par exemple :
ignoreip = 127.0.0.1 192.168.1.1
La durée est configurée avec “bantime”, pour bloquer pendant 5 minutes :
bantime = 300
Les services sont déclarés ainsi :
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Description des paramètres :
enabled : permet d'activer ou de désactiver la protection
port : définit le port à bloquer
filter : définit le filtre à utiliser, les filtres sont situés dans le sous répertoire filter.d
logpath : le fichier de log à parser
maxretry : le nombre de tentatives autorisées avant blocage
Il est possible de protéger phpmyadmin avec fail2ban, pour cela il faut :
modifier le log apache pour loguer les actions phpmyadmin
créer un filtre pour identifier les tentatives de connexion
ajouter une configuration de service dans fail2ban