Loginy w WordPressie są jawne. Haker może je poznać na kilka różnych sposobów, np. dodając do adresu strony ciąg ?author=1
(adres zostanie przekierowany i zobaczysz swój login w pasku adresu) lub /wp-json/wp/v2/users/1
. Dlatego, aby włamać się na stronę, wystarczy zgadywać hasło.
A i tu zadanie jest ułatwione, bo istnieją listy najpopularniejszych haseł. Na tej stronie znajdziesz 14 milionów najbardziej popularnych haseł: https://md5hashonline.com/most-common-passwords/. Lista została sporządzona na podstawie wycieków danych. Sprawdź, czy nie ma tu Twojego hasła 😉 Hakerzy dysponują takimi listami i wystarczy, że zapuszczą program, który będzie próbował się zalogować na Twoją stronę za pomocą z góry znanego loginu i hasła z listy. I nieszczęście gotowe.
Istnieją różne sposoby zabezpieczenia się przed włamaniem. Jednym z nich jest zabezpieczenie strony logowania dodatkowym loginem i hasłem. Czyli musisz podać login i hasło, żeby móc w ogóle dostać się do strony logowania. Robi się to, umieszczając na serwerze plik .htpasswd i modyfikując plik .htaccess.
Utworzenie pliku .htpasswd
Plik .htpasswd składa się z jednej linii i zawiera login i zaszyfrowane hasło. Przykładowo, plik .htpasswd dla loginu „login” i hasła „haslo” będzie wyglądał tak:
login:$apr1$rpxwht0z$f8rFbJAl0fq5D3FOcVlPe1
Zawartość pliku możesz wygenerować za pomocą jednego z narzędzi dostępnych online, np. https://wtools.io/generate-htpasswd-online.
Tak utworzony plik umieść na serwerze poza katalogiem public_html, czyli piętro wyżej niż katalog wp-content:
Modyfikacja pliku .htaccess
Gdy masz już plik .htpasswd, musisz zmodyfikować główny plik .htaccess, aby serwer żądał podania loginu i hasła, gdy ktoś wchodzi na stronę logowania. Plik .htaccess znajdziesz w katalogu głównym WordPressa:
Na jego początku dodaj poniższy kod:
# Protect wp-login.php
<Files wp-login.php>
AuthUserFile /usr/home/twoje-konto/domains/twoja-domena/.htpasswd
AuthName "Zaloguj się"
AuthType Basic
require user login
</Files>
Musisz zmienić 2 rzeczy: bezwzględną ścieżkę do pliku .htpasswd i login znajdujący się za ciągiem require user
. Ten login musi zgadzać się z tym, co jest w pliku .htpasswd.
Ostatecznie Twój plik .htaccess powinien wyglądać mniej więcej tak:
# Protect wp-login.php
<Files wp-login.php>
AuthUserFile /usr/home/twoje-konto/domains/twoja-domena/.htpasswd
AuthName "Zaloguj się"
AuthType Basic
require user login
</Files>
# BEGIN WordPress
# Dyrektywy zawarte między "BEGIN WordPress" oraz "END WordPress"
# są generowane dynamicznie i powinny być modyfikowane tylko za pomocą
# filtrów WordPressa. Zmiany dokonane bezpośrednio tutaj będą nadpisywane.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
I gotowe!
Teraz, gdy odwiedzisz swój ekran logowania wp-admin, wyskoczy takie okienko:
Dopóki nie podasz loginu i hasła (uwaga: do zalogowania używamy niezaszyfrowanego hasła), nie będziesz mógł zobaczysz strony logowania.