Fail2ban surveille les tentatives de connexion et, quand une IP échoue trop souvent, il la bloque un moment dans le pare-feu. Contre les bots qui testent des mots de passe, c'est très efficace et ça ne consomme presque rien.
L'installer
# Ubuntu / Debian
apt install -y fail2ban python3-systemd
# Rocky Linux
dnf install -y epel-release && dnf install -y fail2ban
Le configurer
Crée /etc/fail2ban/jail.local (ne modifie pas jail.conf : il est écrasé à chaque mise à jour) :
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
# Mets ici l'IP de chez toi pour ne jamais te bloquer toi-même
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
Avec ça, une IP qui échoue 5 fois en 10 minutes est bloquée une heure. La ligne backend = systemd le fait fonctionner aussi sur Debian 12, qui n'écrit plus le fichier auth.log classique.
systemctl enable --now fail2ban
systemctl restart fail2ban
Voir ce qu'il fait
fail2ban-client status sshd
Il t'indique combien de tentatives il a vues et quelles IP il bloque en ce moment.
Si tu te bloques toi-même
Attends la fin du temps de blocage, ou entre par la console VNC et débloque-toi :
fail2ban-client set sshd unbanip 198.51.100.7
Fail2ban est une bonne couche supplémentaire, mais la vraie protection, c'est de ne pas avoir de mots de passe à deviner : connecte-toi avec une clé SSH et désactive les mots de passe.