0 Votes

Fail2ban

Modifié par john le 2026/09/20 19:39

Fail2ban est un outil permettant de protéger les services exposés (comme SSH, nginx ou postfix) contre les attaques répétées par force brute. Il fonctionne en analysant les fichiers de logs et en bannissant automatiquement les adresses IP qui présentent un comportement suspect.

Fonctionnement

Fail2ban surveille les logs (ex : /var/log/auth.log) à la recherche de motifs définis (échec d’authentification, erreurs). Lorsqu’une IP déclenche un certain nombre d’alertes dans un intervalle de temps, une règle temporaire est ajoutée au pare-feu pour bloquer cette IP.

Installation

Debian/Ubuntu

sudo apt install fail2ban

Fedora/RHEL/AlmaLinux

sudo dnf install fail2ban

Configuration de base

Le fichier principal est /etc/fail2ban/jail.conf. Il ne faut pas le modifier : il est remplacé à chaque mise à jour. Les réglages personnels vont dans /etc/fail2ban/jail.local, ou dans un fichier de /etc/fail2ban/jail.d/.

Ordre de lecture : jail.conf, puis jail.d/*.conf, puis jail.local, qui l'emporte sur les précédents.

Information

Ne pas copier jail.conf entier vers jail.local : la copie fige toutes les valeurs par défaut de la version installée et peut écraser des réglages de jail.d (par exemple le banaction choisi par la distribution). Ne mettre dans jail.local que ce qui diffère.

Exemple de configuration pour SSH

Dans /etc/fail2ban/jail.local :

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
maxretry = 5
bantime = 3600
findtime = 600
  • maxretry : nombre d’échecs avant bannissement
  • bantime : durée du bannissement en secondes
  • findtime : période pendant laquelle les échecs sont comptés

Sur un système où les journaux passent par systemd, remplacer logpath par backend = systemd.

Démarrer et activer le service

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Vérifier l’état et les IP bannies

sudo fail2ban-client status
sudo fail2ban-client status sshd
sudo fail2ban-client get sshd actions     # action réellement appliquée
sudo fail2ban-client -t                   # tester la configuration

Débannir une IP manuellement

sudo fail2ban-client set sshd unbanip <IP>

Étendre la protection à d’autres services

Fail2ban peut protéger :

  • nginx (accès interdits, erreurs 404 répétées)
  • postfix (auth SMTP ratée)
  • nextcloud (brute-force sur interface web)
  • sshd (connexion SSH échouée)

Il suffit d’activer les sections correspondantes dans jail.local et de s'assurer que les logs sont bien renseignés.

Logs et journalisation

/var/log/fail2ban.log
journalctl -u fail2ban

Liens utiles

Liens internes