Przejdź do głównej zawartości

Walcz przeciwko brutalnej sile wordpress



Przez dość długi czas na różnych stronach internetowych i forach były artykuły i tematy, które mówiły o licznych brutalnych atakach na strony z wordpressami. Ostatnio musiał stawić czoła tej infekcji. :)

W tym poście chciałbym opowiedzieć o moich doświadczeniach związanych z wyborem hasła na stronach pracujących w WordPressie. Od razu zauważam, że wszystkie moje witryny działają na nginx + php-fpm .



Jako instrukcję przyjęto jeden artykuł. Jednak opisany przepis musiał zostać nieco zmodyfikowany ze względu na specyfikę atakujących. :)

Dostosowanie



Pierwszym krokiem jest instalacja fail2ban. Nie powinno to powodować trudności.

  aptitude install fail2ban 

Następnie dodajemy następujący kod na końcu pliku konfiguracyjnego /etc/fail2ban/jail.conf :

  [nginx-wp-auth]
 enabled = true
 filter = nginx-wp-auth
 action = iptables-multiport [name = wp-auth, port = "http, https"]
 logpath = /var/log/nginx/*.access.log
 maxretry = 3
 bantime = 3600 

W takim przypadku akcja zablokuje dostęp osobom naruszającym tylko określone protokoły i oznaczy je jako wp-auth. W ścieżce logów określ ścieżkę do dzienników.



Wszystkie dzienniki zostaną przeanalizowane, na przykład example.com.access.log. W przypadku dzienników witryn internetowych można ustawić specjalne nazwy, na przykład wordpress-example.com.access.log, aby analizować tylko te pliki dzienników.

Maksymalna liczba prób autoryzacji dla jednego ip wynosi trzy. Czas blokowania wynosi godzinę. Oba te parametry można wybrać indywidualnie.

Następnym krokiem jest utworzenie filtra.

  dotknij /etc/fail2ban/filter.d/nginx-wp-auth.conf 

Podczas tej akcji miałem trudności: przykład z oryginalnego artykułu nie działał. I musiał się zmienić. :)

  [Definicja]
 failregex = <HOST>. * / wp-login.php HTTP / 1.1 "200
      <HOST>. * / Wp-login.php / HTTP / 1.1 "302
      <HOST>. * / Wp-login.php HTTP / 1.0 "200
 ignoreregex =

Pierwszy parametr zawiera wszystkie dopasowania, które powinny znaleźć się w plikach dziennika. Tutaj musisz przeanalizować żądania atakujących w dziennikach serwera i dodać wszystkie podejrzane powiązane z wp-login.php.

Drugi parametr dotyczy wyjątków z pierwszego wiersza. Nie jest to wymagane i pozostaje puste.

Testowanie

Po utworzeniu filtru, sprawdź jego działanie za pomocą polecenia:

  fail2ban-regex / var / log / nginx / example.com .access.log /etc/fail2ban/filter.d/nginx-wp-auth.conf 

Znalezione mecze zostaną wyświetlone w wynikach testu. Na przykład:

  Uruchamianie testów
 =============

 Użyj pliku regex: /etc/fail2ban/filter.d/nginx-wp-auth.conf
 Użyj pliku dziennika: /var/log/nginx/***.ru..access.log


 Wyniki
 =======

 Failregex
 | - Wyrażenia regularne:
 |  [1]. * / Wp-login.php HTTP / 1.1 "200
 |  [2]. * / Wp-login.php / HTTP / 1.1 "302
 |  [3]. * / Wp-login.php HTTP / 1.0 "200
 |
 `- Liczba dopasowań:
    [1] 1 mecz (y)
    [2] 0 meczów
    [3] 0 meczów

 Ignoreregex
 | - Wyrażenia regularne:
 |
 `- Liczba dopasowań:

 Podsumowanie
 =======

 Znaleziono adresy:
 [1]
     192,99.186.30 (Fri Jul 04 07:29:20 2014)
 [2]
 [3]

 Uderzenia w szablonie daty:
 0 hitów: MONTH Day Hour: Minute: Second
 0 trafień: DNI MIESIĄCA GODZINA DZIEŃ: Minuta: Drugi rok
 0 trafień: WEEKDAY MIESIĄCA Godzina: Minuta: Sekund
 0 trafień: rok / miesiąc / dzień godzina: minuta: sekunda
 0 trafień: Dzień / Miesiąc / Rok Godzina: Minuta: Sekunda
 0 trafień: Dzień / Miesiąc / Rok Godzina: Minuta: Sekunda
 58 trafień: dzień / miesiąc / rok: godzina: minuta: sekunda
 0 trafień: miesiąc / dzień / rok: godzina: minuta: sekunda
 0 trafień: rok-miesiąc-dzień godzina: minuta: sekunda
 0 hitów: Year.Month.Day Hour: Minute: Second
 0 hitów: Day-MONTH-Year Hour: Minute: Second [.Millisecond]
 0 hitów: Day-Month-Year Hour: Minute: Second
 0 trafień: TAI64N
 0 trafień: Epok
 0 trafień: ISO 8601
 0 trafień: Godzina: Minuta: Sekunda
 0 trafień: <miesiąc / dzień / rok @ godzina: minuta: sekunda>

 Sukces, całkowita liczba meczów to 1 

Sprawdzanie dziennika blokady

Fail2ban zapisze wszystkie wyprodukowane blokady. Jeśli to konieczne, możesz sprawdzić plik dziennika /var/log/fail2ban.log pod kątem ich obecności.

  grep OSTRZEŻENIE /var/log/fail2ban.log 


Jak oceniasz artykuł?
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Brak ocen jeszcze)
Ładowanie ...

Dodaj komentarz

Twój e-mail nie zostanie opublikowany.