WordPress – bezpieczeństwo cz. 2

W poprzednim artykule opisałem jeden ze sposobów na zwiększenie bezpieczeństwa WordPress’a poprzez ukrycie (zmianę) strony logowania.

Jest to jeden z wielu kroków jakie można podjąć by zabezpieczyć WP. Na co powinieneś zwrócić uwagę by zwiększyć bezpieczeństwo WP?

  • zmiana użytkownika na innego niż admin
  • zastosowanie trudnego do odgadnięcia hasła
  • zmiana strony logowania
  • częste aktualizacje systemu
  • ograniczenie dostępu do panelu tylko z konkretnych adresów IP
  • instalacja certyfikatu ssl
  • ukrycie wersji WordPress’a

Zmiana użytkownika

Podczas instalacji WordPress’a system prosi o podanie nazwy użytkownika.

Pamiętaj, aby nie ułatwiać życia atakującym twoją stronę. Wybierz inną nazwę użytkownika niż admin.

Jeśli jednak już posiadasz takiego użytkownika, a ataki nie ustały – zmień go ponownie. Jest na to wiele sposobów, począwszy od zainstalowania dedykowanej wtyczki, jednakże nie polecam stosowania zbyt wielu wtyczek. Po pierwsze wtyczka powoduje dodatkowe obciążenie, oraz może być kolejnym potencjalnym źródłem włamania.

W jaki sposób zatem można zmienić nazwę użytkownika?
Najprostszy sposób to dodanie nowego użytkownika na prawach administratora. Następnie zalogowanie się na niego i usunięcie użytkownika o “słabym” loginie.

Po zalogowaniu wchodzimy w lewe menu. Następnie w Użytkownicy -> dodaj nowego

Po kliknięciu w dodawanie użytkownika wypełniamy poniższy formularz zwracając uwagę by wybrać rolę -> Administrator

Tworzymy użytkownika na prawach administratora, a następnie usuwamy użytkownika Admin. Przy okazji WordPress podpowiada trudne do złamania hasło. Powyższy screen jest dobrym przykładem silnego hasła.

UWAGA! Usuwając użytkownika możesz usunąć dodawane przez niego wpisy. Trzeba zdecydować do kogo wpisy mają zostać przypisane.

Dostęp do panelu z konkretnych adresów IP

Jedną z opcji zabezpieczenia WordPress’a jest ustawienie możliwości dostępu do panelu tylko z określonego adresu IP. W tym przypadku oczywiście należy upewnić się u dostawcy internetu czy posiadasz stały czy też zmienny adres IP.

W celu uruchomienia tej opcji należy edytować plik .htaccess – UWAGA! Ten znajdujący się w katalogu administracyjnym wp-admin (lub innym jeśli nastąpiła zmiana nazwy katalogu administracyjnego).

<Files wp-login.php>
order allow,deny
allow from x.x.x.x
</Files>
 
<Directory /var/www/html/wp-admin/>
order deny,allow
allow from x.x.x.x
</Directory>

Zastąp x.x.x.x własnym adresem IP, wp-login.php – oczywiście jeśli zmieniłeś jego nazwę należy ją zastąpić właściwą.

Certyfikat ssl

Ta część artykułu dotyczy usług, w których samodzielnie zainstalowałeś WordPress’a. W przypadku gdy korzystałeś z autoinstalotora włączenie SSL odbywa się po jego stronie.

Jeśli posiadasz hosting łącznie z domeną w forpsi.pl masz możliwość skorzystania z darmowego certyfikatu SSL.
Sposób jego aktywacji opisany jest w naszej bazie wiedzy.

Po włączeniu certyfikatu WordPress nie wyświetli zabezpieczonej strony. By wszystko zadziałało, należy skonfigurować SSL również po stronie panelu WordPress.
W pierwszej kolejności sprawdź, czy posiadasz najnowszą wersję WP. Jeśli nie, warto wcześniej przeprowadzić aktualizację.

Posiadając wersję (od 5.7 w górę) wystarczy wejść w narzędzia, a następnie w stan witryny. Tam znajdują się opcje umożliwiające włączenie certyfikatu SSL.
Jeśli wszystko poszło prawidłowo powinien wyświetlić się komunikat: Adresy URL witryny zostały przełączone na HTTPS.

Korzystasz z innej wersji WordPress’a? Możesz zainstalować wtyczkę Really Simple SSL,. Należy jednak pamiętać, że tego typu wtyczki potrafią wpływać znacząco na szybkość działania strony.

Dlatego warto zastanowić się nad samodzielną konfiguracją certyfikatu.

W tym celu przejdź do Ustawienia -> następnie popraw adresy url wpisując https zamiast http

Kolejny krok jaki trzeba wykonać to ustawić przekierowanie 301 w .htaccess, wprowadzając następujący kod:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</IfModule>

Więcej na temat zmian w konfiguracji – przekierowań przy SSL można przeczytać w naszej bazie wiedzy.

Po wprowadzeniu tych zmian należy sprawdzić czy wszystko działa prawidłowo, zwracając uwagę na odnośniki. Może się bowiem zdarzyć sytuacja, w której część odnośników zwraca się bezpośrednio na adres url z http. W takim przypadku trzeba przeprowadzić zmiany już bezpośrednio w bazie danych. Choć nie zalecam wtyczek, w tym przypadku można skorzystać z Better Search replace, gdyż po wykonaniu wszystkich niezbędnych czynności ją usuniemy.

Po zainstalowaniu wtyczki wejdź w Narzędzia > Better Search Replace. W zakładce Search/Replace podmień wszystkie odnośniki. Następnie w polu Search For wpisz adres Twojej strony z HTTP. W polu Replace With podaj adres Twojej strony z HTTPS.

Wybierz wszystkie tabele (Select tables), zaznacz opcję Replace GUIDs, odznacz Run as dry run i kliknij w Run Search/Replace. Wtyczka samodzielnie podmieni wszystkie adresy z HTTP na HTTPS. Teraz możesz wyłączyć a następnie odinstalować wtyczkę.

Ukrycie wersji WordPress’a

WordPress standardowo podaje swoją wersję w nagłówku strony:

<meta name="generator" content="WordPress 6.2" />

Dodatkowo umieszcza również informację o zainstalowanych wtyczkach oraz ich wersjach. Tego typu informacja ułatwiają nieautoryzowaną próbę wejścia do systemu.

Można zablokować przekazywanie takich informacji dopisując poniższy kod do pliku functions.php:

remove_action('wp_head', 'wp_generator');
add_filter('the_generator', '__return_empty_string');
function shapeSpace_remove_version_scripts_styles($src) {
    if (strpos($src, 'ver=')) {
        $src = remove_query_arg('ver', $src);
    }
    return $src;
}
add_filter('style_loader_src', 'shapeSpace_remove_version_scripts_styles', 9999);
add_filter('script_loader_src', 'shapeSpace_remove_version_scripts_styles', 9999);

W tym artykule to wszystko.. Czy to wszystko co możesz zrobić by zabezpieczyć stronę? Na pewno nie, mówię tutaj choćby o logowaniu dwuskładnikowym itp. Ale o tym być może w następnym artykule. Zachęcam do śledzenia naszego bloga.