Installer et configurer Fail2ban pour protéger SSH sur Ubuntu Server 24.04¶
Résumé
Tutoriel pas-à-pas pour installer Fail2ban sur Ubuntu Server 24.04, activer la protection du service SSH, vérifier qu'une jail fonctionne correctement et savoir débannir une adresse IP pendant un TP ou un lab.
| Propriété | Valeur |
|---|---|
| Difficulté | Débutant |
| OS / Environnement | Ubuntu Server 24.04 |
| Dernière mise à jour | 2026-05-30 |
Contexte¶
Quand un serveur SSH est exposé, même dans un petit lab, il reçoit souvent des tentatives de connexion ratées. Cela peut venir :
- d'erreurs de mot de passe répétées ;
- de scans automatiques ;
- de robots qui testent des identifiants courants ;
- d'un stagiaire qui oublie quel compte il doit utiliser.
Fail2ban surveille les journaux système et bannit temporairement une adresse IP quand trop d'échecs sont détectés.
Dans ce TP, l'objectif est simple :
- installer
fail2ban; - activer une jail
sshd; - définir des seuils faciles à comprendre ;
- vérifier que la protection fonctionne ;
- savoir retirer un bannissement si besoin.
Prérequis¶
- Une VM ou un serveur de test sous Ubuntu Server 24.04
- Un compte avec les droits
sudo - Le service OpenSSH Server installé et démarré
- Idéalement une deuxième machine ou une autre VM pour faire les tests SSH
Ne modifiez pas jail.conf directement
La documentation Fail2ban recommande de faire ses personnalisations dans jail.local ou dans des fichiers .local sous /etc/fail2ban/jail.d/.
C'est plus propre et cela évite d'écraser vos réglages lors d'une mise à jour.
Procédure¶
Étape 1 : vérifier que SSH fonctionne déjà¶
Avant de protéger SSH, commencez par confirmer que le service existe et écoute bien.
Si OpenSSH Server n'est pas encore installé :
Résultat attendu
Le service ssh doit être actif et le port 22/tcp doit apparaître à l'écoute.
Étape 2 : installer Fail2ban¶
Installez le paquet depuis les dépôts Ubuntu :
Vérifiez ensuite l'état du service :
Vous pouvez aussi tester la communication avec le client Fail2ban :
Résultat attendu
La commande fail2ban-client ping doit répondre Server replied: pong.
Étape 3 : repérer les fichiers de configuration utiles¶
Sur Ubuntu, les emplacements à connaître sont :
/etc/fail2ban/jail.conf: configuration par défaut du paquet ;/etc/fail2ban/jail.local: surcharge locale globale ;/etc/fail2ban/jail.d/*.local: surcharges locales plus ciblées.
Pour un TP simple et lisible, nous allons créer un fichier dédié à SSH.
Étape 4 : créer une jail pour sshd¶
Créez le fichier /etc/fail2ban/jail.d/sshd.local :
Collez le contenu suivant :
Comprendre les paramètres¶
enabled = true: active la jailsshd;backend = systemd: lit les événements depuis le journal systemd ;port = ssh: cible le service SSH ;maxretry = 5: bannissement après 5 échecs ;findtime = 10m: les 5 échecs doivent se produire dans les 10 minutes ;bantime = 1h: l'adresse IP est bannie pendant 1 heure.
Pourquoi backend = systemd ?
Sur Ubuntu Server 24.04, cette approche est pratique et robuste pour surveiller les événements de sshd sans dépendre d'un chemin de fichier de log particulier.
Étape 5 : redémarrer Fail2ban et activer le démarrage automatique¶
Rechargez la configuration puis activez le service au boot :
Vérifiez ensuite son état :
Si vous voulez lire les derniers messages du service :
Étape 6 : vérifier que la jail sshd est bien chargée¶
Affichez d'abord la liste générale des jails actives :
Puis contrôlez la jail SSH précisément :
Exemple de résultat attendu :
Status for the jail: sshd
|- Filter
| |- Currently failed: 0
| |- Total failed: 0
| `- Journal matches: ...
`- Actions
|- Currently banned: 0
|- Total banned: 0
`- Banned IP list:
Résultat attendu
La jail sshd doit apparaître dans la sortie de fail2ban-client status.
Étape 7 : tester le fonctionnement en lab¶
Depuis une autre machine du lab, essayez plusieurs connexions SSH volontairement erronées.
Exemple :
Entrez un mauvais mot de passe plusieurs fois, puis recommencez jusqu'à dépasser le seuil configuré.
Ensuite, sur le serveur protégé, contrôlez l'état :
Vous pouvez aussi regarder les événements récents :
Résultat attendu
Après plusieurs échecs rapprochés, l'adresse IP de la machine de test doit apparaître dans Banned IP list.
Étape 8 : débannir une adresse IP si nécessaire¶
En TP, il est fréquent de se bannir soi-même en faisant les tests.
Pour retirer manuellement une IP de la jail sshd :
Exemple :
Vérifiez ensuite :
Étape 9 : ajuster le niveau de tolérance¶
Une fois le premier TP réussi, vous pouvez adapter le comportement de Fail2ban.
Exemple plus strict :
Après chaque modification du fichier .local, redémarrez le service :
Bon réflexe
Commencez par une configuration simple et compréhensible avant de durcir fortement les seuils. En environnement pédagogique, il vaut mieux voir clairement ce qui se passe plutôt que de rendre le diagnostic trop compliqué.
Aide-mémoire¶
| Commande / Action | Description |
|---|---|
sudo apt install -y fail2ban |
Installer Fail2ban |
systemctl status fail2ban --no-pager |
Vérifier l'état du service |
sudo fail2ban-client ping |
Tester la communication avec le serveur Fail2ban |
sudo fail2ban-client status |
Lister les jails actives |
sudo fail2ban-client status sshd |
Afficher le détail de la jail SSH |
sudo journalctl -u fail2ban -n 50 --no-pager |
Lire les derniers journaux Fail2ban |
sudo systemctl restart fail2ban |
Recharger la configuration |
sudo fail2ban-client set sshd unbanip IP |
Débannir une adresse IP |
Vérification¶
Après la configuration, contrôlez les points suivants.
1. Le service Fail2ban est actif¶
Résultat attendu
La commande doit retourner active.
2. La jail sshd est chargée¶
Résultat attendu
La jail sshd doit être listée et ne pas remonter d'erreur.
3. Une IP peut être bannie après plusieurs échecs¶
Résultat attendu
En cas de test de connexion raté répété dans le lab, l'IP source doit apparaître dans Banned IP list.
Checklist¶
- OpenSSH vérifié ou installé
- Fail2ban installé
- Fichier
.localcréé sans modifierjail.conf - Jail
sshdactivée - Service redémarré et activé au démarrage
- Vérification de
fail2ban-client status sshd - Procédure de débannissement connue
Glossaire¶
Fail2ban- Outil de protection qui surveille des journaux et bannit temporairement des adresses IP après trop d'échecs.
Jail- Bloc de configuration Fail2ban associant un service, un filtre et une action de bannissement.
sshd- Service serveur SSH utilisé pour l'administration distante des machines Linux.
backend- Méthode utilisée par Fail2ban pour lire les événements, par exemple
systemdou un fichier de log. bantime- Durée pendant laquelle l'adresse IP reste bannie.
Ressources¶
- Fail2ban — How Fail2Ban Works — Explication officielle du fonctionnement général
- Manpage Ubuntu
jail.conf(5)— Référence surjail.conf,jail.localet les paramètres des jails - Manpage Ubuntu
fail2ban-client(1)— Commandes de contrôle, statut et débannissement