Fail2ban
Le rôle Fail2ban installe Fail2ban et le configure.
Il est responsable de :
- l’installation de
fail2ban - le déploiement du fichier de configuration
Fail2ban surveille les journaux système afin de détecter les tentatives de connexion répétées. Lorsqu’une adresse IP dépasse le nombre maximal de tentatives autorisées dans une période donnée (findtime), elle est temporairement bloquée pendant la durée définie par bantime.
Fonctionnement
Section titled “Fonctionnement”Le fichier de configuration de Fail2ban se situe ici :
cat /etc/fail2ban/fail2ban.confLe fichier qui permet de définir la configuration des bannissements se trouve ici :
cat /etc/fail2ban/jail.localStructure du rôle
Section titled “Structure du rôle”roles/fail2ban/├── defaults/│ └── main.yml # Variables du rôle├── handlers/│ └── main.yml # Redémarrage de Fail2ban si nécessaire├── tasks/│ ├── install.yml # Installation et configuration│ └── main.yml # Point d'entrée du rôle└── templates/ └── jail.local.j2 # Templates à déployerLes variables
Section titled “Les variables”Les variables sont contenues dans le fichier main.yml dans le dossier defaults.
Variables globales
Section titled “Variables globales”| Variable | Type | Description |
|---|---|---|
fail2ban_bantime |
string | Durée du temps de bannissement |
fail2ban_findtime |
string | Fenêtre de temps pendant laquelle les tentatives de connexion sont comptabilisées. |
fail2ban_maxretry |
int | Nombre maximal de tentatives. |
fail2ban_ignoreip |
Liste | Liste des adresses IP à ignorer. |
Exemple de fichier de configuration
Section titled “Exemple de fichier de configuration”fail2ban_bantime: 1hfail2ban_findtime: 10mfail2ban_maxretry: 5
fail2ban_ignoreip: - 127.0.0.1/8Déploiement
Section titled “Déploiement”Le rôle réalise les opérations suivantes :
- Installation du paquet Fail2ban.
- Déploiement du fichier de configuration
jail.local. - Vérification de la validité de la configuration avec
fail2ban-client -d. - Activation et démarrage du service Fail2ban.
Handler
Section titled “Handler”Le rôle contient un handler chargé de redémarrer le service Fail2ban lorsque sa configuration est modifiée.
Le handler est défini dans le fichier suivant handlers/main.yml.
Le handler est appelé par la tâche qui déploie le fichier, celle-ci : Deploy Fail2Ban configuration.
La directive notify déclenche le handler uniquement lorsque le fichier de configuration a réellement été modifié.
Cela permet d’éviter un redémarrage inutile du service à chaque exécution du playbook.
Vérification
Section titled “Vérification”Vérifier que le service est actif :
Section titled “Vérifier que le service est actif :”sudo systemctl status fail2banPermet de vérifier les protections actives :
Section titled “Permet de vérifier les protections actives :”sudo fail2ban-client statusVérifier une protection spécifique (ici sshd) :
Section titled “Vérifier une protection spécifique (ici sshd) :”sudo fail2ban-client status sshdVérifier que le fichier de configuration est valide :
Section titled “Vérifier que le fichier de configuration est valide :”sudo fail2ban-client -dVérifier les journaux :
Section titled “Vérifier les journaux :”sudo journalctl -u fail2banDépannage
Section titled “Dépannage”Le service ne démarre pas
Section titled “Le service ne démarre pas”Vérifier son état :
Section titled “Vérifier son état :”sudo systemctl status fail2banPuis consulter les journaux :
sudo journalctl -xeu fail2banUne adresse IP est bannie par erreur
Section titled “Une adresse IP est bannie par erreur”Afficher les adresses bannies :
sudo fail2ban-client status sshdDébannir une adresse IP :
sudo fail2ban-client set sshd unbanip 192.168.1.100Tester le bannissement
Section titled “Tester le bannissement”Depuis une autre machine, effectuer plusieurs tentatives de connexion SSH avec un mot de passe erroné.
Exemple :
ssh utilisateur@serveurAprès le nombre de tentatives défini par fail2ban_maxretry, l’adresse IP doit être bannie.
Vérifier ensuite :
sudo fail2ban-client status sshdL’adresse IP doit apparaître dans Banned IP list.