Fail2ban vigila los intentos de inicio de sesión y, cuando una IP falla demasiadas veces, la bloquea un rato en el cortafuegos. Contra los bots que prueban contraseñas es muy eficaz y apenas consume nada.
Instalarlo
# Ubuntu / Debian
apt install -y fail2ban python3-systemd
# Rocky Linux
dnf install -y epel-release && dnf install -y fail2ban
Configurarlo
Crea /etc/fail2ban/jail.local (no edites jail.conf: se sobrescribe al actualizar):
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
# Pon aquí tu IP de casa para no bloquearte nunca a ti mismo
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
Con esto, una IP que falle 5 veces en 10 minutos queda bloqueada una hora. La línea backend = systemd hace que funcione también en Debian 12, que ya no escribe el archivo auth.log clásico.
systemctl enable --now fail2ban
systemctl restart fail2ban
Ver qué está haciendo
fail2ban-client status sshd
Te dice cuántos intentos ha visto y qué IPs tiene bloqueadas ahora mismo.
Si te bloqueas a ti mismo
Espera a que pase el tiempo de bloqueo, o entra por la consola VNC y desbloquéate:
fail2ban-client set sshd unbanip 198.51.100.7
Fail2ban es una buena capa más, pero la protección de verdad es no tener contraseñas que adivinar: entra con clave SSH y desactiva las contraseñas.