Protéger SSH avec Fail2ban
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 :
sudo apt update
sudo apt install fail2ban
sudo systemctl status fail2banLe 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 :
[sshd]
enabled = true
backend = systemd
maxretry = 5
findtime = 10m
bantime = 1h
ignoreip = 127.0.0.1/8 ::1backend = systemdlit le journal systemd, ce qui correspond à Debian 13 oùauth.logn'est pas garanti.maxretryetfindtimedéfinissent le seuil : cinq échecs en dix minutes.bantimeest la durée du bannissement. Une heure dissuade sans immobiliser un utilisateur légitime qui s'est trompé.ignoreipliste les adresses jamais bannies. Ajoutez-y votre adresse d'administration si elle est fixe, jamais un préfixe trop large.
Rechargez puis vérifiez :
sudo systemctl restart fail2ban
sudo fail2ban-client status sshdLa sortie indique le nombre d'échecs suivis et la liste des adresses bannies.
Administrer les bannissements
sudo fail2ban-client set sshd unbanip ADRESSE_IP
sudo journalctl -u fail2ban -n 50 --no-pagerPour 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
ignoreipcontient bien127.0.0.1/8et::1, sinon un script local peut se bannir. - Après un changement de configuration SSH, contrôlez
sudo sshd -tavant de recharger.
Vérifier
sudo fail2ban-client status
sudo fail2ban-client get sshd bantime
sudo systemctl is-enabled fail2banstatus 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
- Configurer le pare-feu UFWPolitique par défaut, autorisation de SSH, HTTP et HTTPS, IPv6 et précaution avec Docker.
- Changer le port SSH sans se verrouillerDéplacer SSH vers un autre port en ouvrant le pare-feu d'abord et en testant depuis une seconde session.
- Configurer les clés SSHssh-keygen ed25519, ssh-copy-id, permissions et désactivation du mot de passe sans se verrouiller.