Metody zabezpieczania WordPress przed włamaniem – poradnik

Znane przysłowie mówi, że “lepiej zapobiegać niż leczyć” i sprawdza się idealnie w przypadku zabezpieczania Twojej strony. Usunięcie infekcji może być czasochłonne, drogie lub czasem po prostu nieopłacalne. Zazwyczaj też nie jest łatwe i wymaga specjalistycznej wiedzy. Tańszą i bardziej opłacalną opcją jest wcześniejsze zadbanie o odpowiednie przygotowanie.

Wstęp

Szkodliwy kod zaimplementowany w twojej witrynie może narobić wielu szkód. Bardzo często zdarzają się infekcje, które mają na celu przejęcie strony i uczynienie z niej, na przykład, “farmy linków”. W takim przypadku złośliwy kod automatycznie tworzy niezliczone ilości podstron z linkami wychodzącymi lub spamowe przekierowania. Efektem jest stale rosnąca liczba zaindeksowanych spamowych podstron. Nie trzeba chyba wspominać, jak bardzo negatywnie wpływa to na całą domenę.

Według danych z 2023 roku, 43% całego Internetu działa na platformie WordPress. Jest to około 64,2% udziału we wszystkich systemach CMS na świecie. Statystyki dotyczące włamań na WordPress wskazują, że około 73% wszystkich instalacji jest narażonych na ataki ze strony hakerów. To potwierdza, że bezpieczeństwo tych systemów powinno być nieodłącznym elementem naszej obecności w Internecie.

Przykładowe włamanie może wyglądać w indeksie strony tak jak poniżej:

przykładowe infekcja wordpress - widok na indeks strony (SERP)
źródło: https://sucuri.net/reports/sitecheck-remote-website-scanner-mid-year-2023-report/

Regularne aktualizacje – jeden z najważniejszych elementów bezpieczeństwa

Każdego dnia pojawiają się informacje o nowych podatnościach w wtyczkach, motywach oraz samym jądrze WordPress. Mimo to, twórcy tych rozwiązań stale monitorują sytuację i dążą do wprowadzania poprawek w każdej nowej wersji. Dzięki temu nie jest wymagana zaawansowana wiedza, a regularne aktualizacje stają się jedną z najszybszych i najprostszych metod zapobiegania problemom.

Wyobraź sobie, że każdego tygodnia zostaje odkryta nowa podatność w zestawie wtyczek i motywów, których używasz. Pomnóż to przez liczbę tygodni, w których nic nie aktualizowałeś, na przykład przez 52 tygodnie. Teoretycznie, po roku Twoja strona może zawierać 52 luki w zabezpieczeniach, które mogą być wykorzystane do włamania. To uświadamia, jak istotne są systematyczne aktualizacje.

Istotne jest również regularne aktualizowanie wersji PHP do najnowszej dostępnej na serwerze. Aktualizacje te są ważne głównie ze względu na bezpieczeństwo, ponieważ nowsze wersje PHP zawierają poprawki zabezpieczeń, chroniące przed wykorzystaniem znanych luk w kodzie. Co więcej, aktualizacje mogą wprowadzać nowe funkcje i ulepszenia, które poprawiają wydajność i funkcjonalność strony internetowej lub aplikacji.

Regularne przechodzenie na najnowszą wersję PHP jest ważne dla bezpieczeństwa, wydajności i funkcjonalności Twojej strony. Wymaga to jednak odpowiedniego planowania i testowania, aby uniknąć nieprzewidzianych problemów.

Używaj silnych haseł

Tworzenie silnych haseł jest bardzo ważne, choć często pomijane. W tym zakresie obowiązują standardowe metody, takie jak:

  • Długość hasła – Używaj haseł o długości co najmniej 12 znaków. Dłuższe hasła są trudniejsze do złamania.
  • Mieszanie znaków – Używaj kombinacji wielkich i małych liter, cyfr oraz symboli. Różnorodność znaków zwiększa złożoność hasła.
  • Unikanie przewidywalności – Unikaj prostych, łatwych do odgadnięcia wzorców lub sekwencji. Całkowicie unikaj kombinacji takich jak “123456”, “haslo”, czy “danuta36”.
  • Brak osobistych informacji – Nie używaj łatwych do odgadnięcia informacji, takich jak daty urodzenia, imiona, nazwiska, czy imion Twoich zwierzaków.
  • Unikalność – Stosuj różne hasła dla różnych kont i usług. W ten sposób, jeśli jedno hasło wycieknie, inne konta pozostaną bezpieczne. Hasło do hostingu, hasło konta administratora, hasło do bazy danych oraz hasło do FTP – każde z nich musi być unikalne.
  • Aktualizacje haseł – Regularnie zmieniaj hasła, szczególnie na kontach zawierających wrażliwe dane.
  • Używanie menedżera haseł – Rozważ użycie niezawodnego menedżera haseł, który może przechowywać silne i złożone hasła oraz pomagać w ich organizacji. Przykłady to KeePass lub Bitwarden.

Zabezpiecz logowanie do panelu admina

Formularze logowania w WordPress są często narażone na ataki. Aby dodatkowo wzmocnić proces logowania, można zastosować następujące rozwiązania:

  • Limitowanie liczby nieudanych prób logowania – Wtyczka blokuje dostęp do strony po kilku nieudanych próbach logowania np. Limit Login Attempts. Pomaga unikać ataków typu brute-force.
  • Logowanie dwuetapowe (2FA) – Podczas logowania do panelu administratora wymagane jest wprowadzenie dodatkowego kodu, generowanego przez aplikację lub wysłanego SMS-em. To zabezpieczenie jest pomocne w przypadku wycieku loginu i hasła. Przykład wtyczki: WP 2FA.
  • Zmiana ścieżki logowania – Standardowa ścieżka logowania do panelu administracyjnego (np. domena.pl/wp-admin/) jest dobrze znana i może być celem botów. Zmiana tej ścieżki na inną może skutecznie zabezpieczyć stronę przed automatycznymi skanowaniami. Przykład wtyczki: WPS Hide Login
  • Captcha – Wymaga od użytkownika zaznaczenia checkboxa lub rozwiązania zadania, co pomaga odfiltrować boty. Przykład wtyczki: Login No Captcha reCAPTCHA

Baza danych – zabezpieczenia

Jednym z potencjalnych zagrożeń dla bezpieczeństwa strony internetowej może być uzyskanie nieautoryzowanego dostępu do jej bazy danych. Aby zminimalizować to ryzyko, warto zmienić standardowy prefix tabel w bazie danych (który zwykle brzmi ‘wp_’) na inny, niestandardowy. Dodatkowo, istotne jest, aby nazwa bazy danych różniła się od loginu użytkownika do niej. Te działania mogą znacząco wzmocnić bezpieczeństwo bazy danych.

Sprawdź co możesz osiągnąć w SEO

Dostosuję zakres działań do Twojej domeny i możliwości.

Darmowa konsultacja

Modyfikacje plików – dodatkowe zabezpieczenia

Modyfikacje w pliku functions.php

Internet jest nieustannie skanowany przez boty w poszukiwaniu tzw. „footprintów”. W uproszczeniu, są to informacje pozwalające na zidentyfikowanie określonych cech danej strony. Przykładem może być kombinacja używanej wersji PHP oraz wersji wtyczki, która jest podatna na ataki.

Aby zabezpieczyć stronę przed takimi zagrożeniami, konieczne jest wprowadzenie kilku modyfikacji. Polegają one na usunięciu pewnych informacji z nagłówka (header) strony. Wszystkie te modyfikacje należy wprowadzić do pliku functions.php aktualnie używanego motywu.

// remove WordPress version
function remove_version() {
	return '';
}
add_filter('the_generator', 'remove_version');
// remove windows editor and really simple discovery
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
// Remove the WordPress generator tag.
remove_action( 'wp_head', 'wp_generator' );
// Remove RSS feed links.
remove_action( 'wp_head', 'feed_links', 2 );
remove_action( 'wp_head', 'feed_links_extra', 3 );
// Remove the link to the Windows Live Writer manifest file.
remove_action( 'wp_head', 'wlwmanifest_link' );
// remove xmlrpc (JEŚLI NIE UŻYWAMY)
add_filter('xmlrpc_enabled', '__return_false');
// remove rest api (JEŚLI NIE UŻYWAMY)
remove_action('xmlrpc_rsd_apis', 'rest_output_rsd');
remove_action('wp_head', 'rest_output_link_wp_head');
remove_action('template_redirect', 'rest_output_link_header', 11, 0);

Modyfikacje pliku wp-config.php

Wszystkie zmiany wprowadzamy w pliku wp-config.php (znajduje się w głównym folderze naszego WordPressa). Każdy wpis może się w nim pojawić tylko raz, dlatego jeśli już jest, wystarczy podmienić wartość true/false.

Wyłącz edytor plików motywu

define('DISALLOW_FILE_EDIT',true);

Wyłącz debugowanie (informacje o błędach)

define('WP_DEBUG', false);
if ( ! WP_DEBUG ) {
	ini_set('display_errors', 0);
}

Wymieniaj klucze tzw. salty co 3 miesiące. Wygenerujesz je tutaj: https://api.wordpress.org/secret-key/1.1/salt/.

Dodatkowe zabezpieczenia

  • Nie używaj konta o nazwie “admin”. Zmień na cokolwiek innego.
  • zmień ID użytkownika, który ma wartość 1 na jakąkolwiek wysoką liczbę. Zrobisz to w bazie danych Twojej strony.

Nagłówki bezpieczeństwa HTTP – warte wdrożenia

Nagłówki bezpieczeństwa to zestaw standardów i komend, które służą do zwiększenia bezpieczeństwa strony internetowej. Poniżej przedstawiono opis najważniejszych nagłówków. Skoncentrujemy się na tych, które mają kluczowe znaczenie dla dodatkowego zabezpieczenia strony przed infekcjami.

  1. Content Security Policy (CSP) – określa źródło ładowania różnych typów zasobów strony tj. obrazki, skrypty, pliki css. W momencie wykrycia ataku XSS, zrywa połączenie.
    Przykładowe użycie: Content-Security-Policy: script-src 'self'; object-src 'none'
  2. HTTP Strict Transport Security (HSTS) – zmusza przeglądarkę do łączenia się zawsze przez protokół HTTPS podczas ładowania strony.
    Przykładowe użycie: Strict-Transport-Security: max-age=31536000; includeSubDomains.
  3. X-Content-Type-Options – zabezpiecza przed atakami sniffowania MIME, które polegają na błędnym interpretowaniu typów plików przez przeglądarkę.
    Przykładowe użycie: X-Content-Type-Options: nosniff.
  4. X-Frame-Options – kontroluje, czy strona może być wyświetlana w ramce (frame lub iframe). Chroni użytkownika przed kliknięciem w złośliwe (i ukryte) elementy strony.
    Przykładowe użycie: X-Frame-Options: DENY lub X-Frame-Options: SAMEORIGIN.
  5. Cross-Origin Resource Sharing (CORS) – określa, jak zasoby z naszej strony mogą być udostępniane innym domenom.
    Przykładowe użycie: Access-Control-Allow-Origin: <https://example.com>.
    W naszym przypadku nie będziemy go używać, ponieważ może zaburzyć działanie niektórych elementów strony.
  6. Feature-Policy – ten typ nagłówka pozwala na określenie, które funkcje i API przeglądarki mogą być używane przez witrynę np. mikrofon, kamera lub lokalizacja.
    Przykładowe użycie: Feature-Policy: microphone 'none'; geolocation 'self'.
  7. Referrer-Policy – Kontroluje, jakie informacje o stronie odsyłającej są przekazywane w nagłówkach HTTP. Po włączeniu, strona docelowa nie dowie się, że przeszliśmy na nią z naszej domeny.
    Przykładowe użycie: Referrer-Policy: no-referrer lub Referrer-Policy: origin.

Gotowy kod do wklejenia w functions.php

#naglowki bezpieczenstwa
header('X-Frame-Options: SAMEORIGIN');
header('X-XSS-Protection: 1; mode=block');
header('Referrer-Policy: same-origin');

Jeżeli chcesz uruchomić nagłówek HSTS, oprócz jego wklejenia, należy też dodać stronę do listy: https://hstspreload.org/. Sprawdzisz na niej także czy Twoja domena ma już wdrożony HSTS.

Wybierz niezawodne motywy i wtyczki

Kluczowym aspektem w zapewnieniu bezpieczeństwa strony internetowej jest korzystanie z wiarygodnych źródeł wtyczek i motywów. W Internecie istnieje wiele niepewnych stron oferujących tzw. wtyczki „nulled”, których zawartość może być nieprzewidywalna i potencjalnie zawierać złośliwe oprogramowanie. Dlatego należy instalować wtyczki wyłącznie z zaufanych źródeł, takich jak oficjalne repozytorium WordPress lub renomowane sklepy typu EnvatoMarket, zwracając uwagę na reputację producenta wtyczki.

Rozwiązania pochodzące ze sprawdzonych i renomowanych źródeł gwarantują regularne aktualizacje oraz systematyczne łatanie ewentualnych błędów. Są one również lepiej zaprojektowane, co zmniejsza ryzyko pojawienia się luk bezpieczeństwa.

Ponadto, wszelkie wtyczki i motywy, których nie używamy, powinny zostać usunięte z serwera w celu dodatkowego zabezpieczenia strony.

Twórz regularne kopie zapasowe

Ludzie dzielą się na tych, którzy robią backupy i na tych, którzy dopiero zaczną je robić” – to znane powiedzenie w świecie IT, które podkreśla wagę regularnego tworzenia kopii zapasowych danych. Jest to niezbędny element strategii bezpieczeństwa, szczególnie w przypadku systemów zarządzania treścią, takich jak WordPress. Regularne tworzenie kopii zapasowych nie tylko minimalizuje ryzyko utraty danych, ale również umożliwia szybką reakcję i przywrócenie normalnej funkcjonalności strony w razie potrzeby.

Istnieją dwa główne sposoby tworzenia backupów:

  1. Na poziomie serwera: Ustawienia te znajdziesz w panelu zarządzania Twojego hostingu. Większość dostawców hostingu oferuje automatyczne tworzenie kopii zapasowych.
  2. Za pomocą wtyczki: Dostępnych jest wiele rozwiązań dla WordPress, takich jak Updraft czy BackWPup. Zaleca się korzystanie z tych wtyczek, które umożliwiają tworzenie kopii zapasowych bazy danych i plików w formatach .rar lub .zip. Umożliwia to ręczne przywracanie wybranych plików, jeśli zajdzie taka potrzeba.

Warto również zaznaczyć, że kopie zapasowe powinny być przechowywane w miejscu innym niż serwer zawierający pliki naszej strony. Zapewnia to dodatkowe zabezpieczenie danych i umożliwia dostęp do nich nawet w przypadku awarii serwera.

Ogranicz dostęp do plików i katalogów

Każdy plik i folder w strukturze WordPress powinien mieć odpowiednio ustawione prawa dostępu, czyli uprawnienia do odczytu, zapisu i wykonania. Standardowe uprawnienia dla plików i folderów w WordPress zaleca się ustawić następująco:

  • folder wp-admin, wp-content oraz wp-includes – 755
  • plik wp-config.php – 644
  • plik .htaccess – 644
  • inne pliki – 644

Te ustawienia uprawnień pomagają w zabezpieczeniu strony WordPress przed nieautoryzowanym dostępem i modyfikacjami. Pamiętaj, że prawa dostępu można zmieniać za pomocą klienta FTP, takiego jak FileZilla, lub bezpośrednio przez panel zarządzania plikami w hostingu.

Zabezpieczenia na poziomie serwera

  • Korzystaj z certyfikatu SSL: Certyfikaty SSL (Secure Sockets Layer) zapewniają szyfrowanie danych przesyłanych między serwerem a klientem, co jest kluczowe dla ochrony prywatności i bezpieczeństwa online.
  • Włącz firewall (WAF) / mod_security: Zapewnienie ochrony przed atakami z zewnątrz jest niezbędne. Firewall aplikacji internetowych (WAF) lub mod_security mogą skutecznie chronić serwer przed różnorodnymi zagrożeniami.
  • Wybierz serwer z ochroną DDoS: Ochrona przed atakami typu Distributed Denial of Service (DDoS) jest niezwykle ważna, aby zapobiec przeciążeniu serwera przez niechciany ruch sieciowy.
  • Używaj najnowszych wersji PHP: Stosowanie najnowszych wersji PHP zapewnia dostęp do najnowszych funkcji, poprawek bezpieczeństwa i usprawnień wydajności.

Wdrożenie tych zabezpieczeń na poziomie serwera pomoże w ochronie Twojej strony internetowej przed zagrożeniami i zapewni lepszą ochronę danych użytkowników.

Wtyczki zabezpieczające – czy warto ich używać?

Wtyczki zabezpieczające WordPress, takie jak iThemes Security, Wordfence, Sucuri Security, mają zarówno zwolenników, jak i przeciwników. Po wielu latach testów i doświadczeń, osobiście skłaniam się ku drugiej grupie. Nie polecam stałego używania tych narzędzi, ponieważ mimo ich skuteczności w pewnych aspektach ochrony, mogą one same stać się celem ataku. Jedyna sytuacja, w której bym je zalecił, to tymczasowa instalacja w celu przeskanowania plików pod kątem potencjalnych infekcji, a następnie szybkie odinstalowanie po zakończeniu.

Jednak istnieje wtyczka, której czasami sam używam – Security Ninja. Ta wtyczka znacząco przyspiesza proces testowania WordPressa pod kątem podstawowych zasad bezpieczeństwa. Za pomocą jednego kliknięcia generuje podstawowy audyt bezpieczeństwa, wskazując elementy, które wymagają poprawy, a niektóre z nich można nawet wdrożyć automatycznie. Po zakończeniu zalecam jednak jej odinstalowanie.

Monitoruj aktywność

Regularne monitorowanie aktywności witryny jest kluczowe, zwłaszcza w kontekście identyfikacji podejrzanych działań. Systematyczne obserwowanie umożliwia efektywne wykrywanie prób nieautoryzowanego dostępu, ataków hakerskich, prób włamań i innych niepokojących zachowań. Dzięki temu można szybko reagować na podejrzane zdarzenia, minimalizując ryzyko utraty danych, naruszenia prywatności lub uszkodzenia systemu. Zatem, regularne monitorowanie aktywności strony jest niezbędne do zapewnienia jej bezpieczeństwa i ochrony.

Podstawowy monitoring strony internetowej można zrealizować na dwa główne sposoby. Pierwszym z nich jest systematyczna analiza logów serwera, które są dostępne w panelu zarządzania hostingiem. Drugim skutecznym narzędziem jest uruchomienie monitoringu dostępności witryny za pomocą takich usług jak Status Cake czy UptimeRobot, które mogą również informować o wygaśnięciu certyfikatu SSL.

Podsumowanie

Mam nadzieję, że przedstawione wskazówki okażą się dla Ciebie przydatne i zastosujesz je w praktyce, jeśli jeszcze tego nie zrobiłeś. Pamiętaj, że kluczowe jest regularne aktualizowanie systemu, wtyczek i motywów, a także stosowanie silnych haseł oraz efektywnych zabezpieczeń logowania. Dziękuję za poświęcenie czasu na przeczytanie tego tekstu. Mam nadzieję, że przyczyni się on do lepszej ochrony Twojej strony przed ewentualnymi zagrożeniami.

W przypadku dodatkowych pytań, skontaktuj się ze mną.

Patryk Pietrzak

Patryk Pietrzak

Artykuły: 3

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *