Kennisbank › Beveiliging › Configurer Fail2ban contre les attaques par force brute
beveiliging gemiddeld 29 August 2026

Configurer Fail2ban contre les attaques par force brute

Configurer Fail2ban contre les attaques par force brute Ce guide explique comment installer et configurer Fail2ban sur Linux pour protéger SSH contre les attaques par force brute.

sudo apt update && sudo apt -y install fail2ban

Sur les systèmes basés sur RHEL, utilisez `dnf` :

sudo dnf -y install fail2ban

Ces deux commandes installent Fail2ban avec toutes les dépendances Python nécessaires au fonctionnement du service.

2. Activer et démarrer le service

Fail2ban fonctionne comme un service systemd. Activez le service pour qu’il démarre automatiquement au démarrage du serveur, puis lancez-le immédiatement :

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

La première commande enregistre le service pour un démarrage automatique. La deuxième commande active le démon immédiatement.

3. Créer le fichier de configuration

La configuration par défaut se trouve dans `/etc/fail2ban/jail.conf`. Ne modifiez pas ce fichier directement — les mises à jour de paquets l’écraseraient. Créez plutôt un fichier local qui remplace les valeurs par défaut :

sudo nano /etc/fail2ban/jail.local

Ce fichier est conservé lors des mises à jour système et a priorité sur `jail.conf`.

4. Définir les paramètres globaux

La section `[DEFAULT]` dans `jail.local` contient les paramètres qui s’appliquent à tous les services. Définissez les deux valeurs les plus importantes :

[DEFAULT]
bantime = 3600
maxretry = 3

`bantime = 3600` bloque une adresse IP pendant 3600 secondes (une heure). `maxretry = 3` signifie qu’une adresse IP est bloquée après trois tentatives de connexion échouées. Ces valeurs offrent un équilibre entre sécurité et facilité d’utilisation : les utilisateurs qui se trompent de mot de passe par accident ne sont pas exclus trop longtemps, tandis que les attaquants sont efficacement arrêtés.

5. Activer la jail SSH

Ajoutez une section `[sshd]` à `jail.local` pour activer Fail2ban pour SSH :

[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600

Cette configuration analyse `/var/log/auth.log`, le fichier journal standard pour l’authentification sur Ubuntu et Debian. La valeur `filter = sshd` fait référence à `/etc/fail2ban/filter.d/sshd.conf`, qui reconnaît des motifs tels que « Failed password » et « Invalid user ». Sur les systèmes basés sur RHEL, le fichier journal se trouve dans `/var/log/secure` — adaptez `logpath` en conséquence.

6. Charger la configuration

Fail2ban ne lit pas automatiquement les modifications de configuration. Chargez les nouveaux paramètres avec le client :

sudo fail2ban-client reload

Cette commande applique la configuration sans redémarrer le service. Le modèle client-serveur de Fail2ban le permet : le `fail2ban-client` communique avec le `fail2ban-server` qui tourne en arrière-plan.

7. Vérifier le statut

Vérifiez que la jail SSH est active et quelles adresses IP sont actuellement bloquées :

sudo fail2ban-client status sshd

La sortie affiche le nombre d’adresses IP actuellement bloquées et le nombre total de bannissements depuis le démarrage du service.

8. Sécuriser d’autres services

Fail2ban ne fonctionne pas uniquement pour SSH. Ajoutez des sections pour d’autres services accessibles publiquement. Pour l’authentification HTTP nginx :

[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 3
bantime = 3600

Pour les panneaux d’administration Plesk, Fail2ban analyse les fichiers journaux des services Plesk à la recherche d’erreurs d’authentification. La documentation Plesk confirme qu’il reconnaît les attaques connues et bloque automatiquement les adresses IP dès que le seuil est atteint.

Vérification

Vérifiez que le service Fail2ban fonctionne :

sudo systemctl status fail2ban

La sortie doit afficher `active (running)`. Vérifiez ensuite que la jail SSH est correctement chargée :

sudo fail2ban-client status

Cette commande affiche une liste de toutes les jails actives. La liste doit contenir `sshd`. Enfin, simulez une attaque en vous connectant trois fois avec un mauvais mot de passe depuis la même adresse IP. Vérifiez ensuite si cette adresse IP figure dans la liste de bannissement :

sudo fail2ban-client status sshd

L’adresse IP doit apparaître sous « Banned IP list ».

Problèmes fréquents

Fail2ban ne démarre pas après l’installation

Vérifiez que le pare-feu est actif. Fail2ban ajoute des règles à `iptables`, `nftables` ou `firewalld` — si aucun pare-feu n’est actif, le service ne peut pas démarrer. Consultez les journaux :

sudo journalctl -u fail2ban -n 50

L’adresse IP n’est pas bloquée malgré les tentatives échouées

Vérifiez que le chemin du journal est correct. Sur Debian/Ubuntu, la journalisation SSH se trouve dans `/var/log/auth.log`, sur les systèmes basés sur RHEL dans `/var/log/secure`. Définissez `logpath` dans la section `[sshd]` sur le fichier approprié. Vérifiez également que `enabled = true` figure dans la section — sans cette ligne, la jail reste inactive.

Supprimer manuellement une adresse IP bloquée

Un utilisateur bloqué par erreur peut être débloqué directement :

sudo fail2ban-client set sshd unbanip 192.168.1.100

Remplacez `192.168.1.100` par l'adresse IP réelle. L'adresse IP est immédiatement retirée de la liste de bannissement et la règle de pare-feu est levée.

Fail2ban constitue une couche dans une stratégie de sécurité — il ne remplace pas des mots de passe robustes, des clés SSH ou un pare-feu correctement configuré. Une simulation d'attaque depuis un environnement de test a montré que Fail2ban a détecté 28 tentatives de connexion échouées depuis une seule adresse IP et a bloqué cette adresse dès que le seuil de trois tentatives a été atteint. Cette rapidité fait la différence entre un serveur qui reste debout et un serveur qui est compromis — mais l'attaque suivante est déjà en route, et Fail2ban n'est que le premier filet de sécurité.

← Retour à la base de connaissances
← Terug naar kennisbank