Bezpieczne logowanie do WordPressa: 2FA, limit prób i ochrona wp-admin

Ilustracja: formularz logowania WordPress z kodem 2FA w telefonie i blokadą adresu IP po nieudanych próbach

Zajrzyj w logi serwera dowolnej strony na WordPressie, a zobaczysz setki, czasem tysiące prób logowania dziennie. To boty, które testują popularne loginy i hasła wyciekłe z innych serwisów. Wystarczy jedno słabe hasło administratora, żeby przejęły całą stronę.

Jak atakowane jest logowanie

  • Brute-force – zgadywanie haseł z gotowych list („123456”, „admin1”, nazwa firmy z rokiem).
  • Credential stuffing – logowanie loginami i hasłami, które wyciekły z innych serwisów. Działa, bo ludzie używają tych samych haseł wszędzie.
  • XML-RPC – w jednym żądaniu można sprawdzić wiele haseł naraz, dlatego ten plik warto wyłączyć, jeśli go nie używasz.

1. Unikalne, długie hasła

Każde konto administratora powinno mieć inne, długie hasło wygenerowane przez menedżer haseł. Usuń też konto o nazwie „admin”, jeśli wciąż istnieje – to pierwszy login, jaki sprawdzają boty.

2. Logowanie dwuskładnikowe (2FA)

2FA to najskuteczniejsza pojedyncza ochrona logowania. Nawet jeśli ktoś pozna hasło, bez kodu z aplikacji w telefonie (Google Authenticator, Microsoft Authenticator, Aegis) lub klucza sprzętowego nie wejdzie do kokpitu. W WordPressie włączysz je wtyczką, np. oficjalną „Two Factor” rozwijaną przez społeczność WordPressa. Wymagaj 2FA przynajmniej od wszystkich administratorów i redaktorów.

3. Limit prób logowania

WordPress domyślnie pozwala na nieograniczoną liczbę prób. Limit – np. blokada adresu IP na 20 minut po 5 nieudanych próbach – praktycznie zatrzymuje ataki brute-force. Zapewnia to większość wtyczek bezpieczeństwa albo firewall na poziomie serwera.

Hasło można wykraść, zgadnąć albo kupić w wycieku. Drugiego składnika z telefonu administratora – już nie tak łatwo.

4. Dodatkowa ochrona wp-login.php

Jeśli logujesz się zawsze z tego samego adresu IP (np. biura), możesz ograniczyć dostęp do strony logowania w pliku .htaccess:

<Files wp-login.php>
    Require ip 203.0.113.10
</Files>

Przy zmiennym IP sprawdza się dodatkowe hasło serwera (HTTP Basic Auth) przed formularzem WordPressa:

<Files wp-login.php>
    AuthType Basic
    AuthName "Panel administracyjny"
    AuthUserFile /home/konto/.htpasswd
    Require valid-user
</Files>

Nie blokuj w ten sposób całego katalogu wp-admin bez wyjątku dla pliku admin-ajax.php – korzysta z niego wiele wtyczek i formularzy na stronie publicznej.

5. Porządek w kontach

  • Regularnie przeglądaj listę użytkowników i usuwaj nieaktywnych – np. dawnych podwykonawców.
  • Nadawaj najniższą rolę, która wystarcza do pracy (redaktor zamiast administratora).
  • Sprawdź „Hasła aplikacji” w profilach – usuń te, których nie rozpoznajesz.
  • Wymuś połączenie HTTPS dla panelu (FORCE_SSL_ADMIN w wp-config.php).

Szybka lista kontrolna logowania:

  • Brak konta „admin”, unikalne hasła z menedżera haseł.
  • 2FA dla wszystkich kont z uprawnieniami do edycji.
  • Limit prób logowania i wyłączony XML-RPC.
  • Dodatkowa ochrona wp-login.php (IP lub hasło serwera).
  • Aktualna lista użytkowników i ról.

Najczęstsze pytania

Co to jest logowanie dwuskładnikowe (2FA)?

To druga warstwa logowania obok hasła – zwykle jednorazowy kod z aplikacji w telefonie. Nawet jeśli ktoś pozna Twoje hasło, bez tego kodu się nie zaloguje.

Czy 2FA jest konieczne na stronie firmowej?

Nie jest wymagane, ale bardzo zalecane dla kont administratorów. To jedno z najskuteczniejszych i najtańszych zabezpieczeń przed przejęciem panelu.

Jak jeszcze zabezpieczyć wp-login.php?

Oprócz 2FA warto ograniczyć liczbę prób logowania i zmienić adres strony logowania, a najlepiej dodatkowo ograniczyć dostęp do wp-admin po adresie IP albo regułą na serwerze.

Potrzebujesz pomocy z tym tematem?

MAQ Enterprise zajmie się tym za Ciebie – od jednorazowego audytu po stałą opiekę nad stroną. Zadzwoń: +48 604 790 398 lub napisz.

Napisz do mnie