Protéger SSH avec Fail2ban

2 min de lecture07 novembre 2026

Un VPS exposé sur Internet reçoit des tentatives de connexion SSH automatisées dès les premières minutes. Fail2ban lit les journaux d'authentification et bannit temporairement les adresses qui échouent trop souvent. Il ne remplace ni les clés SSH ni la désactivation du compte root, mais il réduit fortement le bruit et ralentit les attaques par dictionnaire.

Installer le service

Sur Debian 13, le paquet est dans les dépôts officiels :

Bash
sudo apt update
sudo apt install fail2ban
sudo systemctl status fail2ban

Le service démarre et s'active au boot. Debian fournit /etc/fail2ban/jail.conf, mais ce fichier est remplacé lors des mises à jour du paquet. Ne l'éditez pas : créez un fichier local qui sera fusionné par-dessus.

Configurer la prison sshd

Créez /etc/fail2ban/jail.local :

INI
[sshd]
enabled = true
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1
  • backend = systemd lit le journal systemd, ce qui correspond à Debian 13 où auth.log n'est pas garanti.
  • maxretry et findtime définissent le seuil : cinq échecs en dix minutes.
  • bantime est la durée du bannissement. Une heure dissuade sans immobiliser un utilisateur légitime qui s'est trompé.
  • ignoreip liste les adresses jamais bannies. Ajoutez-y votre adresse d'administration si elle est fixe, jamais un préfixe trop large.

Rechargez puis vérifiez :

Bash
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

La sortie indique le nombre d'échecs suivis et la liste des adresses bannies.

Administrer les bannissements

Bash
sudo fail2ban-client set sshd unbanip ADRESSE_IP
sudo journalctl -u fail2ban -n 50 --no-pager

Pour tester sans risque, générez quelques échecs depuis une machine que vous contrôlez, puis débannissez cette adresse. N'utilisez pas un service tiers : le test doit rester sur votre infrastructure.

Un bannissement persistant peut être obtenu avec bantime.increment = true dans la section [DEFAULT], mais commencez simple. Un bannissement long sur une adresse partagée peut couper des utilisateurs légitimes.

Éviter le verrouillage

  • Gardez une session SSH ouverte pendant toute modification, et sachez ouvrir la console noVNC depuis https://dash.neoheberg.fr.
  • Préférez l'authentification par clé : Fail2ban ne bloque que les échecs visibles, pas une clé volée.
  • Vérifiez que ignoreip contient bien 127.0.0.1/8 et ::1, sinon un script local peut se bannir.
  • Après un changement de configuration SSH, contrôlez sudo sshd -t avant de recharger.

Vérifier

Bash
sudo fail2ban-client status
sudo fail2ban-client get sshd bantime
sudo systemctl is-enabled fail2ban

status doit lister la prison sshd active. Après une journée, journalctl -u fail2ban montre les bannissements réels : c'est la preuve que le filtrage fonctionne. Si rien n'apparaît, vérifiez que le nom de la prison correspond au service réellement utilisé et que le journal contient des échecs.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi