Fail2ban surveille les journaux de vos services, détecte des échecs répétés — par exemple des tentatives SSH — puis demande au système de bloquer temporairement l’adresse IP concernée. Ce n’est ni un pare-feu complet ni un remplacement d’une authentification solide, mais c’est une couche de protection simple et efficace contre une grande partie du bruit automatisé.
Dans ce premier article de la série, nous allons l’installer sur Debian ou Ubuntu, comprendre sa structure de configuration et protéger SSH sans risquer de nous enfermer dehors.
À retenir
Ne modifiez pas directement /etc/fail2ban/jail.conf. Le projet Fail2ban recommande de laisser les fichiers .conf fournis par le paquet intacts et de placer vos personnalisations dans jail.local ou dans un fichier .local sous /etc/fail2ban/jail.d/.
Installer Fail2ban
Sur Debian et Ubuntu, l’installation se fait directement depuis les dépôts :
sudo apt update
sudo apt install fail2ban
Vérifiez ensuite que le service est actif :
sudo systemctl status fail2ban
Si vous préférez une vérification plus concise :
sudo systemctl is-active fail2ban
Comprendre la configuration
Fail2ban sépare plusieurs types de fichiers :
jail.confetjail.d/*.conf: configuration distribuée par le paquet ;jail.localetjail.d/*.local: personnalisations locales ;filter.d/: filtres qui reconnaissent les événements dans les logs ;action.d/: actions exécutées lorsqu’une IP doit être bannie ou débannie.
Pour un serveur simple, je préfère créer des fichiers explicites dans /etc/fail2ban/jail.d/. Cela évite un énorme jail.local difficile à relire quelques mois plus tard.
Activer la protection SSH
Créons un fichier dédié :
sudo vim /etc/fail2ban/jail.d/sshd.local
Ajoutez une configuration simple :
[sshd]
enabled = true
bantime = 1h
findtime = 10m
maxretry = 5
Ces trois paramètres sont les plus importants :
findtime = 10m: Fail2ban regarde une fenêtre de dix minutes ;maxretry = 5: cinq échecs dans cette fenêtre déclenchent un ban ;bantime = 1h: l’adresse est bloquée pendant une heure.
Ces valeurs ne sont pas universelles. Un serveur d’administration utilisé par deux personnes peut être configuré plus strictement qu’un service recevant de nombreux utilisateurs légitimes.
Protéger sa propre adresse avec ignoreip
Si vous disposez d’une IP d’administration fixe, vous pouvez l’exclure des bans. Placez par exemple ceci dans /etc/fail2ban/jail.d/local-defaults.local :
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 198.51.100.25
Attention
N’ajoutez pas votre réseau entier « par sécurité » si ce réseau peut être utilisé par d’autres machines. Et si votre connexion change régulièrement d’adresse IP, une exception permanente risque d’être inutile ou même contre-productive.
Tester la configuration avant de redémarrer
Fail2ban peut vérifier sa configuration sans l’appliquer :
sudo fail2ban-client -t
Si aucun problème n’est signalé, redémarrez le service :
sudo systemctl restart fail2ban
Puis contrôlez l’état général :
sudo fail2ban-client status
Le jail sshd doit apparaître dans la liste. Affichez son détail :
sudo fail2ban-client status sshd
Vérifier le backend utilisé
Fail2ban peut lire des fichiers de logs classiques ou le journal systemd. Le backend auto choisit le mécanisme adapté selon la configuration disponible.
Pour afficher le backend configuré pour le jail SSH, inspectez la configuration effective de Fail2ban :
sudo fail2ban-client -d | grep -E "^\['add', 'sshd',"
Sur une installation récente, il est donc parfaitement normal que Fail2ban s’appuie sur systemd-journald plutôt que sur un fichier /var/log/auth.log.
Suivre les événements Fail2ban
La destination de journalisation de Fail2ban se vérifie avec :
sudo fail2ban-client get logtarget
Si Fail2ban écrit dans son fichier classique :
sudo tail -f /var/log/fail2ban.log
Si votre installation journalise via systemd :
sudo journalctl -u fail2ban -f
Tester sans se verrouiller dehors
Le meilleur test consiste à provoquer quelques échecs depuis une autre adresse IP — par exemple une connexion mobile — tout en gardant une session SSH déjà ouverte sur le serveur.
Après le nombre d’échecs configuré, vérifiez :
sudo fail2ban-client status sshd
Vous pouvez débannir manuellement une adresse :
sudo fail2ban-client set sshd unbanip 203.0.113.42
Fail2ban n’est pas une excuse pour un SSH faible
Continuez à privilégier les clés SSH, désactivez l’accès direct de root et, lorsque c’est possible, désactivez l’authentification par mot de passe. Fail2ban vient compléter ces protections, pas les remplacer.
Et ensuite ?
Le jail SSH utilise un filtre déjà fourni par Fail2ban. Dans l’article suivant, nous allons aller plus loin : créer notre propre filtre et notre propre jail pour protéger un service web à partir de ses logs.


Laisser un commentaire