Sommaire
Installer et configurer Fail2ban pour bloquer les adresses IP qui tentent de forcer l'accès SSH.
🎯 Objectifs de la fiche
- Installation de Fail2ban — Installer le paquet fail2ban et vérifier le service
- Configuration de base (jail local) — Créer une configuration personnalisée pour SSH
- Paramètres avancés (bannissement, récidive) — Ajuster les seuils de détection et la durée de bannissement
- Tests et vérifications — Simuler une attaque et consulter les logs
- Surveillance et déblocage manuel — Gérer les IP bannies avec fail2ban-client
Prérequis
Un serveur Debian 13 avec SSH actif (fiche précédente). Avoir les droits sudo. Connaissance de base des logs (journalctl).
1. Installation de Fail2ban
sudo apt update sudo apt install fail2ban -y
sudo systemctl status fail2ban
active (running)).2. Configuration de base – jail local
Fail2ban utilise deux fichiers de configuration : /etc/fail2ban/jail.conf (original, à ne pas toucher) et /etc/fail2ban/jail.local (surcharge personnalisée).
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Dans jail.local, cherchez la section [sshd] et modifiez (ou ajoutez) les lignes suivantes :
[sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 600 findtime = 600
maxretry = 3 : 3 tentatives échouées. findtime = 600 (10 minutes) : fenêtre de temps pour compter les tentatives. bantime = 600 (10 minutes) : durée du bannissement.sudo systemctl restart fail2ban
jail.local, redémarrez fail2ban. Vérifiez la syntaxe avec sudo fail2ban-client -d.3. Paramètres avancés (optionnel)
Pour renforcer la protection, on peut augmenter bantime et activer la récidive (recidive).
[sshd] enabled = true maxretry = 3 bantime = 3600 # 1 heure [recidive] enabled = true logpath = /var/log/fail2ban.log maxretry = 3 bantime = 86400 # 1 jour findtime = 86400
recidive avec prudence : une IP qui est bannie plusieurs fois sera bloquée très longtemps. Cela peut vous exclure vous-même si vous faites trop d’erreurs.4. Tests et vérifications
Pour tester, simulez des échecs de connexion SSH depuis une autre machine ou depuis le serveur lui‑même en utilisant une adresse IP locale (127.0.0.1 ne sera pas bannie).
# Depuis le serveur, tentez de vous connecter avec un mauvais mot de passe
ssh -o PreferredAuthentications=password -o PubkeyAuthentication=no utilisateur_inexistant@localhost
# Surveiller les logs de fail2ban en temps réel
sudo tail -f /var/log/fail2ban.log
# Voir l'état de la prison SSH
sudo fail2ban-client status sshd
sudo fail2ban-client set sshd unbanip <IP>.5. Gestion quotidienne
# Lister toutes les prisons actives sudo fail2ban-client status # Voir les IP bannies pour une prison spécifique sudo fail2ban-client status sshd | grep "Banned IP list" # Débannir une IP sudo fail2ban-client set sshd unbanip 192.168.1.100 # Recharger la configuration sans redémarrer le service sudo fail2ban-client reload
Quel est le nom du fichier de configuration personnalisée pour Fail2ban ?
✅ Réponse : /etc/fail2ban/jail.local
Dans la configuration SSH, maxretry = 3 signifie :
✅ Réponse : 3 tentatives autorisées avant bannissement
Quelle commande permet de voir l'état de la prison sshd ?
✅ Réponse : sudo fail2ban-client status sshd
Pour débannir manuellement une IP, on utilise :
✅ Réponse : sudo fail2ban-client set sshd unbanip 192.168.1.100
La prison recidive permet de :
✅ Réponse : augmenter la durée de bannissement pour les IP déjà bannies