Fail2Ban : le gardien silencieux de ton serveur

🛡️ Fail2Ban : le gardien silencieux de ton serveur


Introduction

Sur Internet, chaque serveur exposé reçoit quotidiennement des scans et des tentatives de connexion par force brute. Fail2Ban est un démon qui lit les journaux système, détecte les motifs suspects et bannit automatiquement les adresses IP malveillantes pour une durée configurable. Résultat : moins d’attaques réussies, moins de charge sur le serveur, et un socle de sécurité actif 24/7.


Comment fonctionne Fail2Ban

  • Lecture des logs : /var/log/auth.log, /var/log/nginx/access.log, etc.
  • Détection : expressions régulières adaptées à chaque service (filtres).
  • Action : bannissement via iptables/nftables, notification, etc.
  • Expiration : l’IP est libérée au bout du bantime.

Fail2Ban agit en prévention et freine drastiquement les attaques répétées, sans intervention humaine.


Structure de configuration

  • jail.conf / jail.local : jails (services) à protéger.
  • filter.d/*.conf : règles de détection (regex).
  • action.d/*.conf : actions (pare-feu, emails, etc.).

Astuce : ne modifie pas jail.conf ; crée plutôt un jail.local pour tes personnalisations afin de faciliter les mises à jour.


Exemple de jail SSH

[sshd]
enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
findtime = 600
maxretry = 5
bantime  = 3600
ignoreip = 127.0.0.1/8 ::1

Avec cette configuration, toute IP ayant 5 échecs sur 10 minutes est bannie 1 heure. Pense à ajouter ton IP publique à ignoreip pour éviter de te bloquer.


Commandes utiles

# État global
sudo fail2ban-client status

# État d’une jail précise (ex: sshd)
sudo fail2ban-client status sshd

# Débannir une IP
sudo fail2ban-client set sshd unbanip 203.0.113.42

# Journal Fail2Ban
sudo tail -f /var/log/fail2ban.log

Intégrations utiles

  • Nginx : limiter la force brute sur /wp-login.php et les formulaires.
  • Postfix / Dovecot : protéger l’authentification IMAP/SMTP.
  • Services exposés : toute application qui écrit des logs cohérents peut être protégée via un filtre dédié.


Bonnes pratiques

  • Jails spécifiques pour chaque service exposé.
  • Ajuste bantime, findtime, maxretry selon le risque.
  • Ignore ton IP publique dans ignoreip.
  • Surveille les logs et mets à jour les filtres.
  • Sauvegarde tes configs avant mise à jour.


Conclusion

Fail2Ban n’est pas un pare-feu complet, mais un bouclier intelligent qui agit avant que le mal ne soit fait. Facile à installer, léger et extensible, il reste un indispensable pour sécuriser un serveur Linux (VPS, dédié, Raspberry Pi…). Combine-le à un monitoring centralisé pour une visibilité complète.