Regardez les logs de votre serveur web ou de votre accès SSH. Chaque minute, des dizaines de scripts automatisés testent des combinaisons de mots de passe pour forcer l’entrée. Laisser ces robots insister à l’infini, c’est saturer votre bande passante et prendre un risque inutile.
Fail2Ban règle le problème à la racine. Ce programme surveille vos fichiers de configuration en temps réel, repère les échecs de connexion répétés et modifie vos règles de pare-feu pour bloquer les attaquants avant qu’ils ne trouvent la faille.
Voici comment configurer l’outil pour automatiser cette protection et bannir les intrus sans lever le petit doigt. Pour une protection collaborative complémentaire, CrowdSec peut être couplé à Fail2Ban pour bloquer les IP malveillantes à l’échelle mondiale.
Au programme de cet article
Installation et configuration initiale de Fail2Ban sur Linux
Pour débuter la mise en place de la protection, vous devez installer le paquet Fail2Ban depuis les dépôts officiels de votre distribution Linux. Cette opération est simple et s’effectue directement via votre gestionnaire de paquets habituel.
Si vous utilisez Debian ou Ubuntu, lancez la commande suivante :
sudo apt install fail2ban
Pour les systèmes Fedora ou RHEL, utilisez plutôt cet outil
sudo dnf install fail2ban
Une fois le logiciel installé, il est nécessaire de démarrer le service immédiatement tout en activant son lancement automatique au démarrage de la machine. Si votre système s’appuie sur systemd, utilisez la ligne de commande ci dessous :
sudo systemctl enable --now fail2ban
Enfin, assurez vous du bon fonctionnement du démon en vérifiant son état actuel. La commande suivante vous permettra de confirmer que le service est opérationnel :
sudo systemctl status fail2ban
Si le retour indique un statut actif et en cours d’exécution, cela signifie que Fail2Ban analyse déjà les fichiers de journaux par défaut et commence à protéger votre serveur.
Guide de configuration des jails Fail2Ban
La configuration des prisons est une étape déterminante pour protéger votre infrastructure. Pour garantir la pérennité de vos réglages et éviter qu’ils ne soient écrasés lors d’une future mise à jour logicielle, vous ne devez jamais modifier directement les fichiers d’origine nommés /etc/fail2ban/jail.conf ou /etc/fail2ban/fail2ban.conf. Vous devez effectuer vos personnalisations via des fichiers portant l’extension .local ou en créant des fichiers dédiés au sein du répertoire /etc/fail2ban/jail.d/
Configurer les paramètres globaux de Fail2Ban
Pour définir les règles globales qui s’appliqueront à l’ensemble de vos services, commencez par créer le fichier /etc/fail2ban/jail.d/jail.local et insérez y la configuration suivante. Utilisez pour cela votre éditeur de texte favori avec la commande :
sudo nano /etc/fail2ban/jail.d/jail.local
Une fois le fichier ouvert, copiez et collez le contenu ci dessous :
[DEFAULT] ignoreip = 127.0.0.1 192.168.1.0/24 findtime = 10m bantime = 24h maxretry = 3
- ignoreip : Liste des IP ou réseaux à ne jamais bannir. Il est impératif d’y ajouter votre propre adresse IP pour éviter un auto-bannissement.
- findtime : Durée pendant laquelle Fail2Ban scrute les logs pour compter les échecs (ici 10 minutes).
- maxretry : Nombre de tentatives échouées autorisées avant de déclencher une action (ici 3).
- bantime : Durée pendant laquelle l’IP sera bannie (ici 24 heures).
Activer la protection Fail2Ban pour SSH
La surveillance d’un service spécifique que l’on appelle une prison, se configure également à l’intérieur de ce même fichier /etc/fail2ban/jail.d/jail.local. Voici un exemple pour sécuriser le service SSH :
[sshd] enabled = true port = ssh logpath = %(sshd_log)s backend = %(sshd_backend)s maxretry = 5
L’utilisation de variables telles que %(sshd_log)s offre une excellente portabilité de votre configuration et permet au système de s’adapter aux spécificités de votre distribution Linux. Une fois ces modifications enregistrées, redémarrez le service pour prendre en compte les nouveaux paramètres en utilisant la commande :
sudo systemctl restart fail2ban
Il ne vous reste plus qu’à valider le bon fonctionnement de l’activation en utilisant l’outil fail2ban-client. Cette vérification vous assurera que votre prison est correctement opérationnelle et prête à filtrer les accès.
Administrer et surveiller vos bannissements
Une fois Fail2Ban opérationnel, il faut savoir inspecter les journaux et manipuler la liste des adresses bannies pour garder le contrôle sur la sécurité de votre serveur.
Pour obtenir un aperçu complet de l’état d’une prison et consulter la liste des adresses IP actuellement sous le coup d’une sanction, utilisez la commande suivante :
sudo fail2ban-client status sshd
Si vous ou un utilisateur légitime êtes bloqué par erreur, vous pouvez rapidement retirer l’adresse IP concernée de la liste noire. Pour cela, exécutez l’instruction ci dessous en remplaçant l’adresse IP par celle que vous souhaitez libérer :
sudo fail2ban-client set sshd unbanip 192.168.1.100
Inversement, il peut arriver que vous identifiiez une source malveillante avant même qu’elle n’atteigne le seuil des tentatives échouées nécessaires au bannissement automatique. Dans ce cas, vous avez la possibilité de bannir manuellement une adresse IP spécifique de manière immédiate avec la commande :
sudo fail2ban-client set sshd banip 192.168.1.100
Enfin, pour surveiller les actions de blocage au fil de l’eau, il est recommandé de consulter le fichier journal dédié. Vous pouvez visualiser les événements en temps réel directement dans votre terminal grâce à l’instruction :
tail -f /var/log/fail2ban.log
Cette routine de surveillance vous permettra de réagir rapidement face aux tentatives d’intrusion tout en conservant une gestion souple de vos accès légitimes.
Aller plus loin avec Fail2Ban
Si vous souhaitez aller plus loin, vous avez la possibilité de personnaliser les actions par défaut, comme recevoir une alerte par e-mail à chaque fois qu’un bannissement est déclenché. Pour cela, modifiez la directive action au sein de votre fichier .local. En utilisant l’option action = %(action_mwl)s, Fail2Ban vous transmettra un message contenant les détails précis du bannissement ainsi que les journaux associés.
il faut vérifier régulièrement la pertinence de vos règles. Pour tester si un filtre est correctement configuré sans avoir à attendre une attaque réelle, vous pouvez utiliser l’outil fail2ban-regex. Cette commande simule une analyse sur vos fichiers journaux pour confirmer que vos expressions régulières détectent bien les tentatives d’intrusion :
sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd.conf
Cet utilitaire est indispensable pour valider vos réglages et éviter tout faux positif. Gardez à l’esprit qu’il est impératif de toujours redémarrer le service Fail2Ban après chaque modification apportée à la configuration des filtres ou des actions pour que les changements soient effectifs.