O Fail2ban vigia as tentativas de início de sessão e, quando um IP falha vezes demais, bloqueia-o durante um tempo na firewall. Contra os bots que testam palavras-passe é muito eficaz e quase não gasta recursos.
Instalá-lo
# Ubuntu / Debian
apt install -y fail2ban python3-systemd
# Rocky Linux
dnf install -y epel-release && dnf install -y fail2ban
Configurá-lo
Cria /etc/fail2ban/jail.local (não edites o jail.conf: é substituído nas atualizações):
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
# Põe aqui o IP de tua casa para nunca te bloqueares a ti mesmo
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
Com isto, um IP que falhe 5 vezes em 10 minutos fica bloqueado uma hora. A linha backend = systemd faz com que funcione também no Debian 12, que já não escreve o ficheiro auth.log clássico.
systemctl enable --now fail2ban
systemctl restart fail2ban
Ver o que está a fazer
fail2ban-client status sshd
Diz-te quantas tentativas viu e que IP tem bloqueados neste momento.
Se te bloqueares a ti mesmo
Espera que passe o tempo de bloqueio, ou entra pela consola VNC e desbloqueia-te:
fail2ban-client set sshd unbanip 198.51.100.7
O Fail2ban é uma boa camada a mais, mas a proteção a sério é não ter palavras-passe para adivinhar: entra com chave SSH e desativa as palavras-passe.