wp-login.php i wp-admin za pomocą hasła .htaccessJednym z najczęstszych źródeł obciążenia serwerów z WordPressem są automatyczne próby logowania do panelu administracyjnego. Boty wysyłają tysiące żądań typu POST /wp-login.php, co nie tylko spowalnia stronę, ale także zajmuje zasoby PHP i CPU. Najprostszym i zarazem najskuteczniejszym sposobem, by temu zapobiec, jest zabezpieczenie plików wp-login.php oraz katalogu wp-admin hasłem HTTP (Basic Auth) w pliku .htaccess.
wp-login.phpMechanizm Basic Auth działa jeszcze przed uruchomieniem PHP. Gdy ktoś próbuje wejść na stronę wp-login.php lub wp-admin, serwer Apache sprawdza, czy użytkownik przesłał poprawny nagłówek Authorization. Jeśli nie, odsyła odpowiedź 401 Unauthorized, a przeglądarka wyświetla okienko logowania.
Dzięki temu WordPress nie wykonuje żadnego kodu, a sam serwer odcina dostęp do plików jeszcze przed uruchomieniem interpretera PHP.
.htpasswdPlik .htpasswd powinien znajdować się poza katalogiem publicznym, np.:
/home/[USER]/.htpasswds/.htpasswd
Można go wygenerować poleceniem:
htpasswd -c /home/[USER]/.htpasswds/.htpasswd admin
lub online — za pomocą generatora https://pro-link.pl/md5
.htaccessW katalogu głównym WordPressa (public_html) należy dopisać na początku pliku .htaccess poniższy fragment:
<Files "wp-login.php">
AuthType Basic
AuthName "Protected Area"
AuthUserFile /home/[USER]/.htpasswds/.htpasswd
Require valid-user
</Files>
Ta reguła sprawia, że każde wejście na adres /wp-login.php będzie wymagało wcześniejszego podania loginu i hasła z pliku .htpasswd.
wp-adminW katalogu /wp-admin należy utworzyć lub uzupełnić plik .htaccess o wpis:
<FilesMatch "admin-ajax\.php|async-upload\.php">
Satisfy any
Allow from all
</FilesMatch>
AuthType Basic
AuthName "Protected Area"
AuthUserFile /home/[USER]/.htpasswds/.htpasswd
Require user username
Dzięki temu cały panel administracyjny (/wp-admin) również będzie wymagał logowania przez to samo hasło. Reguła FilesMatch pozwala przy tym zachować dostęp do plików AJAX potrzebnych WordPressowi do działania strony.

Po zapisaniu plików spróbuj wejść na adres:
https://[DOMAIN]/wp-login.php
Jeśli pojawi się okienko logowania przeglądarki (a nie formularz WordPressa), wszystko działa prawidłowo.
Można też sprawdzić z wiersza poleceń:
curl -I https://[DOMAIN]/wp-login.php
Odpowiedź powinna zawierać:
HTTP/1.1 401 Unauthorized WWW-Authenticate: Basic realm="Protected Area"
Poniżej przykład realnego ataku brute-force widocznego w logach Apache:
157.230.45.41 - - [06/Nov/2025:08:54:54 +0100] "POST //wp-login.php HTTP/1.1" 200 11063 "https://<span class="mask">[DOMAIN]</span>//wp-login.php" "Mozilla/5.0 ..."
157.230.45.41 - - [06/Nov/2025:08:54:57 +0100] "POST //wp-login.php HTTP/1.1" 200 11063 "https://<span class="mask">[DOMAIN]</span>//wp-login.php" "Mozilla/5.0 ..."
83.3.53.218 - - [06/Nov/2025:09:07:05 +0100] "GET /wp-admin HTTP/2.0" 401 490 "-" "Mozilla/5.0 ..."
83.3.53.218 - - [06/Nov/2025:09:07:28 +0100] "GET //wp-login.php HTTP/2.0" 200 3531 "-" "Mozilla/5.0 ..."
Widać tu typowy schemat: bot wysyła kolejne zapytania do wp-login.php, ale katalog wp-admin od razu odpowiada kodem 401 — dzięki poprawnie ustawionej autoryzacji Basic Auth.
wp-login.php, jak i wp-admin..htpasswd dla obu lokalizacji..htpasswd poza katalog public_html — jest to bezpieczniejsze..htaccess.Zastosowanie prostego zabezpieczenia na poziomie serwera eliminuje 99% ataków typu brute-force i znacząco zmniejsza zużycie zasobów na hostingu. To jedna z najskuteczniejszych i najprostszych metod ochrony WordPressa.
Niezbędne ciasteczka umożliwiają prawidłowe funkcjonowanie strony internetowej, zapewniając podstawowe funkcje, takie jak nawigacja po stronie i dostęp do jej zabezpieczonych obszarów. Bez tych ciasteczek strona nie może działać prawidłowo.
Niezbędne ciasteczka umożliwiają prawidłowe funkcjonowanie strony internetowej, zapewniając podstawowe funkcje, takie jak nawigacja po stronie i dostęp do jej zabezpieczonych obszarów. Bez tych ciasteczek strona nie może działać prawidłowo.
Wyrażam zgodę na wykorzystywanie plików cookie Google Analytics w celu prowadzenia anonimowych statystyk, analizy sposobu korzystania ze strony oraz jej ulepszania, przy czym część danych może być także używana przez Google do personalizacji i pomiaru skuteczności reklam.
Wyrażam zgodę na wykorzystywanie przez Google plików cookie i podobnych technologii w celu wyświetlania reklam spersonalizowanych, pomiaru ich skuteczności oraz zapewnienia bezpieczeństwa strony poprzez odróżnianie użytkowników od botów.
Ciasteczka (cookies) to małe pliki tekstowe, które mogą być wykorzystywane przez strony internetowe, by usprawnić doświadczenie użytkownika. Zgodnie z przepisami prawa, możemy przechowywać na Twoim urządzeniu ciasteczka, które są ściśle niezbędne do funkcjonowania tej strony. W przypadku wszystkich innych typów ciasteczek potrzebujemy Twojej zgody. Oznacza to, że ciasteczka klasyfikowane jako niezbędne są przetwarzane na podstawie art. 6 ust. 1 lit. f RODO. Wszystkie pozostałe ciasteczka, czyli te z kategorii preferencji i marketingu, są przetwarzane na podstawie art. 6 ust. 1 lit. a RODO. Nasza strona korzysta z różnych rodzajów ciasteczek. Niektóre ciasteczka są umieszczane przez usługi stron trzecich, które pojawiają się na naszych stronach. W każdej chwili możesz zmienić lub wycofać swoją zgodę z Oświadczenia o ciasteczkach na naszej stronie internetowej. Dowiedz się więcej o tym, kim jesteśmy, jak możesz się z nami skontaktować i jak przetwarzamy dane osobowe, zapoznając się z naszą Polityką Prywatności.