Ataki brute-force są jednym z częstszych prób włamania do WordPressa. Aby skutecznie je powstrzymać najlepiej działa połączenie kilku prostych zabezpieczeń. Ustawienie limitu prób logowania, stosowanie 2FA oraz odcięcie popularnych punktów ataku np. XML-RPC i masowych prób na stronie logowania. Jak to zrobić? Sprawdź nasz przewodnik.

Ataki brute-force są proste w założeniu. Ktoś automatycznie „zgaduje” login i hasło, próbując tysięcy kombinacji na minutę. Dobra wiadomość jest taka, że większość takich ataków da się zatrzymać prostymi krokami. Część zrobisz w samym WordPressie, część na poziomie hostingu.

Z tego artykułu dowiesz się:

Jak działają ataki brute-force na WordPress?

Ataki brute-force polegają na automatycznej próbie zalogowania się do WordPressa przez „zgadywanie” danych dostępowych. Bot lub skrypt wysyła do formularza logowania setki albo tysiące prób, testując różne kombinacje loginów i haseł (często z gotowych list wycieków). Celem jest trafienie poprawnych danych i przejęcie konta, najczęściej administratora, a nawet jeśli się nie uda, taki atak potrafi mocno obciążyć serwer i spowolnić działanie strony bądź całkowicie ją sparaliżować.

Dobra wiadomość jest taka, że jednak większość takich ataków da się zatrzymać prostymi krokami. Część zrobisz w samym WordPressie, a część na poziomie hostingu.

Dlaczego dochodzi do ataków brute-force?

WordPress jest popularnym cms-em. Mówimy już o ok. 43% stron internetowych wykorzystujących właśnie ten silnik. Atakujący traktują go jako cel masowy. Zamiast wybierać pojedyncze witryny, uruchamiają boty, które skanują sieć i automatycznie próbują zalogowania się do tysięcy stron na raz. Nie muszą znać Twojej domeny – wystarczy, że wykryją typowe adresy, takie jak /wp-login.php (lub panel /wp-admin/), a potem testują różne kombinacje, licząc na proste błędy, a wśród nich:

  • słabe hasła („admin123”, „qwerty”, nazwa firmy),
  • konto o nazwie admin lub łatwej do zgadnięcia,
  • brak limitu prób logowania,
  • brak 2FA,
  • otwarty XML-RPC (częsty wektor do masowych prób).

W praktyce to „atak hurtowy”. Bot widzi /wp-login.php i zaczyna próbować zalogować się do panelu.

Jak rozpoznać atak brute-force?

Atak brute-force najłatwiej rozpoznać po wzorcu ruchu. Wiele powtarzalnych prób logowania w krótkim czasie, najczęściej na te same endpointy (/wp-login.php, /wp-admin/). Występują one masowo, próba nie kończy się na zidentyfikowaniu jednego, podejrzanego logowania.

Jak odróżnić brute-force od zwykłej pomyłki użytkownika?

  • Skala
    Dziesiątki/setki prób, a nie 2-3.
  • Rytm
    Regularne odstępy i brak „ludzkich przerw”.
  • Źródła
    Wiele IP z różnych krajów/ASN albo IP z centrów danych.
  • Cele
    Endpointy logowania, często bez odwiedzania innych podstron (bot „nie czyta” strony).
  • Parametry
    Powtarzalne żądania, często bez ciasteczek sesyjnych typowych dla prawdziwych użytkowników.

Jak sprawdzić czy na moim WordPress były ataki?

Jeśli posiadasz zainstalowaną aplikację WordPress sprawdź, czy pojawiały się już próby ataku na panel administracyjny cms. Postępuj zgodnie z poniższą instrukcją:

  • Zaloguj się do panelu administracyjnego, gdzie znajduję się Twoja domena i zainstalowany WordPress.
  • Jeśli domenę masz w cyber_Folks, w panelu Webas przejdź do Historia – Statystyki – Domeny – Obciążenia.
  • Wygeneruj raport obciążenia serwisu. W tym celu w wierszu, gdzie znajduję się dana domena kliknij Podgląd.
  • W raporcie przejdź do sekcji „—–Obciążenie w zależności od skryptu (wywołania zawierające parametry)—–” oraz zweryfikuj pierwsze wpisy.
  • Jeśli skrypt „wp-login.php” znajduje się na liście oraz wygenerował duże obciążenie to niepokojący sygnał świadczący o nadużyciu.

Jak zatrzymać ataki brute-force na WordPressie?

Najlepsze efekty ochrony WordPressa przed atakami brute-force osiągniesz działając warstwowo. Musisz zrobić dwie rzeczy jednocześnie. Pierwsza z nich to ograniczenie liczby prób logowania. Druga, to podniesienie progu wejścia dla zalogowania. Inaczej mówiąc, to wdrożenie zabezpieczeń, które utrudniają dostęp do Twojej strony.

Prostymi sposobami, jakie wdrożysz niskim nakładem pracy omawiamy poniżej. To między innymi ograniczenie próby logowania po kilku błędach, stosowanie podwójnego mechanizmu logowania czy odcięcie typowych wejść jak xmlrpc.php i domyślne wp-login.php.

Zmień domyślną nazwę użytkownika

Jeśli w Twoim WordPressie nadal istnieje konto o loginie admin, to warto je jak najszybciej zastąpić. Ten domyślny login jest pierwszym jaki testują boty podczas ataków brute-force.

Zmień domyślną nazwę użytkownika najlepiej jeszcze na etapie instalacji WordPressa. Rozbieżną z imieniem i nazwą firmy. Jeśli natomiast Twój WordPress został już zainstalowany, zrób to w ten sposób:

  1. Utwórz nowe konto użytkownika (kokpit – Użytkownicy – Dodaj nowego).
  2. Nadaj mu rolę Administratora. Wyloguj się.
  3. Zaloguj się ponownie na nowo utworzone konto, aby upewnić się, że wszystko działa poprawnie.
  4. Usuń konto admin. Podczas usuwania wybierz opcję przypisania treści (wpisów/stron) do nowego administratora, żeby nic nie zniknęło.
Użytkownicy WordPress. Ustawienia
Użytkownicy WordPress. Ustawienia

Stosuj silne hasła

Podstawowa, ale wbrew pozorom często zaniedbywana rzecz to hasła. Haniebne rankingi tych najpopularniejszych od lat wyglądają podobnie. Hasła takie jak „1234”, „qwerty” czy „admin123” są również tymi, które w pierwszej kolejności, w różnych kombinacjach, stosują boty, aby przejąć dostęp do Twojego WordPressa.

Brute-force często działają w oparciu o tak zwaną praktykę credential stuffing, działając na kombinacjach haseł i loginów, które już wcześniej wyciekły.

Credential stuffing to rodzaj ataku, gdzie napastnicy wykorzystują wykradzione wcześniej loginy i hasła (np. z wycieków danych) i automatycznie masowo testują je na innych serwisach. Bot bierze listę par login i hasło, a następnie sprawdza je na stronie logowania (/wp-login.php lub przez xmlrpc.php), licząc na to, że użytkownik nie zmienił hasła albo stosuje to samo w kilku usługach.

Używaj silnych i unikalnych haseł dostępowych do serwisu. Jeśli zastanawiasz się jak stworzyć dobre hasło, skorzystaj z naszego narzędzia – generator haseł.

Cechy silnego hasła

  • długość – min. 12-16 znaków;
  • małe i duże litery – zwiększasz w ten sposób unikalność hasła;
  • znaki specjalne: używaj znaki typu ! @ # $ % & * ? _ –, – zwiększają one liczbę możliwych kombinacji i utrudniają ataki słownikowe;
  • cyfry – stosuj nie tylko w oczywistych miejscach.

Ten wpis może Cię zainteresować. Silne hasło czyli jakie?

Jak zmienić hasło do WordPressa?

Najprostszy i najszybszy sposób na zmianę hasła to jego aktualizacja w panelu administracyjnym WordPressa. W tym celu wejdź do Ustawień, przejdź do sekcji „Użytkownicy”, a następnie kliknij „Twój profil”. W sekcji zarządzania kontem możesz ustawić swoje nowe hasło.

Zmiana hasła użytkownika do konta WordPress
Zmiana hasła użytkownika do konta WordPress

Włącz dwuskładnikowe uwierzytelnianie

Dwuskładnikowe uwierzytelnianie (2FA) dodaje drugi element uwierzytelnienia. Nawet jeśli atakujący pozna Twoje hasło, choćby z wycieków przez credential stuffing, nie będzie w stanie zalogować się bez drugiego składnika.

Tym drugim składnikiem może być kod z aplikacji na telefonie, zmieniający się co kilkanaście sekund, klucz sprzętowy np. YubiKey, a także, rzadziej już stosowane, kod sms czy kod wysłany na maila.

Polecane wtyczki dla 2FA:

  • Google Authenticator – 2FA (Two Factor Authentication)
    Wtyczka dodaje logowanie dwuskładnikowe w WordPressie i pozwala powiązać konto z aplikacją Google Authenticator. Wówczas przy logowaniu wymagany jest jednorazowy kod do podania.

  • Two Factor Authentication
    Wtyczka uruchamiająca 2FA różnymi sposobami, np. kodem z aplikacji uwierzytelniającej lub weryfikacją przez e-mail (w zależności od konfiguracji).

Limituj błędne próby logowania

Kolejną z prostych i skutecznych blokad i zabezpieczeń przed brute-force jest limitowanie błędnych prób logowania. W ten sposób odcinasz atakującemu paliwo, czyli możliwość wykonywania tysięcy prób pod rząd. Zamiast nieograniczonej liczby podejść, po kilku błędach pojawia się blokada – czasowa lub stała – dla IP, użytkownika albo obu na raz.

Polecane wtyczki ograniczające liczbę logowań:

  • Limit Login Attempts Reload
    Popularna wtyczka, ograniczająca liczbę nieudanych logowań. Po przekroczeniu ustalonego progu blokuje adres IP na ustalony czas. Narzędzie pozwala skonfigurować m.in. limit prób, czas blokady oraz zasady ponawiania blokad.
  • Login LockDown
    Wtyczka działa na podobnej zasadzie. Po serii błędnych logowań nakłada blokadę dla IP. Dodatkowo prowadzi rejestr prób logowania, zapisując m.in. czas zdarzenia i adres IP, ułatwiając diagnostykę i ocenę skali ataku.

Wyłącz plik XML-RPC

Kolejnym z zabezpieczeń strony WordPressa jest wyłączenie pliku XML-RPC. Technicznie jest to endpoint /xmlrpc.php w głównym katalogu WordPressa (obok wp-admin i wp-content), który przyjmuje żądania z zewnątrz i wykonuje akcje po uwierzytelnieniu. Plik XML-RPC pozwala na zdalne sterowanie. Za jego pomocą możesz m.in. korzystać z aplikacji mobilnej, pozwalającej zarządzać stroną z poziomu telefonu,

Co to ma wspólnego z atakami brute-force?

Plik xmlrpc.php jest częstym obiektem ataków ponieważ:

  • umożliwia masowe próby logowania poza klasycznym formularzem (/wp-login.php);
  • może być hurtowym obiektem prób logowania w jednym żądaniu (np. mechanizmy typu multicall), mocno obciążających serwer nawet przy mniejszej liczbie requestów,
  • boty bardzo często skanują internet właśnie pod kątem otwartego xmlrpc.php.

Kiedy XML-RPC jest potrzebny (a kiedy nie)?

Plik jest stosowany, jeśli korzystasz z:

  • aplikacji mobilnej WordPress do zarządzania swoją stroną;
  • niektórych integracji i automatyzacji;
  • czasem rozwiązań typu Jetpack / publikowania zdalnego (zależnie od konfiguracji).

Jeśli nie używasz żadnej z tych funkcji, najbezpieczniej jest XML-RPC wyłączyć. Ograniczasz powierzchnię ataku bez wpływu na typowe działanie strony.

Wyłączanie pliku xmlrpc.php za pomocą .htaccess

Ta metoda jest dla osób, które czują się pewnie w plikach serwera. Daje dwie duże korzyści:

  • możesz całkowicie zablokować XML-RPC albo zostawić dostęp tylko dla wybranych IP (np. Twojego biura/VPN),
  • blokada działa zanim żądanie trafi do WordPressa, więc nie obciąża PHP i jest skuteczna przy atakach brute-force.

Instrukcja

  1. Połącz się ze swoją stroną za pomocą klienta FTP.
  2. W katalogu głównym strony (tam, gdzie są foldery wp-admin i wp-content) znajdź plik .htaccess.
  3. Dodaj następującą dyrektywę

<Files xmlrpc.php>
order deny,allow
deny from all
</Files>

Jeśli chcesz zablokować cały ruch z wykluczeniem konkretnych adresów IP, użyj:

<Files xmlrpc.php>
order deny,allow
deny from all
allow from 100.100.100.100
</Files>

W miejscu 100.100.100.100 wpisz dany adres IP. Jeśli chcesz dodać więcej, w tym samym wierszu, oddzielając spacją, wpisz kolejne adresy IP.

Minimalizuj ryzyko ataków brute-force

Ataki brute-force to nie „czy”, tylko „kiedy”, bo większość z nich jest zautomatyzowana i trafia na strony WordPress masowo, bez wybierania konkretnej ofiary. Nawet jeśli bot nie przejmie konta, potrafi wyrządzić sporo szkód. Od sztucznego przeciążenie serwera, przez spowolnienie strony, a w skrajnych przypadkach do doprowadzenie przerw w działaniu. A gdy trafi na słabe hasło lub konto o przewidywalnym loginie, konsekwencje są już dużo poważniejsze – przejęcie panelu, podmiana treści, złośliwe wtyczki, wysyłka spamu czy wyciek danych.

Dobra wiadomość jest taka, że ochrona nie wymaga posiadania skomplikowanej wiedzy ani godzin pracy. Największy efekt daje połączenie kilku prostych kroków, omówionych w artykule. Masz stronę na WordPressie? Jakie zabezpieczenia stosujesz? Podziel się z nami w komentarzu.

Jak zatrzymać ataki brute-force na WordPressie? – FAQ

Brute-force to automatyczne, masowe próby logowania, gdzie bot testuje kolejne kombinacje loginów i haseł na stronie WordPress (najczęściej przez wp-login.php, czasem przez xmlrpc.php). Celem jest trafienie poprawnych danych i przejęcie konta, zwykle administratora, albo przynajmniej obciążenie serwera dużą liczbą żądań.

Najczęściej:
https://twojadomena.pl/wp-login.php (formularz logowania),
https://twojadomena.pl/wp-admin/ (przekierowuje do logowania),
https://twojadomena.pl/xmlrpc.php (jeśli włączone XML-RPC).

Typowe sygnały to:
– dużo POST do wp-login.php w krótkim czasie,
– nagłe spowolnienie panelu/strony (większe zużycie CPU/PHP),
– alerty z wtyczki bezpieczeństwa o nieudanych logowaniach i blokadach IP,
– wysyp prób na konto „admin” lub przewidywalne loginy.

>
Katarzyna Węgiel
Pasjonatka i praktyk działań inbound marketing. Prywatnie miłośniczka bliższych i dalszych wycieczek rowerowych.

Dodaj komentarz

Twój adres e-mail nie będzie opublikowany.

Szukasz dalej?