Każdy serwer wystawiony do internetu jest bez przerwy sprawdzany przez boty, które próbują zgadnąć hasło do SSH i innych usług. Fail2ban automatycznie blokuje adresy IP po wielu błędnych próbach logowania, więc atak siłowy zostaje przerwany, zanim się powiedzie; to prosty dodatek do firewalla i utwardzania SSH z osobnego artykułu. Ten poradnik pokazuje, jak go zainstalować i skonfigurować.
Jak działa fail2ban
Fail2ban obserwuje logi serwera i reaguje na powtarzające się nieudane próby logowania. Działa według prostej zasady:
- Gdy z jednego adresu IP padnie zbyt wiele błędnych prób w określonym czasie, fail2ban blokuje ten adres regułą firewalla na ustalony okres,
- Po upływie czasu blokady adres jest automatycznie odblokowywany.
Reguły dla poszczególnych usług nazywane są jailami (więzieniami). Najważniejszy z nich chroni SSH, ale fail2ban potrafi pilnować też serwera WWW, poczty czy panelu.
Instalacja
Połącz się z serwerem przez SSH i zainstaluj fail2ban:
# Debian / Ubuntu
sudo apt update && sudo apt install fail2ban -y
# AlmaLinux / Rocky Linux
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
Następnie włącz usługę, żeby startowała razem z systemem:
sudo systemctl enable --now fail2ban
Podstawowa konfiguracja
Ustawień nie zmieniaj w pliku jail.conf, bo aktualizacje go nadpisują. Własną konfigurację zapisz w osobnym pliku jail.local, który ma pierwszeństwo:
sudo nano /etc/fail2ban/jail.local
Wpisz podstawowe reguły, dostosowując je do siebie:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
ignoreip = 127.0.0.1/8 TWOJ_STALY_IP
[sshd]
enabled = true
Co oznaczają poszczególne wartości:
- maxretry to liczba błędnych prób, po której adres zostaje zablokowany,
- findtime to okno czasu, w którym te próby są liczone,
- bantime to czas blokady (np.
1h, możesz ustawić dłuższy), - ignoreip to lista adresów nigdy nieblokowanych. Dopisz tu swój stały adres IP, żeby nie zablokować samego siebie.
Po zapisaniu zmian zrestartuj usługę:
sudo systemctl restart fail2ban
Informacja
Jeśli jail SSH nie wychwytuje prób na Twoim systemie, dodaj w sekcji [sshd] linię backend = systemd. Część systemów trzyma logi w dzienniku systemd zamiast w osobnym pliku.
Sprawdzanie statusu i zablokowanych adresów
Listę aktywnych jaili wyświetlisz poleceniem:
sudo fail2ban-client status
Szczegóły konkretnego jaila, w tym liczbę i listę zablokowanych adresów, sprawdzisz tak:
sudo fail2ban-client status sshd
Odblokowanie adresu IP
Jeśli przez pomyłkę zablokujesz właściwy adres (np. swój), odblokujesz go ręcznie:
sudo fail2ban-client set sshd unbanip ADRES_IP
Wskazówka
Gdyby fail2ban zablokował Twój adres, a nie masz innego do połączenia, zalogujesz się przez awaryjną konsolę VNC w panelu, która działa niezależnie od firewalla i fail2ban. Opisujemy ją w artykule o dostępie do VPS. Najlepiej jednak z góry dopisać swój stały adres do ignoreip.
Ochrona innych usług
Po zabezpieczeniu SSH możesz włączyć jaile dla pozostałych usług, które wystawiasz do internetu. Fail2ban ma gotowe reguły między innymi dla:
- Serwera WWW (Nginx, Apache), np. przeciw próbom logowania do paneli aplikacji,
- Serwera poczty (Postfix, Dovecot),
- Paneli hostingowych.
Każdy jail włączasz w jail.local, ustawiając w jego sekcji enabled = true. Dobierz je do usług, które faktycznie działają na serwerze.
Fail2ban a panele hostingowe
Jeśli zarządzasz serwerem przez panel hostingowy, sprawdź jego ustawienia bezpieczeństwa, zanim skonfigurujesz fail2ban ręcznie. Część paneli ma ochronę przed atakami na logowanie wbudowaną lub potrafi zarządzać fail2ban z poziomu interfejsu. Przegląd paneli znajdziesz w artykule o panelach na VPS.
Najczęstsze pytania
Czy fail2ban zastępuje firewall?
Nie. Firewall decyduje, które porty są w ogóle dostępne, a fail2ban blokuje adresy, które nadużywają dostępnych usług. Działają razem: Najpierw ustaw firewall i utwardź SSH zgodnie z artykułem o firewallu, a fail2ban dołóż jako dodatkową warstwę.
Zablokowałem własny adres IP, co zrobić?
Odblokuj go poleceniem fail2ban-client set sshd unbanip ADRES_IP. Jeśli nie masz dostępu z innego adresu, zaloguj się przez konsolę VNC w panelu. Aby uniknąć tego w przyszłości, dopisz swój stały adres do ignoreip.
Czy fail2ban działa z firewalld na AlmaLinux?
Tak. Fail2ban współpracuje z różnymi zaporami (iptables, nftables, firewalld) i sam stosuje blokady przez tę, której używa Twój system. Po instalacji z repozytorium EPEL działa na AlmaLinux i Rocky Linux.
Czy fail2ban wystarczy, żeby zabezpieczyć serwer?
Nie sam. To jeden element ochrony. Najwięcej daje połączenie aktualizacji systemu, logowania kluczem SSH, firewalla i fail2ban, opisane łącznie w artykule o pierwszych krokach na VPS.