Konfiguracja Fail2Ban dla Nginx – blokowanie skanerów i exploitów bez blokowania administratora WordPress

Ten poradnik pokazuje kompletną instalację i konfigurację Fail2Ban dla Nginx, zaprojektowaną tak, aby:

  • blokować rzeczywiste skanery i próby exploitów (np. żądania do /.env, /.git, /phpmyadmin itp.),
  • unikać przypadkowego blokowania administratorów (częsty problem przy banowaniu wyłącznie na podstawie błędów HTTP),
  • blokować adresy IP dopiero po powtarzającej się podejrzanej aktywności,
  • stosować krótki czas bana (5 minut), aby zmniejszyć ryzyko zablokowania samego siebie.

Dlaczego banowanie wyłącznie na podstawie błędów HTTP może być problematyczne

Wiele poradników sugeruje blokowanie adresów IP jedynie na podstawie kodów statusu HTTP (4xx/499). W praktyce bardzo często prowadzi to do samoblokady, ponieważ nowoczesne aplikacje generują serie zapytań (AJAX, panel administracyjny, przebudowa cache), przez co podczas normalnej pracy mogą pojawiać się błędy HTTP.

Ta konfiguracja wykorzystuje bezpieczniejsze podejście:

  • ścieżki exploitów są zawsze traktowane jako podejrzane,
  • błędy HTTP są liczone tylko wtedy, gdy zapytanie nie posiada nagłówka Referer (typowe zachowanie skanerów),
  • znane złośliwe User-Agenty są uwzględniane.

Krok 1: Instalacja Fail2Ban

Zainstaluj Fail2Ban:

Włącz oraz uruchom usługę:

Sprawdź status działania:

Krok 2: Utworzenie filtra nginx-secure

Utwórz plik filtra:

Wklej poniższą konfigurację:

Krok 3: Utworzenie jail nginx-secure

Utwórz plik konfiguracji jail:

Wklej konfigurację:

Krok 4: Restart Fail2Ban

Krok 5: Sprawdzenie integracji z firewallem

Sprawdź czy łańcuch Fail2Ban istnieje:

Test z zewnętrznej maszyny

Test ścieżki exploita:

Test logiki błędów bez Referer:

Po wykryciu powtarzających się podejrzanych żądań adres IP zostanie zablokowany na 5 minut.

Sprawdzenie zbanowanych adresów IP

Odblokowanie adresu IP

Ręczne zdjęcie bana:

Podsumowanie

  • blokuje rzeczywiste próby exploitów i skanery,
  • minimalizuje ryzyko samoblokady administratora,
  • stosuje krótki 5-minutowy ban,
  • działa z iptables-nft,
  • łatwy test oraz szybkie odblokowanie adresu IP.