WordPress jest najczęściej używanym systemem CMS na świecie. Wiele stron i blogów oparte jest na tym skrypcie. Ogromna popularność niestety sprawia, że system ten jest jednocześnie narażony na różne próby włamania i złośliwe oprogramowanie.
Oczywiście najbardziej narażona strona w WordPressie, to podstrona logowania do panelu administracyjnego, której adres zna każdy użytkownik:
https://twojastrona.pl/wp-login.php
Niestety ten adres znają również hakerzy i boty, które codziennie próbują przełamywać loginy i hasła stron postawionych na tym skrypcie, często także metodami „brute force„. Nawet jeśli masz bardzo bezpieczne hasło, to tego typu zabiegi obciążają hosting, gdyż doprowadzają do wielokrotnego odpytywania bazy danych na serwerze. Oczywiście istnieją specjalne wtyczki bezpieczeństwa typu Shield Security, Wordfence Security czy Sucuri Security, które zabezpieczają przed tego typu aktywnościami. Ale jak wiadomo nigdy nie ma w 100% skutecznych zabezpieczeń, więc warto stosować dodatkowe, które zabezpieczą Twoją stronę przed włamaniami.
I właśnie takie dodatkowe zabezpieczenie strony logowania do WordPressa prezentuje w tym artykule.
Zabezpieczenie polega na nałożeniu dodatkowego loginu i hasła na stronę logowania wp-login.php. Te dodatkowe dane dostępowe zostaną zahaszowane w pliku htpasswd, który przechowuje nazwy użytkowników i hasła w celu autoryzacji serwera Apache na hostingu. Cały proces opisany jest w kilku krokach.
1. Utworzenie pliku .htpasswd
W tym pliku będą znajdować się Twoje dane dostępowe, które wcześniej musisz zdefiniować. Możesz go stworzyć w notatniku systemowym lub programie Notepad++. Przy zapisywaniu pliku trzeba wybrać Zapisz jako typ: Wszystkie pliki i w nazwie wpisać .htpasswd. Gdy masz już go stworzonego, musisz zdefiniować login i hasło, którymi chcesz zabezpieczyć panel, korzystając z poniższego generatora htpasswd:
https://hostingcanada.org/htpasswd-generator/
Wpisujesz w Username – login, w Password – hasło i klikasz przycisk Create .htpasswd file. Ważne! Login i hasło powinny być unikalne i inne niż te, które masz ustawione w panelu WordPressa. Wygeneruje się jedna linijka kodu z zakodowanym hasłem i będzie miała taką postać:
login:{SHA}[losowe znaki]
Tę linijkę wklejasz do wcześniej utworzonego pliku .htpasswd i zapisujesz.
2. Wgranie pliku .htpasswd na serwer
Teraz należy go wgrać na serwer, na którym zainstalowana jest Twoja instalacja strona internetowa. Z tym że najlepiej, gdy będzie się on znajdował w specjalnie przez Ciebie utworzonym katalogu (np. o nazwie htpasswd, choć może być ona zupełnie inna) o poziom wyżej niż katalog ze stroną. Najlepiej w katalogu głównym serwera, którego zawartość wyświetla się zaraz po zalogowaniu na FTP.
Do katalogu wgraj plik .htpasswd i w tym momencie połowa pracy wykonana.
3. Ustawienie hasła w pliku .htaccess
Teraz w pliku .htaccess (który znajduje się w katalogu głównym WordPress), należy ustawić zabezpieczenie. Dodajesz do niego poniższe linijki kodu:
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /usr/home/nazwa_serwera/htpasswd/.htpasswd
<Files wp-login.php>
require valid-user
</Files>
Ścieżka AuthUserFile /usr/home/nazwa_serwera/htpasswd/.htpasswd wskazuje bezpośrednią lokalizacje pliku na serwerze. Oczywiście z zależności od tego, z jakiej firmy hostingowej korzystasz, może ona być inna. Poniżej porada jak to sprawdzić.
Jak sprawdzić pełną ścieżkę katalogu strony www na swoim serwerze hostingowym?
Utwórz w notatniku plik o nazwie info.php (koniecznie musi mieć rozszerzenie .php)
Następnie wklej do niego kod: <?php
echo dirname( __FILE__ );
?>
Zapisz plik i wgraj go do folderu głównego swojej strony i uruchom, wpisując adres w przeglądarce: twoja-strona.pl/info.php
Wyświetli się pełna ścieżka do katalogu w którym znajduje się plik info.php. Na tej podstawie ustalisz jaka powinna być dokładna ścieżka w wpisana w .htaccess, aby odnosiła się do katalogu i pliku .htpasswd, podobnie jak jest w przykładzie wyżej.
Gdy już dodałeś cały kod do pliku .htaccess, należy go wgrać na serwer zastępując istniejący.
4. Efekt
Od teraz, gdy będziesz chciał się zalogować do panelu administracyjnego WordPressa, wyskoczy dodatkowe okienko do zalogowania:
Wpisujesz w nim login i hasło, które wcześniej zdefiniowałeś w pliku .htpasswd. Po prawidłowym zalogowaniu tymi danymi, dopiero teraz otworzy się właściwe konto do logowania WP.
Jak widzisz dzięki temu sposobowi, uzyskujesz dodatkowe zabezpieczenie swojego CMS przed włamaniami. Dodatkowo jeśli jakieś szkodliwe boty, będą próbowały logować się do panelu, zatrzyma ich ta bariera. Dzięki czemu nie będzie obciążana bazy danych niepotrzebnymi zapytaniami.