
Introduction

Fail2ban aide à protéger un serveur contre les attaques des hacker comme l’attaque de brute force et l’attaque de Deny-Of-Services (DOS).
Dans cet article nous allons voir comment fonctionne Fail2ban. Voici quelques caractéristiques de Fail2ban qui vont nous aider à bien comprendre son fonctionnement:
- Fail2ban est développé en langage Python
- Fail2ban analyse les journaux du serveur (logs) lorsqu’il détecte plusieurs tentatives de connexion suspecte, qu’on définie dans les filtres. Il mettra en place les actions que vous aurez définies, telles que le blocage de l’adresse IP ou l’envoi d’un e-mail d’alerte.
- Fail2Ban est basé sur un système de prisons (Jails) qui peut être activé ou désactivé dans un fichier de configuration simple qu’on trouve dans /etc/fail2ban/jail.conf
Comment fonctionne Fail2ban
Le système de prison (Jail)
Une prison est composée des éléments suivants:
- Nom du fichier log à analyser.
- Filtre à appliquer sur le fichier de log, qui correspond à une expression régulière pour identifier les tentatives de connexion suspecte.
- Action à prendre si le filtre correspond. L’action peux être par exemple de bloqué l’adresse IP qui est à l’origine des tentatives de connexion suspecte ou d’envoyer un email d’alerte.
- Paramètres à définir: nombre de « correspondances » (maxretry), intervalle de temps correspondant (findtime), temps d’interdiction (bantime) ….
Architecture de Fail2ban
La figure ci dessous représente l’architecture de Fail2ban.

Fail2ban est configuré pour surveiller les journaux d’un service, il lit le fichier logs et essaie de faire correspondre les failregex qui sont défini dans le fichier de filtre. Le filtre est conçu pour identifier les échecs d’authentification pour ce service spécifique à l’aide d’expressions régulières. Lorsque le failregex a été trouvé plusieurs fois dans le fichier de log ( nombre de match du failregex est supérieur à maxretry ) l’action du fichier journal sont déclenchées.
Par défaut, une action sera effectuée lorsque 3 échecs d’authentification ont été détectés dans 10 minutes, et le temps d’interdiction par défaut est de 10 minutes. La valeur par défaut du nombre d’échecs d’authentification nécessaires pour déclencher une interdiction est remplacée dans la partie SSH du fichier de configuration par défaut pour permettre 6 échecs avant que l’interdiction ne se produise. Ceci est entièrement configurable par l’administrateur dans le fichier jail.conf
Pour installer et configurer fail2ban, lisez l’article suivant: Installer et configurer Fail2ban avec Docker