Najprościej zabezpieczysz stronę logowania, dodając w katalogu wp-admin plik .htaccess, który wymaga drugiego loginu i hasła zapisanych w pliku .htpasswd. To dodatkowy zamek przed panelem WordPressa, dzięki któremu próby brute-force zatrzymują się na poziomie serwera, zanim obciążą skrypt logowania CMS-a.
Czego potrzebujesz?
Przed rozpoczęciem przygotuj dostęp do plików strony oraz narzędzia, które pozwolą zapisać konfigurację jako zwykły tekst:
- Dostęp FTP lub Menadżer plików w panelu hostingu.
- Edytor tekstu bez formatowania, na przykład Notepad++, Sublime Text albo VS Code.
- Generator pliku .htpasswd, który zapisze hasło w obsługiwanym formacie, takim jak crypt lub MD5.
- Kopię zapasową obecnego pliku .htaccess, jeśli już znajduje się w katalogu
wp-admin.
Nie zapisuj plików w Wordzie ani w edytorze tworzącym dokumenty DOCX lub RTF. Dodatkowe formatowanie może spowodować błędy składni serwera.
Jak skonfigurować .htaccess i .htpasswd?
- Wygeneruj plik .htpasswd – użyj generatora obsługującego format crypt lub MD5. Wpisz osobny login i silne hasło, inne niż dane używane do logowania do WordPressa. Wynik powinien mieć postać podobną do poniższej:
paneladmin:$apr1$przykladowy$zaszyfrowany_ciagHasło nie może być zapisane w pliku jako zwykły tekst. Skopiuj wygenerowany wiersz do nowego pliku o dokładnej nazwie
.htpasswd. - Umieść .htpasswd na serwerze – najlepiej zapisz go poza katalogiem publicznym, na przykład poza
public_html. Jeśli hosting nie pozwala na takie położenie, umieść plik w miejscu niedostępnym z poziomu adresu WWW i ogranicz jego uprawnienia zgodnie z zaleceniami administratora serwera. - Utwórz lub edytuj .htaccess w katalogu wp-admin – przejdź do katalogu instalacji WordPressa, a następnie do
wp-admin. W pliku dodaj:
AuthType Basic
AuthName "Panel administracyjny"
AuthUserFile /home/user/public_html/.htpasswd
Require valid-user
Najważniejsza jest dyrektywa AuthUserFile. Musi wskazywać bezwzględną ścieżkę serwerową do pliku, na przykład:
/home/user/domains/example.pl/public_html/.htpasswd
Nie wpisuj tam adresu URL, takiego jak https://example.pl/.htpasswd. Ścieżka bezwzględna opisuje lokalizację pliku na dysku serwera. Jej dokładny zapis zależy od hostingu. Możesz ją sprawdzić w Menadżerze plików, ustawieniach domeny albo uzyskać od operatora. Na hostingu home.pl sposób konfiguracji może być inny, ponieważ dane użytkowników .htaccess bywają tworzone bezpośrednio w panelu usług.
Po zapisaniu plików otwórz adres panelu WordPressa. Najpierw przeglądarka powinna wyświetlić okno autoryzacji HTTP, a dopiero po podaniu tych danych ekran logowania WordPressa. Oznacza to, że panel wymaga dwóch niezależnych uwierzytelnień.
Uwaga: błędna ścieżka w
AuthUserFileczęsto powoduje błąd500 Internal Server Error. Jeśli tak się stanie, przywróć kopię poprzedniego pliku.htaccessi sprawdź ścieżkę znak po znaku.
Co zrobić, gdy przestaje działać admin-ajax.php?
WordPress i jego wtyczki korzystają z pliku admin-ajax.php także podczas działania elementów widocznych dla odwiedzających. Zabezpieczenie całego katalogu wp-admin może więc wywoływać dodatkowe okna logowania albo unieruchomić część funkcji.
W pliku .htaccess znajdującym się w katalogu wp-admin dodaj wyjątek dla tego pliku:
<Files admin-ajax.php>
Order allow,deny
Allow from all
Satisfy any
</Files>
Jeżeli serwer używa nowszej konfiguracji Apache, składnia dyrektyw dostępu może różnić się od powyższego przykładu. Gdy wyjątek nie działa, sprawdź dokumentację hostingu lub poproś jego administratora o wariant zgodny z używaną wersją Apache.
Najczęstsze błędy
Przed zgłoszeniem problemu do administratora sprawdź kilka typowych przyczyn nieprawidłowego działania:
- W
AuthUserFilewpisano adres URL zamiast ścieżki systemowej. - Plik nazwano
.htpasswd.txtalbohtpasswd, zamiast.htpasswd. - Hasło w pliku
.htpasswdzapisano jawnie, bez użycia formatu crypt lub MD5. - Konfigurację zapisano w Wordzie lub innym edytorze dodającym formatowanie.
- Pominięto wyjątek dla
admin-ajax.php, przez co przestały działać wybrane elementy WordPressa. - Nie wykonano kopii pliku
.htaccessprzed jego edycją.
Blokada dostępu po adresie IP
Jeśli korzystasz ze stałego adresu IP, możesz zamiast hasła ograniczyć dostęp do katalogu wp-admin tylko do wskazanych adresów. Taka metoda może być bezpieczniejsza i wygodniejsza dla małego zespołu, ale przy dynamicznym IP łatwo odciąć sobie dostęp po zmianie operatora lub sieci. W takim przypadku dodatkowe hasło HTTP jest bardziej elastyczne.
Po wdrożeniu przetestuj logowanie w osobnym oknie przeglądarki, sprawdź działanie panelu i funkcji korzystających z AJAX. Dobrze skonfigurowane .htaccess oraz .htpasswd dodają ochronę przed próbami logowania, nie zastępując jednak aktualizacji WordPressa, silnych haseł ani szyfrowanego połączenia HTTPS.