webh.pl

Fail2ban na VPS: ochrona logowania

Jak zainstalować i skonfigurować fail2ban na VPS: automatyczne blokowanie IP po nieudanych próbach logowania, status i odblokowanie.

  • czytania
  • Zaktualizowano:
Bezpieczeństwo Firewall
Serwery VPS

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.