Fail2ban
Introduction
Fail2ban est un outil de sécurité (généralement sous Linux) dont l'objectif est de protéger un serveur contre les tentatives d'intrusion ou de brute force. Il surveille les logs (fichiers journaux) de divers services (SSH, serveur web, FTP, etc.) et, en cas de détection d'un comportement suspect (comme de multiples échecs de connexion), il bloque automatiquement l'adresse IP à l'origine de ces tentatives pendant une durée prédéfinie.
En d'autres termes, Fail2ban agit comme un système de détection d'intrusion (IDS) qui coupe provisoirement l'accès aux utilisateurs malveillants. On parle de HIDS.
Quel est son rôle ?
- Protection contre les attaques par force brute : Les attaques par force brute cherchent à deviner un mot de passe en essayant de multiples combinaisons. Fail2ban va repérer ces multiples tentatives dans les logs et bloquer l'adresse IP responsable.
- Réduction du bruit et des risques : En bannissant rapidement les IP suspectes, vous réduisez la charge sur le serveur et la probabilité de compromission.
- Adaptation à plusieurs services : Fail2ban peut être configuré pour surveiller différents services, comme SSH, HTTP/HTTPS (accès à des sites web), SMTP (mail), etc.
Comment fonctionne Fail2ban ?
- Lecture des logs : Fail2ban lit en continu les fichiers journaux (logfiles) de vos services (par exemple : /var/log/auth.log, /var/log/secure, /var/log/apache2/error.log, etc.).
- Détection des échecs de connexion : Grâce à des filtres (règles qui indiquent comment repérer les tentatives suspectes dans les fichiers journaux), Fail2ban compte le nombre d'échecs sur une période donnée.
- Application d'un "ban" : Si le nombre maximal d'échecs (défini dans la configuration) est dépassé dans un laps de temps précis, Fail2ban déclenche une action de bannissement sur cette adresse IP (via le pare-feu, principalement).
- Débannissement : Après un certain temps (configurable), l'IP bloquée est débannie automatiquement, afin d'éviter que l'interdiction soit permanente si l'activité malicieuse s'arrête ou en cas de fausse alerte.
Que permet de faire Fail2ban ?
- Bloquer temporairement une adresse IP qui tente de se connecter de manière répétée et infructueuse.
- Éviter de fausses détections : les règles et filtres peuvent être ajustés pour limiter les faux positifs (par exemple, si un utilisateur légitime se trompe plusieurs fois de mot de passe).
- Surveiller plusieurs services : en configurant ce que Fail2ban appelle des "jails" (des configurations spécifiques par service ou par protocole).
- Personnaliser les actions : au lieu de simplement bloquer une IP, Fail2ban peut déclencher d'autres actions (envoi d'une alerte par mail, exécution d'un script, etc.).
Interaction avec le pare-feu
Fail2ban ne remplace pas un pare-feu comme iptables, nftables ou firewalld. Au contraire, il s'appuie dessus pour créer des règles de blocage. Fail2ban est d'ailleurs compatible avec une large gamme de pare-feux, et présent sur tous les noyaux. (de Linux au monde BSD, en passant par le noyau Illumos).
- Mise à jour dynamique du pare-feu : Quand Fail2ban décide de bannir une adresse IP, il exécute une commande pour ajouter (ou enlever) une règle dans votre pare-feu existant. Par exemple, avec iptables, il ajoute une règle du type -A INPUT -s <IP> -j DROP.
- Coexistence : Votre configuration statique du pare-feu (qui bloque des ports spécifiques, définit des règles par défaut, etc.) reste valable. Fail2ban vient simplement ajouter ou retirer des règles supplémentaires en fonction de l'activité détectée.
- Scripts d'action : Fail2ban dispose de scripts préétablis pour différents types de pare-feu, ce qui facilite la compatibilité avec la plupart des distributions Linux.
Configuration de base
- Installation : Sur la plupart des distributions, on l'installe via le gestionnaire de paquets (apt-get install fail2ban sur Debian/Ubuntu, yum install fail2ban ou dnf install fail2ban sur CentOS/Fedora, etc.).
- Fichiers de configuration :
- fail2ban.conf / fail2ban.local : configurations globales.
- jail.conf / jail.local : contient la liste des "jails" (services surveillés) et leurs réglages (nombre d'essais autorisés, durée du ban, etc.).
- D'autres fichiers pour les filtres, qui définissent comment reconnaître un échec de connexion dans les logs.
- Activation des jails : Vous pouvez activer les jails pour SSH, vsftpd, Apache, etc. en fonction de ce dont vous avez besoin.
- Redémarrage / rechargement : Après modification de la configuration, il faut redémarrer ou recharger le service Fail2ban.
Bonnes pratiques
- Ne pas se bannir soi-même : Lors de la configuration de Fail2ban, faites attention à ne pas bannir vos propres adresses IP, en particulier si vous administrez le serveur à distance.
- Ajuster le seuil d'échecs (maxretry) : Si vous le mettez trop bas, vous risquez de bloquer des utilisateurs légitimes qui se trompent de mot de passe une ou deux fois. S'il est trop haut, cela laisse plus de chances aux attaquants.
- Surveiller les logs : Vérifiez régulièrement que vous ne générez pas trop de faux positifs. Fail2ban crée lui-même des fichiers de log, généralement dans /var/log/fail2ban.log.
- Combiner avec d'autres solutions : Fail2ban est un outil complémentaire à d'autres bonnes pratiques de sécurité (pare-feu bien configuré, mises à jour régulières, utilisation de clés SSH, etc.).
Avantages et limites
Avantages
- Facile à configurer et à personnaliser.
- Blocage automatisé et réactif, particulièrement utile pour des services exposés sur Internet (SSH, HTTP, SMTP...).
- Réduction de la charge serveur face à des attaques continues.
Limites
- Ne remplace pas un pare-feu complet : il reste un outil d'appoint, dédié à la détection d'activités suspectes et au blocage d'IP malveillantes.
- Ne détecte que ce qui est dans les logs : si un attaquant n'apparaît pas dans les logs (faille, vulnérabilité zero-day, etc.), Fail2ban ne peut pas agir.
- Peut générer des faux positifs s'il est mal configuré : des utilisateurs légitimes peuvent se retrouver bloqués.