← Retour au portail

Fiche 2 - Protection SSH avec Fail2ban sur Debian 13

Installer et configurer Fail2ban pour bloquer les adresses IP qui tentent de forcer l'accès SSH.

Intermédiaire — SISR 2ème année ⏱️ 20 min 📁 Sécurité

🎯 Objectifs de la fiche

  1. Installation de Fail2ban — Installer le paquet fail2ban et vérifier le service
  2. Configuration de base (jail local) — Créer une configuration personnalisée pour SSH
  3. Paramètres avancés (bannissement, récidive) — Ajuster les seuils de détection et la durée de bannissement
  4. Tests et vérifications — Simuler une attaque et consulter les logs
  5. 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
💡 Le service fail2ban se lance automatiquement après installation. Vérifiez qu'il est actif (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
💡 Après chaque modification de 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
⚠️ Activez 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
💡 Si vous vous bannissez vous‑même accidentellement, débloquez votre IP avec 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 ?
  • /etc/fail2ban/jail.conf
  • /etc/fail2ban/jail.local
  • /etc/fail2ban/fail2ban.conf
  • /etc/fail2ban/sshd.conf

✅ Réponse : /etc/fail2ban/jail.local

Dans la configuration SSH, maxretry = 3 signifie :
  • 3 secondes entre deux tentatives
  • 3 tentatives autorisées avant bannissement
  • 3 bannissements maximum
  • 3 adresses IP autorisées

✅ Réponse : 3 tentatives autorisées avant bannissement

Quelle commande permet de voir l'état de la prison sshd ?
  • sudo fail2ban-client status
  • sudo fail2ban-client status sshd
  • sudo systemctl status fail2ban
  • sudo fail2ban-client get sshd

✅ Réponse : sudo fail2ban-client status sshd

Pour débannir manuellement une IP, on utilise :
  • sudo fail2ban-client unbanip sshd 192.168.1.100
  • sudo fail2ban-client set sshd unbanip 192.168.1.100
  • sudo fail2ban-client remove sshd 192.168.1.100
  • sudo fail2ban-client delete sshd 192.168.1.100

✅ Réponse : sudo fail2ban-client set sshd unbanip 192.168.1.100

La prison recidive permet de :
  • bloquer définitivement les IP récidivistes
  • augmenter la durée de bannissement pour les IP déjà bannies
  • diminuer le nombre de tentatives autorisées
  • changer le port SSH

✅ Réponse : augmenter la durée de bannissement pour les IP déjà bannies

🎯 Passer l'évaluation de cette fiche