Intermédiaire ⏱ 11 min Mis à jour le 29 juillet 2026

Protéger votre VPS des attaques par force brute avec Fail2ban

Votre VPS subit des milliers de tentatives de connexion automatisées. Fail2ban détecte ces attaques et bannit les IP fautives. Voici comment l'installer et le configurer.

Le problème : les attaques par force brute contre SSH

Fail2ban VPS protège votre serveur contre les tentatives répétées d’authentification, notamment sur SSH. Une adresse IP publique peut être rapidement détectée par des outils automatisés qui testent des noms d’utilisateur et des mots de passe.

Le volume varie selon l’adresse IP, les services exposés et la durée de fonctionnement du serveur. Vous pouvez néanmoins constater de nombreuses tentatives dans les journaux d’authentification, même si vous n’avez communiqué l’adresse du VPS à personne.

Fail2ban fonctionne selon ce principe :

Tentatives de connexion échouées

Lecture des journaux par Fail2ban

Dépassement du nombre autorisé

Ajout temporaire d'une règle de blocage

Fail2ban ne bloque pas une attaque avant qu’elle ne commence. Il analyse les journaux, reconnaît les échecs correspondant à un filtre, puis déclenche une action de bannissement lorsqu’une adresse dépasse le seuil configuré.

Il complète plusieurs protections indispensables :

  • authentification SSH par clé ;
  • désactivation de la connexion par mot de passe ;
  • utilisation d’un utilisateur non-root ;
  • pare-feu limitant les ports accessibles ;
  • mises à jour régulières du système.

Fail2ban ne remplace pas une clé SSH ni un pare-feu. Il ajoute une protection dynamique contre les tentatives répétées provenant d’une même adresse IP.

Installer Fail2ban sur Debian ou Ubuntu

Connectez-vous au serveur avec un utilisateur disposant de sudo. Consultez le guide pour vous connecter à un VPS en SSH si votre accès n’est pas encore configuré.

Mettez à jour l’index des paquets :

sudo apt update

Installez Fail2ban :

sudo apt install -y fail2ban

Activez et démarrez le service :

sudo systemctl enable --now fail2ban

Vérifiez son état :

sudo systemctl status fail2ban

Le résultat attendu contient :

Active: active (running)

Vous pouvez également vérifier la communication avec le serveur Fail2ban :

sudo fail2ban-client ping

Réponse attendue :

Server replied: pong

Si le service ne démarre pas encore, ne concluez pas immédiatement à un problème d’installation. Une jail activée avec un journal introuvable ou une erreur dans la configuration peut empêcher Fail2ban de fonctionner.

Pour renforcer les autres éléments du serveur, consultez le guide pour sécuriser votre serveur Linux.

Configurer Fail2ban dans jail.local

Les réglages distribués avec le paquet se trouvent notamment dans :

/etc/fail2ban/jail.conf

Ne modifiez pas directement ce fichier. Il appartient au paquet et peut évoluer ou être remplacé pendant une mise à jour.

Créez plutôt un fichier local contenant uniquement vos personnalisations :

sudo nano /etc/fail2ban/jail.local

N’éditez pas jail.conf. Placez vos changements dans jail.local ou dans un fichier .local sous jail.d/ afin de préserver votre configuration lors des mises à jour.

Il n’est pas nécessaire de recopier l’intégralité de jail.conf. Un petit fichier contenant uniquement les valeurs modifiées est plus simple à comprendre et à maintenir.

La structure générale utilise des sections :

[DEFAULT]
# Réglages communs aux jails

[sshd]
# Réglages propres à SSH

Fail2ban charge d’abord les fichiers .conf, puis applique les valeurs définies dans les fichiers .local.

Avant de redémarrer le service, testez la configuration :

sudo fail2ban-client -t

Si le test ne signale pas d’erreur, vous pouvez appliquer les changements.

Configurer la jail SSH de Fail2ban VPS

Ajoutez une configuration proche de celle-ci dans /etc/fail2ban/jail.local :

[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
backend = systemd

Les paramètres principaux sont :

ParamètreFonction
enabledActive ou désactive la jail
portPort ou nom du service à protéger
maxretryNombre d’échecs autorisés
findtimeFenêtre pendant laquelle les échecs sont comptés
bantimeDurée du bannissement
backendSource utilisée pour lire les événements

Avec cet exemple, une adresse est bannie pendant une heure si cinq échecs reconnus sont détectés en dix minutes.

5 échecs
dans une période de 10 minutes
→ bannissement pendant 1 heure

Adaptez les valeurs à votre usage. Un seuil trop faible peut bloquer un utilisateur légitime qui se trompe plusieurs fois. Un seuil trop élevé réduit l’intérêt du mécanisme.

Utiliser un port SSH personnalisé

Si SSH écoute sur un autre port, remplacez :

port = ssh

par le port réel :

port = 2222

Vérifiez le port actif avec :

sudo sshd -T | grep '^port'

La modification du port SSH ne supprime pas le besoin de Fail2ban. Les scanners peuvent également découvrir des services placés sur des ports non standards.

Utiliser le backend systemd

Sur les systèmes où SSH écrit dans le journal systemd plutôt que dans /var/log/auth.log, utilisez :

backend = systemd

Dans ce cas, ne définissez pas inutilement un logpath vers un fichier absent.

Une erreur caractéristique est :

Have not found any log file for sshd jail

Le backend systemd permet à Fail2ban de surveiller directement les événements disponibles dans le journal.

Testez et redémarrez :

sudo fail2ban-client -t
sudo systemctl restart fail2ban

Puis contrôlez le service :

sudo systemctl status fail2ban

Éviter de bannir votre propre adresse avec ignoreip

Fail2ban peut aussi bloquer votre adresse si vous accumulez les échecs de connexion. Vous pouvez exclure une adresse IP fixe et maîtrisée avec ignoreip.

Dans la section [DEFAULT] :

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 203.0.113.25
bantime = 1h
findtime = 10m
maxretry = 5

Remplacez 203.0.113.25 par votre véritable adresse IP publique fixe.

Vous pouvez vérifier votre adresse publique depuis votre réseau habituel, puis vous assurer qu’elle ne change pas régulièrement avant de l’ajouter.

N’ajoutez pas un réseau trop large dans ignoreip. Toutes les adresses correspondantes échapperaient aux bannissements, y compris une adresse potentiellement hostile.

Si votre connexion utilise une adresse dynamique, la whitelist peut devenir obsolète. Dans ce cas, privilégiez :

  • une authentification par clé SSH ;
  • une session de secours maintenue pendant les tests ;
  • une console de récupération accessible depuis votre espace client ;
  • des seuils raisonnables.

Avant de redémarrer Fail2ban, gardez votre session SSH actuelle ouverte. Testez ensuite une nouvelle connexion dans un second terminal.

Le guide sur la connexion SSH par clé permet de réduire fortement le risque lié aux mots de passe.

Vérifier et gérer les bannissements

Affichez les jails actives :

sudo fail2ban-client status

Vous devez retrouver une ligne contenant :

Jail list: sshd

Affichez le détail de la jail SSH :

sudo fail2ban-client status sshd

Le résultat indique notamment :

  • les échecs actuellement détectés ;
  • le nombre total d’échecs ;
  • les adresses actuellement bannies ;
  • le nombre total de bannissements.

Exemple de structure :

Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  `- Total failed: 12
`- Actions
   |- Currently banned: 1
   |- Total banned: 3
   `- Banned IP list: 198.51.100.20

Débannir une adresse IP

Si une adresse légitime a été bloquée :

sudo fail2ban-client set sshd unbanip 198.51.100.20

Vérifiez ensuite :

sudo fail2ban-client status sshd

N’ajoutez pas systématiquement chaque adresse débannie dans ignoreip. Recherchez d’abord pourquoi les échecs se sont produits.

Consulter les journaux

Affichez les événements récents du service :

sudo journalctl -u fail2ban -n 100 --no-pager

Suivez-les en direct :

sudo journalctl -u fail2ban -f

Selon la configuration du paquet, un journal peut également exister ici :

/var/log/fail2ban.log

Vous pouvez le suivre avec :

sudo tail -f /var/log/fail2ban.log

Les événements utiles contiennent généralement :

Found
Ban
Unban

Pour appliquer une modification :

sudo fail2ban-client -t
sudo systemctl restart fail2ban

Vérifiez toujours le statut après le redémarrage.

Protéger d’autres services

Fail2ban peut surveiller d’autres applications lorsqu’un filtre adapté existe et que le service produit des journaux exploitables.

Des jails sont notamment disponibles ou peuvent être configurées pour :

  • Nginx ;
  • Apache ;
  • certains services de messagerie ;
  • des systèmes d’authentification web ;
  • des applications produisant des logs structurés.

N’activez pas une jail au hasard. Vérifiez :

  1. que le service concerné est réellement installé ;
  2. que son filtre correspond au format de vos logs ;
  3. que la source de journal existe ;
  4. que l’action de bannissement convient à votre pare-feu ;
  5. que les faux positifs sont maîtrisés.

Pour SSH, associez Fail2ban à un pare-feu correctement configuré. Le guide du pare-feu UFW sur un VPS explique comment fermer les ports inutiles.

Des sauvegardes automatiques sont incluses pour vous aider à restaurer. Conservez aussi vos propres exports réguliers : vous restez responsable de vos données.

En résumé

  • Fail2ban VPS analyse les journaux et bloque temporairement les adresses dépassant un seuil d’échecs.
  • Installez-le avec sudo apt install -y fail2ban.
  • Activez le service avec sudo systemctl enable --now fail2ban.
  • Ne modifiez jamais directement /etc/fail2ban/jail.conf.
  • Placez vos personnalisations dans /etc/fail2ban/jail.local.
  • Activez la protection SSH avec une section [sshd].
  • Configurez maxretry, findtime et bantime selon votre usage.
  • Utilisez backend = systemd si les événements SSH se trouvent dans le journal systemd.
  • Indiquez le véritable port si SSH n’utilise pas le port standard.
  • Ajoutez uniquement une adresse fixe et fiable dans ignoreip.
  • Gardez une session de secours ouverte pendant les tests.
  • Testez la configuration avec fail2ban-client -t.
  • Vérifiez les bannissements avec fail2ban-client status sshd.
  • Débannissez une adresse avec fail2ban-client set sshd unbanip ADRESSE_IP.
  • Fail2ban complète la clé SSH et UFW, mais ne les remplace pas.
  • Pour utiliser Fail2ban VPS sur une infrastructure hébergée en France avec stockage NVMe, Anti-DDoS L3/L4/L7 inclus, panel de gestion et support francophone, découvrez les offres VPS TalCloud.