Fail2ban überwacht die Anmeldeversuche, und wenn eine IP zu oft scheitert, sperrt es sie eine Zeit lang in der Firewall. Gegen Bots, die Passwörter durchprobieren, ist das sehr wirksam und verbraucht kaum Ressourcen.
Installieren
# Ubuntu / Debian
apt install -y fail2ban python3-systemd
# Rocky Linux
dnf install -y epel-release && dnf install -y fail2ban
Konfigurieren
Lege /etc/fail2ban/jail.local an (bearbeite nicht jail.conf: Die wird bei Updates überschrieben):
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
# Trag hier deine IP von zu Hause ein, damit du dich nie selbst sperrst
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
Damit wird eine IP, die in 10 Minuten 5-mal scheitert, für eine Stunde gesperrt. Die Zeile backend = systemd sorgt dafür, dass es auch unter Debian 12 funktioniert, das die klassische Datei auth.log nicht mehr schreibt.
systemctl enable --now fail2ban
systemctl restart fail2ban
Sehen, was es tut
fail2ban-client status sshd
Es zeigt dir, wie viele Versuche es gesehen hat und welche IPs gerade gesperrt sind.
Wenn du dich selbst sperrst
Warte, bis die Sperrzeit abgelaufen ist, oder melde dich über die VNC-Konsole an und entsperre dich:
fail2ban-client set sshd unbanip 198.51.100.7
Fail2ban ist eine gute zusätzliche Schicht, aber der eigentliche Schutz ist, gar keine Passwörter zum Erraten zu haben: melde dich mit SSH-Schlüssel an und deaktiviere die Passwörter.