Sécurité

Fail2ban : bloquer automatiquement les tentatives de connexion suspectes

Un VPS exposé sur Internet reçoit en permanence des tentatives de connexion automatisées. Fail2ban détecte ces échecs répétés dans les journaux systèmes et bannit l'IP source avant que l'attaque ne progresse.

Un serveur expose sur Internet recoit, dès les premières minutes de sa mise en service, des tentatives de connexion automatisées sur SSH, FTP ou les panneaux d'administration. Pas besoin d'être une grande entreprise pour être visé : des robots scannent en continu des plages d'adresses IP entières à la recherche de mots de passe faibles ou de comptes mal protégés. Fail2ban est l'un des outils les plus simples et les plus efficaces pour couper ce bruit de fond avant qu'il ne tourne à l'incident.

Comment fonctionne Fail2ban

Fail2ban surveille des fichiers de journaux comme /var/log/auth.log ou /var/log/secure, repère des motifs d'échec d'authentification répétés grâce à des expressions régulières appelées « filtres », puis bannit automatiquement l'adresse IP source en l'ajoutant temporairement aux règles du pare-feu (iptables, nftables ou firewalld selon la distribution). Chaque service surveillé correspond à une « jail » (prison) distincte :

  • sshd, la plus utilisée, pour bloquer le brute-force sur l'accès en ligne de commande.
  • postfix et dovecot, pour protéger l'authentification SMTP et IMAP d'un serveur mail.
  • vsftpd ou proftpd, pour l'accès FTP.
  • nginx-http-auth ou des jails tierces pour WordPress, qui ciblent les échecs répétés sur wp-login.php.

Trois réglages pilotent le comportement de chaque jail : maxretry (nombre d'échecs tolérés avant bannissement), findtime (la fenêtre de temps dans laquelle ces échecs sont comptés) et bantime (la durée du bannissement). Une jail « recidive » peut aussi allonger automatiquement la peine des IP qui reviennent après un premier bannissement.

Mise en place sur un VPS Linux

L'installation se fait via le gestionnaire de paquets de la distribution (apt, dnf...), puis la configuration se fait toujours dans un fichier jail.local distinct de jail.conf : ce dernier est écrasé à chaque mise à jour du paquet, alors que jail.local survit. Il est essentiel d'ajouter sa propre adresse IP (ou celle du bureau) dans la directive ignoreip avant d'activer le service, sous peine de se bannir soi-même après quelques essais de mot de passe malheureux. Une fois actif, la commande fail2ban-client status sshd affiche la liste des IP actuellement bannies, et fail2ban-client unban <ip> permet de lever un bannissement en cas d'erreur.

Les limites à connaître

Fail2ban agit après coup : il réagit à un comportement déjà observé dans les journaux, ce qui signifie que les premières tentatives passent avant le blocage. Il ne remplace donc ni un pare-feu réseau correctement configuré en amont, ni l'authentification par clé SSH, qui rend le brute-force par mot de passe simplement inopérant. Sur un hébergement mutualisé, vous n'avez pas l'accès root nécessaire pour l'installer vous-même : cette protection est alors gérée directement par l'hébergeur au niveau de l'infrastructure partagée. Enfin, un bantime mal calibré peut bloquer des adresses IP partagées par plusieurs utilisateurs légitimes (CGNAT, proxy d'entreprise), d'où l'intérêt de rester raisonnable sur la durée de bannissement plutôt que de viser le blocage permanent.

Au-delà de SSH : surveiller d'autres services exposés

Limiter Fail2ban à la seule jail sshd revient à ne protéger qu'une partie de la surface d'attaque réelle d'un serveur. Dès qu'un VPS héberge un serveur mail ou un panneau d'administration web, d'autres jails méritent d'être activées :

  • Les jails postfix et dovecot, pour empêcher un attaquant de tester des milliers de combinaisons de mots de passe contre vos boîtes mail professionnelles.
  • La jail nginx-http-auth ou apache-auth, pour les zones protégées par une authentification HTTP basique.
  • Une jail personnalisée ciblant wp-login.php sur un site WordPress, en complément d'un plugin de limitation de tentatives côté CMS.

La jail recidive mérite une mention particulière : elle surveille le propre journal de Fail2ban pour repérer les adresses IP bannies à répétition sur de courtes périodes, et leur applique un bannissement nettement plus long. C'est un moyen simple de distinguer un utilisateur légitime qui s'est trompé une fois de mot de passe d'un script d'attaque automatisé qui revient sans cesse sous des angles différents.

Fail2ban remplace-t-il un pare-feu ?

Non, il le complète. Un pare-feu filtre selon des règles statiques (ports, protocoles, IP autorisées), tandis que Fail2ban ajoute une couche dynamique qui réagit au comportement observé dans les journaux au fil du temps.

Peut-on l'utiliser sur un hébergement mutualisé ?

Pas directement, car cela demande un accès shell complet avec les droits root. Sur un hébergement partagé, cette protection contre le brute-force est assurée en amont par l'hébergeur, au niveau du serveur lui-même.

Sur un VPS Linux, combiner Fail2ban, authentification par clé SSH et un pare-feu correctement configuré forme une base de sécurité solide dès la mise en service. Les offres VPS Linux de VSP TECH donnent l'accès root complet nécessaire pour appliquer ce type de durcissement, et notre équipe reste disponible via une demande de contact pour vous accompagner dans la configuration initiale.

À lire aussi

Articles similaires

Prêt à lancer votre projet web ?

Un conseiller VSP TECH vous aide à choisir la bonne offre, sans engagement.