WordPress bezpieczeństwo cz. 1

Częstym problemem wśród użytkowników WordPressa są próby ataku na stronę logowania.
W większości przypadków są to ataki typu brute-force.

W jaki sposób można przechytrzyć włamywacza?
Jedną z podstawowych strategii jest wdrożenie tzw. bezpieczeństwa poprzez brak przejrzystości.
Najprościej ujmując, jest to ukrycie, czy też zamazanie oczywistych adresów, po których będą chodzić boty.

Takie zaciemnienie sytuacji można wykonać poprzez instalację WordPressa w niestandardowej lokalizacji (nietypowa nazwa katalogu), czy też ukrycie strony logowania.

Każda instalacja WordPressa daje dostęp do panelu administracyjnego poprzez stronę wp-admin – wp-login.php, która błyskawicznie jest odnajdywana przez roboty atakujące stronę.

Zatem podstawowym krokiem jaki powinniśmy zrobić jest ukrycie tego adresu. Można to wykonać za pomocą dedykowanej wtyczki lub też samodzielnie poprzez edycję właściwych plików WordPressa.

Ukrycie adresu oczywiście nie spowoduje 100% zabezpieczenia logowania, ale na pewno utrudni dotarcie do właściwego miejsca hakerowi. Zmiana wpływa pozytywnie również na wydajność strony.

W zasadzie mamy następujące możliwości zmiany adresu logowania do panelu:

  • poprzez dedykowaną do tego celu wtyczkę
  • samodzielnie, poprzez edycję plików WordPressa

Konfiguracja poprzez wtyczkę

Pierwszym rozwiązaniem jest instalacja odpowiedniej wtyczki. Jedną z dostępnych jest dość popularna WPS Hide Login.
By zainstalować wtyczkę wchodzimy w zakładkę Wtyczki, w polu wyszukiwania wpisujemy WPS, a następnie wybieramy opcję WPS Hide Login.

Po zainstalowaniu należy kliknąć w przycisk Włącz. Następnie, po jej włączeniu wejdźmy w Settings. W polu Login url podajemy interesujący nas adres do logowania.

Po zakończeniu konfiguracji klikamy w Zapisz zmiany.

To w zasadzie wszystko, co potrzeba do skonfigurowania wtyczki. Przy wyborze tego rozwiązania trzeba brać pod uwagę złożoność zainstalowanej strony oraz liczbę już dodanych wtyczek. Ich mnogość może powodować spowolnienie działania strony www.

Samodzielna edycja

W celu samodzielnej zmiany należy wejść do katalogu głównego, na którym znajduje się instalacja WordPressa. W tym celu najlepiej skorzystać z klienta FTP, np. Total Commander, czy też Filezilla. Musimy odszukać i pobrać plik wp-login.php. Następnie poprzez edytor tekstu należy wyszukać frazy wp-login i zamienić je na nowy adres. Przykładowo, chcesz by strona logowania otwierała się po nazwie moj-admin.php? Zamień zgodnie z powyższą informacją wszystkie występowania wp-login na moj-admin. Następnie zapisz plik pod nową nazwą moj-admin.php i wgraj go na serwer. Stary plik wp-login.php usuń z serwera, najlepiej pozostawiając jego nienaruszoną kopię lokalnie.

Uwaga – jeśli posiadasz usługę WP READY, do połączenia z FTP możesz wykorzystać wtyczkę File Manager.
Uzyskasz dostęp do plików łącznie z nadawaniem prawidłowych uprawnień podczas ich tworzenia, czy też modyfikacji.

Kolejnym krokiem jaki powinno się wykonać jest edycja pliku functions.php używanego szablonu.
By ją edytować w panelu WordPress przechodzimy do zakładki Narzędzia, a następnie w Edytor plików motywu (patrz screen poniżej)

Po otwarciu z prawego menu wybieramy Funkcje motywu -> functions.php

Dopisujemy do pliku poniższy skrypt:

// Filtr oraz funkcja do  zmiany - Lost Password URL
add_filter( 'lostpassword_url', 'moja_zagubiona_strona', 10, 2 );
function moja_zagubiona_strona( $lostpassword_url ) {
    return home_url( '/moj-admin.php?action=lostpassword');   // Nazwa nowego pliku logowania z akcją zapomnianego hasła
}

add_filter ('logout_url', 'moj_logout_url'); 
function moj_logout_url ($default) { 
    return str_replace ('wp-login','moj-admin', $default);
} 

add_filter ( 'login_url','moj_login_url'); 
function moj_login_url ($default ) { 
    return str_replace ('wp-login','moj-admin', $default);
}

Nie wszystkie motywy standardowo posiadają functions.php. Co w takim przypadku?
Utwórz plik o nazwie functions.php. Wprowadzić powyższy tekst, dodając na początku pierwszą linię znacznika php: <?php

W kolejnym kroku przejdź do katalogu głównego WordPressa i edytuj plik .htaccess,
dodając na samym początku – przed #BEGIN WordPress, następujące reguły:

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^wp\-admin$ http://twoj-adres-strony/? [R=301,L]
Redirect 301 /wp-login.php http://twoj-adres-strony
</IfModule>

Od tej chwili logowanie będzie dostępne tylko i wyłącznie poprzez Twój nowy adres.
Wprowadzanie zmian w ten sposób może przysporzyć konieczność wykonania dodatkowych kroków, w zależności od wybranego szablonu. Powyższy opis dotyczy WordPressa w wersji 6.2 oraz standardowego szablonu z nim dostarczonego.

Ukrywanie adresów jest jedynie jedną z warstw zabezpieczeń jakie należałoby wdrożyć. Dobrze jest brać pod uwagę włączenie uwierzytelnienia dwuskładnikowego, silnego hasła, wprowadzenie limitu błędów logowania, czasowe wyłączanie strony logowania i na końcu dopuszczenie logowania tylko z konkretnych adresów IP.

Zachęcam do śledzenia naszego bloga. W następnych artykułach opiszemy kolejne opcje związane z zabezpieczeniem oraz tworzeniem strony w oparciu o własny szablon.