Comment installer et configurer Fail2Ban sur Linux

9 min de lecture - 14 mai 2026

hero section cover
Table des matières
  • Comment installer et configurer Fail2Ban sur Linux
  • Conditions préalables
  • Installation de Fail2Ban sur Ubuntu/Debian
  • Configuration des prisons
  • Tests et surveillance
  • Configuration avancée
Partager

Guide étape par étape pour installer, configurer et tester Fail2Ban sur des serveurs Linux basés sur Ubuntu, Debian et RHEL.

Comment installer et configurer Fail2Ban sur Linux

Fail2Ban surveille les journaux de votre serveur à la recherche d'activités suspectes et bannit automatiquement les IP en infraction en mettant à jour les règles de votre pare-feu. Il arrête les attaques par force brute, réduit le bruit des journaux et fonctionne silencieusement en arrière-plan une fois configuré. Ce guide couvre l'installation sur Ubuntu/Debian, la configuration de base, la configuration de la prison, et quelques options avancées qui méritent d'être connues.

Conditions préalables

Fail2Ban fonctionne sur la plupart des distributions Linux : Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux et Fedora. Vous aurez besoin de

  • Python 3 installé sur le système
  • Un accès root ou sudo pour l'installation des paquets et les modifications du pare-feu
  • Un pare-feu actif (iptables, nftables, ufw, ou firewalld)
  • Des fichiers journaux qui enregistrent les échecs des tentatives de connexion(/var/log/auth.log sur les systèmes basés sur Debian, /var/log/secure sur les systèmes basés sur RHEL)

Sur les systèmes basés sur RHEL, activez d'abord le référentiel EPEL. Avant d'installer Fail2Ban, vérifiez que votre pare-feu fonctionne avec ufw status ou systemctl status firewalld.

Installation de Fail2Ban sur Ubuntu/Debian

Mettez à jour vos paquets et installez Fail2Ban :

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Activez le service pour qu'il démarre au démarrage, puis démarrez-le :

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copiez la configuration par défaut dans un fichier local. Editez toujours jail.local, et non jail.conf, afin que les mises à jour des paquets n'écrasent pas vos paramètres :

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Vérifiez que tout fonctionne :

sudo systemctl status fail2ban
sudo fail2ban-client status

La première commande devrait afficher "Active : active (running)". La seconde liste les prisons actives. Confirmez que Fail2Ban est activé au démarrage avec sudo systemctl is-enabled fail2ban.

Configuration des prisons

Paramètres par défaut

Ouvrez le fichier /etc/fail2ban/jail.local et modifiez la section [DEFAULT]. Ces paramètres s'appliquent à toutes les prisons, à moins qu'ils ne soient remplacés par d'autres :

ParamètreValeur recommandéeCe qu'il fait
bantime3600Bloque une IP pendant 1 heure
temps de recherche600Compte les échecs dans une fenêtre de 10 minutes
maxretry3 à 5Nombre d'échecs avant le déclenchement d'une interdiction
ignoreip127.0.0.1/8 ::1IPs qui ne sont jamais bannies

Ajoutez votre propre IP de gestion à ignoreip afin de ne pas vous bloquer vous-même. Exemple : ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Protection SSH

Activez la prison SSH dans jail.local :

[sshd]
enabled = true

Vérifiez que logpath pointe vers le bon fichier de log de votre distro. Si vous avez déplacé SSH vers un port non standard (par exemple, 2222), mettez à jour le paramètre port pour qu'il corresponde.

Protection du serveur web

Activez la prison correspondant à votre serveur web :

  • Nginx: [nginx-http-auth] pour les échecs d'authentification, [nginx-botsearch] pour les robots malveillants
  • Apache: [apache-auth] pour l'authentification, [apache-badbots] pour les bots

Emprisonnement récidiviste

La prison [recidive] attrape les IP qui continuent à être bannies à travers d'autres prisons et applique une pénalité plus longue, typiquement une semaine (604 800 secondes). Elle est utile pour les attaquants persistants qui changent d'approche.

Après avoir effectué des modifications, rechargez le site :

sudo systemctl restart fail2ban
sudo fail2ban-client status

Tests et surveillance

Test des interdictions

Avant d'utiliser Fail2Ban en production, testez-le. À partir d'une machine distante (pas votre IP d'administration), essayez de vous connecter en SSH jusqu'à ce que vous dépassiez le nombre maximal de tentatives. Vous devriez être bloqué. Confirmez avec :

sudo fail2ban-client status sshd

Observez les interdictions en temps réel :

tail -f /var/log/fail2ban.log

Si vous bloquez accidentellement une adresse IP légitime, débloquez-la :

sudo fail2ban-client set sshd unbanip 203.0.113.50

Surveillance au jour le jour

Examinez l'historique des bannissements en consultant le journal :

grep "Ban\|Unban" /var/log/fail2ban.log

Commandes de gestion utiles :

CommandeObjectif
fail2ban-client statusListe de tous les centres de détention actifs
fail2ban-client bannedAffiche toutes les IP actuellement bannies
fail2ban-client set <jail> unbanip <IP>Débanquer une IP spécifique
fail2ban-client unban --allEffacer tous les bannissements
fail2ban-client set <jail> banip <IP>Bannir manuellement une IP

Les bannissements persistent à travers les redémarrages. Fail2Ban les stocke dans une base de données SQLite dans /var/lib/fail2ban/fail2ban.sqlite3.

Configuration avancée

Passer à nftables

nftables est le remplaçant moderne d'iptables. Il gère IPv4 et IPv6 dans un cadre unique, s'adapte mieux aux grandes listes d'interdictions et possède une limitation de débit intégrée. Si vous êtes sur Ubuntu 22.04+, Debian 11+, ou toute autre distribution récente, c'est le meilleur choix.

Définissez-le dans jail.local :

[DEFAULT]
banaction = nftables-multiport

Redémarrez Fail2Ban, puis vérifiez avec sudo nft list ruleset. Vous devriez voir f2b-table et f2b-chain dans la sortie. N'utilisez iptables que si vous êtes sur un ancien système ou si vous avez des exigences de compatibilité.

Notifications par courriel

Par défaut, Fail2Ban bannit silencieusement. Pour recevoir des alertes par courriel, ajoutez ce qui suit à la section [DEFAULT] de jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

L'action action_mwl envoie un email avec les détails du bannissement, les données WHOIS, et les lignes de log qui ont déclenché le bannissement. Utilisez action_mw si vous ne voulez que les données WHOIS. Vous aurez besoin d'un agent de transfert de courrier comme sendmail installé, ou d'un relais SMTP configuré avec quelque chose comme msmtp.

Pour les alertes Slack ou Discord, créez un script qui envoie un webhook et connectez-le à un fichier d'action personnalisé dans /etc/fail2ban/action.d/.

Si vous êtes à la recherche d'un serveur avec un accès root complet et une bande passante non mesurée pour exécuter Fail2Ban, consultez les serveurs dédiés de FDC.

background image
Votre serveur freine-t-il votre croissance ?

Fatigué des déploiements lents ou des limites de bande passante ? FDC Servers offre une puissance dédiée instantanée, une portée mondiale et des plans flexibles conçus pour n'importe quelle échelle. Prêt pour une mise à niveau ?

Débloquer la performance maintenant

Blog

À l'honneur cette semaine

Plus d'articles
Liste de contrôle pour le durcissement des serveurs Linux

Liste de contrôle pour le durcissement des serveurs Linux

Liste de contrôle étape par étape pour durcir un serveur Linux. Couvre SSH, les pare-feu, les correctifs, les autorisations de fichiers, SELinux/AppArmor et l'enregistrement des audits

15 min de lecture - 8 mai 2026

tutoriel iperf3 : Tester la vitesse du réseau sous Linux et Windows

10 min de lecture - 7 mai 2026

Plus d'articles