Fail2ban monitoruje próby logowania i gdy z danego adresu IP przychodzi zbyt wiele nieudanych prób, blokuje go na jakiś czas w zaporze. Jest bardzo skuteczny przeciwko botom, które zgadują hasła, i prawie nie zużywa zasobów.
Instalacja
# Ubuntu / Debian
apt install -y fail2ban python3-systemd
# Rocky Linux
dnf install -y epel-release && dnf install -y fail2ban
Konfiguracja
Utwórz plik /etc/fail2ban/jail.local (nie edytuj jail.conf: jest nadpisywany przy aktualizacji):
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
# Dopisz tu swój domowy adres IP, aby nigdy nie zablokować sobie dostępu
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
backend = systemd
Dzięki temu adres IP, który w ciągu 10 minut 5 razy poda błędne dane, zostaje zablokowany na godzinę. Linia backend = systemd sprawia, że działa to także w Debianie 12, który nie zapisuje już klasycznego pliku auth.log.
systemctl enable --now fail2ban
systemctl restart fail2ban
Podgląd działania
fail2ban-client status sshd
Polecenie pokazuje, ile prób wykrył Fail2ban i które adresy IP są w tej chwili zablokowane.
Jeśli zablokujesz sobie dostęp
Poczekaj, aż minie czas blokady, albo zaloguj się przez konsolę VNC i odblokuj swój adres:
fail2ban-client set sshd unbanip 198.51.100.7
Fail2ban to dobra dodatkowa warstwa ochrony, ale prawdziwym zabezpieczeniem jest brak haseł, które można odgadnąć: loguj się kluczem SSH i wyłącz hasła.