Jak zabezpieczyć stronę internetową opartą o CMS WordPress

Mateusz Sitarz

Mateusz Sitarz

Dyrektor zarządzający / O autorze

WordPress, który jest silnikiem aż 62% wszystkich stron WWW w internecie, jest najpopularniejszym systemem zarządzania treścią na świecie. W związku z tym jest często celem ataków i prób infekcji malware.

Zabezpieczanie WordPress przed Atakami oraz Malware

Wprowadzenie odpowiednich zabezpieczeń jest kluczowe, szczególnie w przypadku firmowych stron internetowych. Każdy software house czy agencja interaktywna, które specjalizują się w tworzeniu zaawansowanych witryn internetowych muszą znać sposoby aby strony ich klientów były bezpieczne. W tym artykule omówimy różne strategie, które agencje i software house’y mogą wdrożyć dla swoich klientów, aby zabezpieczyć WordPress przed atakami hakerów oraz malware.

Wordpress security - Agencja Interaktywna MDA.pl
fot. pexels.com

1. Blokowanie dostępu do informacji o wersji WordPressa

Domyślnie, WordPress ujawnia informacje o swojej wersji w nagłówkach HTTP. Dla hakerów jest to cenne źródło informacji, które może ułatwić im znalezienie potencjalnych luki w zabezpieczeniach. Software house może zablokować dostęp do tej informacji, poprzez modyfikację pliku .htaccess, co sprawi, że potencjalni hakerzy będą mieli trudniejszy dostęp do takich danych.

function remove_version_info() {
return '';
}
add_filter('the_generator', 'remove_version_info');

2. Blokowanie skryptów XML-RPC

Skrypty XML-RPC, choć domyślnie włączone w WordPress, są rzadko używane w praktyce, ale stanowią potencjalne zagrożenie. Mogą umożliwić hakerom zdalne połączenie z CMS i nawet całkowite przejęcie strony. Software house może zablokować dostęp do skryptów XML-RPC poprzez modyfikację pliku .htaccess lub wykorzystując odpowiednie wtyczki.

<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

3. Blokowanie dostępu do WP-JSON

WP-JSON to funkcja WordPress, która umożliwia dostęp do danych strony w formacie JSON. Chociaż jest to przydatne narzędzie do tworzenia aplikacji zewnętrznych, może być wykorzystane przez hakerów do wydobywania danych. Software house może zablokować dostęp do WP-JSON, chyba że jest to absolutnie wymagane.

# Blokowanie dostępu do WP-JSON
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-json/ [NC]
RewriteRule ^ - [F]
</IfModule>

4. Blokowanie dostępu do RESTful API

Jeśli RESTful API nie jest wymagane w danym projekcie, software house może zablokować dostęp do niego. To ograniczenie zmniejsza potencjalne punkty ataku na stronie WordPress.

5. Modyfikacja URL panelu administracyjnego

Software house może zmienić URL panelu administracyjnego WordPress, aby uniknąć ataków brute force na standardowy adres. Odpowiednia modyfikacja URL sprawi, że tylko osoby z dostępem do nowego URL będą w stanie się zalogować. Domyślnym adresem URL panelu administracyjnego dla system WordPress jest:

domena.com/wp-admin/

Warto go zmienić na dowolny inny ciąg znaków np:

domena.com/tajnypanelcms/

6. Regularne aktualizacje

Przed wdrożeniem, software house powinien zapewnić, że wszystkie elementy strony, w tym WordPress, motywy i wtyczki, są zaktualizowane do najnowszych wersji. Aktualizacje zawierają ważne łatki bezpieczeństwa, które mogą zabezpieczyć stronę przed atakami. Utrzymywanie całego środowiska jest równie ważne (jeżeli nie ważniejsze) od jednorazowego zabezpieczenia strony internetowej przy jej publikacji.

7. Ustawienie krótkiego czasu trwania sesji

Software house może skonfigurować krótki czas trwania sesji, co oznacza, że użytkownicy będą musieli częściej logować się na stronie. To dodatkowe zabezpieczenie, które może pomóc w przypadku, gdy ktoś próbuje nieautoryzowanego dostępu do panelu administracyjnego.

add_filter( 'auth_cookie_expiration', 'shorten_auth_cookie_expiration' );
function shorten_auth_cookie_expiration( $expiration, $user_id, $remember ) {
return 1800; // Czas trwania sesji w sekundach (np. 1800 sekund = 30 minut)
}

8. Zabezpieczanie nagłówków serwerowych

Software house może skonfigurować odpowiednie nagłówki serwerowe, takie jak X-Frame-Options, aby zapobiec wyświetlaniu strony w iFrame, co może prowadzić do wyłudzania informacji.

# Zabezpieczanie nagłówków serwerowych
<IfModule mod_headers.c>
Header always append X-Frame-Options "SAMEORIGIN"
</IfModule>

9. Użycie modułu WordFence Security

Instalowanie i konfigurowanie modułu WordFence Security to dodatkowy krok, który może wzmocnić bezpieczeństwo strony WordPress. Moduł ten oferuje kontrolę dostępu, monitoruje aktualności wersji WordPress i rozszerzeń oraz blokuje próby nieudanych logowań. Można go znaleźć w oficjalnym repozytorium pluginów WordPress.

10. Zabezpieczenie struktury katalogowej

Software house powinien zadbać o odpowiednie ustawienie uprawnień dostępu (CHMOD) do katalogów, do których nie musi być dostęp z poziomu WWW. Niepotrzebny dostęp do katalogów może stworzyć potencjalne ryzyko bezpieczeństwa. Na przykład, możemy zablokować dostęp do katalogu zawierającego pliki konfiguracyjne WordPress, takie jak wp-config.php, poprzez dodanie poniższego kodu do pliku .htaccess:

# Zabezpieczanie struktury katalogowej
<Files wp-config.php>
Order Deny,Allow
Deny from all
</Files>

11. Wyłączenie edycji plików PHP

Software house powinien wyłączyć możliwość edycji plików PHP z poziomu WordPress, aby zapobiec potencjalnym zmianom kodu przez nieautoryzowanych użytkowników.

// Disallow file edit
define( 'DISALLOW_FILE_EDIT', true );

12. Ustawienie silnych i unikalnych haseł

Dla głównego administratora i innych kont użytkowników, software house powinien wymagać stosowania silnych i unikalnych haseł. Unikaj standardowych nazw użytkowników, takich jak „admin” czy „administrator”. Możemy również wykorzystać wtyczki, takie jak „Force Strong Passwords,” aby narzucić wymogi dotyczące silnych haseł. Silne hasło powinno zawierać litery, cyfry, znaki specjalne (np. „!”) oraz być dłuższe niż 8 znaków.

Przykład silnego hasła: 6kFYd4V&<1{(nG)s

Silne hasła można tworzyć również przez złożenie kilku słów i znaków, które dla nas będą tworzyć łatwą do zapamiętania całość natomiast będą trudne do odgadnięcia czy złamania atakiem brute force np. RocznicaSlubu2012!

13. Zmiana prefixu tabel w bazie danych

Zmiana prefixu tabel w bazie danych może pomóc w uniknięciu ataków SQL injection, szczególnie w przypadku, gdy formularze na stronie pozwalają na wstrzykiwanie kodu SQL. Przykładem może być zmiana prefixu z wp_ na coś bardziej unikalnego, jak mywp_. Możemy to zrobić podczas instalacji WordPress lub za pomocą narzędzi do zarządzania bazą danych.

14. Wyłączenie raportowania błędów w PHP

Kolejnym koniecznym elementem jest wyłączenie raportowania błędów w PHP, aby uniknąć ujawnienia informacji, które mogą być wykorzystane przez hakerów. W pliku php.ini można ustawić:

display_errors = Off

lub w pliku .htaccess:

php_flag display_errors off

15. Wieloskładnikowe logowanie (MFA)

Wprowadzenie wieloskładnikowego logowania (Multi-Factor Authentication, MFA) jest kluczowym elementem zabezpieczania panelu administracyjnego WordPress. Software house może wykorzystać dostępne wtyczki do wdrożenia MFA, które wymagają od użytkowników podania dodatkowego kodu autoryzacyjnego, obok hasła, np. generowanego na urządzeniu mobilnym. To dodatkowe zabezpieczenie znacznie utrudnia dostęp nieautoryzowanym osobom, nawet jeśli znają hasło do konta.

16. Regularne skanowanie i monitorowanie

Ostatnim, ale nie mniej ważnym krokiem, jest regularne skanowanie strony i monitorowanie jej zabezpieczeń. Software house może wykorzystać dostępne narzędzia do skanowania strony pod kątem malware oraz błędów zabezpieczeń. Dodatkowo, monitorowanie aktywności na stronie i logów serwera może pomóc w wykryciu potencjalnych zagrożeń i działać proaktywnie w przypadku wystąpienia problemów.

Jednym z najbardziej popularnych darmowych skanerów wykrywających wirusy i malware jest ImunifyAV. Dostępny on jest dla wszystkich popularnych platform Linux wykorzystywanych na serwerach WWW. Dodatkowo takie rozszerzenia jak np. WordFence pozwalają skanować stronę WWW z poziomu panelu administracyjnego oraz blokować adresy IP, z których następują próby błędnych logowań do panelu administracyjnego.

Zabezpieczanie systemu WordPress
fot. pexels.com

Podsumowanie

Wdrażanie zaawansowanych strategii zabezpieczeń, takich jak opisane powyżej, może pomóc w zabezpieczeniu stron opartych o system WordPress przed atakami i malware. Bezpieczeństwo strony to priorytet w dzisiejszych czasach. Stosując te praktyki, można zapewnić swoim klientom, że ich strony będą chronione przed atakami i malware, a także zachować niezawodność i integralność ich witryn internetowych. Ważne jest, aby systematycznie monitorować i aktualizować zabezpieczenia, dostosowując je do zmieniających się zagrożeń w cyberprzestrzeni. Dzięki odpowiednim działaniom zabezpieczającym, software house może dostarczyć klientom bezpieczne i pewne strony internetowe, które przyczynią się do sukcesu ich biznesów online.

Warto podkreślić, że ochrona strony WordPress przed atakami i malware to proces ciągły, który wymaga uwagi i zaangażowania. Regularne przeglądy zabezpieczeń i monitorowanie aktywności na stronie to kluczowe elementy utrzymania bezpieczeństwa. Dlatego software house czy agencja interaktywna powinien podejść do tego zadania z pełnym zaangażowaniem i dążyć do ciągłego doskonalenia zabezpieczeń swoich projektów.

Pamiętajmy, że bezpieczeństwo strony internetowej to nie tylko ochrona samej witryny, ale także ochrona danych klientów oraz integralność firmy. Dlatego warto inwestować w odpowiednie narzędzia i praktyki zabezpieczające oraz świadomie podejść do tematu bezpieczeństwa w projektach tworzonych przez software house.

Mateusz Sitarz

Mateusz Sitarz

Dyrektor zarządzający

Internety robi odkąd pamięta. Ogromny fan nowych technologii oraz wieczny optymista z niestwierdzonym ADHD. W realu rzuca do kosza, pływa na wake'u, snowboardzie, skacze biega... no tak ADHD...

Zadzwoń: +48 792 61 25 35

Napisz: sitarz@mda.pl