Strona główna  /  Bezpieczeństwo  /  Jak zabezpieczyć stronę logowania przez htaccess?

✦ AI
Zabytkowa kłódka na tle serwerów, symbolizująca zabezpieczenie dostępu do strony internetowej.

Jak zabezpieczyć stronę logowania przez htaccess?

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?

  1. 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_ciag

    Hasło nie może być zapisane w pliku jako zwykły tekst. Skopiuj wygenerowany wiersz do nowego pliku o dokładnej nazwie .htpasswd.

  2. 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.
  3. 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 AuthUserFile często powoduje błąd 500 Internal Server Error. Jeśli tak się stanie, przywróć kopię poprzedniego pliku .htaccess i 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 AuthUserFile wpisano adres URL zamiast ścieżki systemowej.
  • Plik nazwano .htpasswd.txt albo htpasswd, zamiast .htpasswd.
  • Hasło w pliku .htpasswd zapisano 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 .htaccess przed 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.

Redakcja wpinternals.pl

WordPressa znamy od kuchni – budujemy na nim strony, migrujemy serwisy i optymalizujemy ich wydajność. Piszemy o wtyczkach, motywach, hostingu i bezpieczeństwie tak, by poradzili sobie także początkujący. Dbamy o to, by Twoja strona była szybka, stabilna i bezpieczna.

Może Cię również zainteresować

Potrzebujesz więcej informacji?