Fail2Ban: jak wyłapać recydywistów i banować ich na tydzień (recidive)


Jeśli korzystasz z Fail2Ban przy Nginx i WordPress, to prędzej czy później zauważysz jedną rzecz: te same adresy IP wracają. Dostają bana na kilka minut albo godzinę, znikają… i po chwili znowu próbują /.env, /wp-login.php, /phpmyadmin czy inne popularne ścieżki ataku.

Rozwiązaniem nie jest agresywne podkręcanie filtrów. Rozwiązaniem jest recidive — drugi poziom ochrony w Fail2Ban, który analizuje historię banów i długoterminowo blokuje recydywistów.

Nawiązanie do wcześniejszej konfiguracji

Jeśli nie masz jeszcze podstawowej konfiguracji Fail2Ban dla Nginx i WordPress, opisałem ją tutaj:

Fail2Ban + Nginx + WordPress – konfiguracja podstawowa

W tamtym artykule konfigurujemy jail’e typu nginx-exploit, nginx-secure czy sshd. Recidive nie zastępuje tej konfiguracji — on ją wzmacnia.

Jak znaleźć recydywistów w logach

Najpierw warto sprawdzić, czy problem faktycznie występuje. Wyciągamy z logów Fail2Ban listę IP, które były banowane najczęściej:

Przykładowy wynik (adresy częściowo anonimizowane):

Jeśli widzisz liczby typu 8, 9, 13 — to znaczy, że te IP wracają po zdjęciu bana. Krótki bantime jest dla nich tylko przerwą techniczną.

Dlaczego recidive jest lepszy niż zwiększanie bantime

  • Nie musisz banować każdego na 24h za jedną literówkę w URL.
  • Nie zwiększasz ryzyka blokady normalnych użytkowników.
  • Kara jest progresywna i dotyczy tylko powracających adresów.

Recidive analizuje /var/log/fail2ban.log i liczy, ile razy dane IP zostało zbanowane przez inne jail’e. Dzięki temu “dobić” można tylko tych, którzy już wcześniej wielokrotnie trafiali na blokadę.

Konfiguracja recidive (5 banów w 24h = 7 dni bana)

Dodaj poniższy blok do /etc/fail2ban/jail.local:

Na końcu pliku wklej:

Zapisz plik i zrestartuj Fail2Ban:

Sprawdź status jaila:

Jak sprawdzić kto jest blisko progu recidive

Jeśli chcesz zobaczyć IP, które już mają kilka banów i zbliżają się do progu recidive:

Podsumowanie

Recidive to jeden z najprostszych i najbardziej skutecznych sposobów na ograniczenie powracających skanerów i botów. Zamiast agresywnie banować wszystkich — blokujesz tylko tych, którzy wracają wielokrotnie.

W środowisku z wieloma domenami, Nginx reverse proxy i WordPress to praktycznie obowiązkowy element konfiguracji: mniej szumu w logach, mniej powtarzalnych ataków i mniej ręcznej analizy.