Fail2ban surveille les journaux de vos services et bannit temporairement les adresses IP qui se comportent de manière abusive (tentatives SSH répétées, scans HTTP, etc.). C’est un complément utile à un pare-feu UFW et à une configuration SSH sécurisée.
Prérequis
- Ubuntu/Debian (ou dérivé) avec
sudo - Service à protéger déjà en place (ex.
sshd,nginx)
Installation
Bashsudo apt update && sudo apt install -y fail2ban sudo systemctl enable fail2ban sudo systemctl start fail2ban
Configuration de base
Les fichiers personnalisés se placent dans /etc/fail2ban/jail.d/ pour ne pas être écrasés par les mises à jour.
Créez /etc/fail2ban/jail.d/local.conf :
INI1[DEFAULT] 2bantime = 1h 3findtime = 10m 4maxretry = 5 5ignoreip = 127.0.0.1/8 ::1 6 7[sshd] 8enabled = true 9port = ssh 10logpath = %(sshd_log)s 11backend = %(sshd_backend)s
Si vous avez changé le port SSH, remplacez port = ssh par votre port (ex. port = 2222).
Rechargez Fail2ban :
Bashsudo systemctl restart fail2ban sudo fail2ban-client status sudo fail2ban-client status sshd
Protéger Nginx (filtre HTTP trop agressif)
Installez le paquet filtres si nécessaire (selon distribution), puis ajoutez par exemple :
INI[nginx-http-auth] enabled = true port = http,https logpath = /var/log/nginx/error.log
Adaptez les chemins de logs à votre installation.
Bonnes pratiques
- Ajoutez votre IP fixe dans
ignoreippour ne pas vous bloquer lors de tests. - Surveillez
sudo fail2ban-client status sshdaprès déploiement. - Les bannissements sont temporaires (
bantime) ; ajustez selon votre tolérance.
Débannir une IP manuellement
Bashsudo fail2ban-client set sshd unbanip 198.51.100.10
Dépannage
- Aucun ban : vérifiez que
enabled = true, que le cheminlogpathest correct et que le service logue les échecs. - Vous êtes banni : utilisez la console du panel hébergeur / IPMI ou une autre IP pour vous connecter et ajuster
ignoreipou débannir.