bezpieczeństwo w Wordpress

Bezpieczeństwo w WordPress to kwestia, która niemal zawsze pojawia się przy rozważaniach o wadach i zaletach WordPressa. I słusznie, bo wraz z ogromnym przyrostem dostępnych treści oraz aplikacji, kwestia security powinna zajmować szczególne miejsce. Do niedawna istniało przekonanie, że jedynie odwiedzanie „podejrzanych” stron internetowych stanowi źródło potencjalnych problemów, np. zainfekowania stacji roboczej, gdy tymczasem luki bezpieczeństwa pojawiają się w coraz większej liczbie miejsc i praktycznie każdy jest na nie narażony.

 

Bezpieczeństwo w sieci – wprowadzenie

Bezpieczeństwo użytkownika jest zapewniane przez dedykowane do tego celu programy, funkcjonujące zarówno po stronie serwera, aplikacji jak i komputera użytkownika. Jego najprostszym przykładem jest skaner antywirusowy, który najczęściej jest uruchomiony zarówno na serwerze jak i komputerze użytkownika.

Przykład ten ilustruje ochronę przed jednym, konkretnym zagrożeniem. Należy jednak mieć świadomość, iż jest to jedno z wielu zagrożeń, z których największe to:

  • nielegalne uzyskiwanie danych,
  • włamania sieciowe,
  • infekcje wirusowe,
  • wyłudzenia i oszustwa internetowe,
  • spam.

Najtrudniejszymi, zarówno do wykrycia jak i zablokowania, są ataki bazujące na socjotechnikach. Ich celem są ludzie, którzy są dużo łatwiejszym „targetem” niż system komputerowy. Tego typu techniki, oraz wiele innych, są używane podczas oszustw internetowych oraz nielegalnego uzyskiwania danych. Wprowadzenie zaleceń z niniejszego artykułu minimalizuje ryzyko ataku od strony oprogramowania ale nie eliminuje ryzyka całkowicie. Najlepszym przykładem tej grupy zagrożeń jest phishing, polegający na podszywaniu się pod inną, zaufaną instytucję (bądź osobę) celem zdobycia wrażliwych danych – najczęściej dotyczących kart kredytowych oraz danych dostępowych do internetowych rachunków bankowych.

Zagrożenia „tradycyjne”: włamania sieciowe, infekcje wirusowe czy spam są jednak w dalszym ciągu popularne – między innymi przez łatwość ich zastosowania, co przekłada się na wysoką skalę tego zjawiska. Niżej omówimy przykładowe techniki, pozwalające zapobiec wystąpieniu zagrożenia, zarówno od strony serwerowej jak i aplikacyjnej, na przykładzie oprogramowania WordPress.

 

Bezpieczeństwo w WordPress

Naruszenia bezpieczeństwa są niebezpieczne zarówno dla serwera hostującego skompromitowaną aplikację, jak i użytkownika przeglądającego serwis. W przypadku destabilizacji serwera możliwe jest wystąpienie niedostępności innych, pracujących na nim witryn, a w skrajnych przypadkach nawet całego serwera. Z drugiej strony, ewentualna infekcja stacji roboczej użytkownika może np. spowodować jej dołączenie do tzw. botnet-u i użycia do różnego rodzaju ataków. Często włamanie poprzez WordPressa ma za zadanie rozesłanie spamu/reklam co prowadzi najczęściej do wpisania serwera na czarne listy spamowe i uniemożliwia rozsyłanie maili z niego w ogóle – w tym rejestracji użytkowników, potwierdzeń zakupów czy innych maili jakie stanowią normalną funkcje serwisu jaka przestaje działać narażając właściciela na straty. Tylko wykrycie w porę wysyłki spamu może nas przed tym uchronić – takie wykrywanie realizują Hostersi w ramach monitoringu usług serwera w ramach zarządzania serwerem.

Powyższy, prosty przykład pokazuje jak ważnym aspektem jest bezpieczeństwo aplikacji. Uzyskanie odpowiednio wysokiego poziomu ochrony pozwoli na zredukowanie, w znacznym stopniu, możliwości wystąpienia wspomnianej sytuacji.

Należy zdawać sobie sprawę, że podatności komputera, z którego są prowadzone prace administracyjne, mogą przenieść się na aplikację. Przed przystąpieniem do jakichkolwiek prac warto sprawdzić komputer i zadbać o jego bezpieczeństwo. Zaleca się również stosować połączenie SFTP czy SSH, w zamian dotychczasowego FTP, do przesyłania plików i ich modyfikacji.

Pierwszą, nieodłączną zasadą podczas dbania o bezpieczeństwo jest aktualizacja oprogramowania. WordPress jest oprogramowaniem aktualizowanym dosyć często. Twórcy na bieżąco poprawiają zastosowane rozwiązania, jednocześnie blokując potencjalne luki bezpieczeństwa, wydając tym samym nowe wersje. Informacje na temat wydań, wraz z listą zmian, są dostępne na stronie WordPress Codex.

bezpieczeństwo w wordpress

Pierwszą, nieodłączną zasadą podczas dbania o bezpieczeństwo jest aktualizacja oprogramowania.

 

Informacje o dostępności aktualizacji są dostępne nie tylko na stronie internetowej WordPress, ale również w panelu administracyjnym oprogramowania. Dodatkowo, poprzez zastosowanie jednej z dostępnych wtyczek, możliwe jest powiadamianie poprzez e-mail. Jednak dużo łatwiejszym rozwiązaniem jest skorzystanie z wbudowanej funkcji automatycznych aktualizacji, co jest zalecane przynajmniej dla „core updates”. Konfiguracja polega na edycji głównego pliku konfiguracyjnego wp-config.php – zdefiniowaniu dyrektywy: WP_AUTO_UPDATE_CORE.

Możliwe jest oczywiście zaawansowane zarządzanie tym procesem, np. instalowanie wyłącznie aktualizacji określonego typu czy wykluczenie aktualizacji wtyczek, poprzez zastosowanie filtrów. Dostępne opcje są opisane w dokumentacji oprogramowania, przez co ich implementacja nie przysparza problemów.

Pamiętajmy, że to najczęściej wtyczki do WordPressa i skórki są miejscami przez które najczęściej następuje skuteczny atak.

 

Silne hasła.

Drugą, często bagatelizowaną, zasada jest zdefiniowanie odpowiednio bezpiecznych haseł oraz nietypowych nazw użytkowników. Punkt ten dotyczy zwłaszcza użytkownika administracyjnego, posiadającego pełne prawa do wszystkich operacji w ramach instancji WordPress.

Domyślna nazwa użytkownika jest najczęstszym celem ataków. Nie dotyczy to tylko domyślnej nazwy użytkownika WordPress, ale wielu innych aplikacji. Dobrze znane nazwy, których należy unikać to np. admin, root, administrator. Jeśli już taka jest używana, to powinna zostać zmieniona.

bezpieczeństwo w WordPress

Domyślna nazwa użytkownika jest najczęstszym celem ataków

 

Odpowiedni poziom skomplikowania hasła jest podstawą do ochrony przed atakami typu brute force. Podczas jego tworzenia warto przestrzegać kilku podstawowych zasad:

  • hasło powinno składać się z minimum 10 znaków alfanumerycznych,
  • należy unikać kombinacji: imion, nazwiska, nazwy witryny oraz innych znanych elementów,
  • poza znakami alfanumerycznymi, warto zastosować przynajmniej jeden znak specjalny,
  • zaleca się używać losowych ciągów znaków – unikając znanych słów (tzw. słownikowych).

Mimo silnego hasła dostępowego, zgodnie z dobrymi praktykami, powinno się je regularnie zmieniać. Zaleca się, aby taka zmiana była przeprowadzana co trzydzieści dni (wiemy, że to mało realne), a nowe hasło było inne niż pięć poprzednich. Uzupełnieniem takiej polityki jest zastosowanie weryfikacji dwuetapowej (MFA, 2FA). WordPress posiada możliwość zastosowania wtyczki, która taką funkcjonalność zapewnia. Jedną z najpopularniejszych jest wtyczka do integracji z Google Authenticator. Warto również skorzystać z jednej z dostępnych wtyczek limitujących błędne próby logowania. Zapewnienie maksymalnej ochrony panelu logowania jest możliwe poprzez dozwolenie wyświetlenia strony logowania wyłącznie z określonych adresów IP oraz dodatkową warstwę logowania – basic auth. Osiągnąć to można poprzez utworzenie konfiguracji .htpasswd oraz zdefiniowanie w pliku .htaccess katalogu wp-admin:

Order Deny,Allow
Deny from all
Allow from XXX
<Files wp-login.php>
AuthUserFile ~/.htpasswd
AuthName „Access restricted”
AuthType Basic
require user XXXXX
</Files>

Sam URL strony logowania również warto zastąpić nowym, unikatowym. Pozwoli to na częściową ochronę ‚out of the box’ przed atakami.

 

Bezpieczeństwo w WordPress. Klucze autoryzacyjne.

Kolejnym czynnikiem wpływającym na obniżenie bezpieczeństwa WordPress-a jest używanie domyślnych kluczy autoryzacyjnych. W połączeniu z „solami” (salt), są odpowiedzialne za zapewnienie bezpieczeństwa „w transporcie” danych pomiędzy przeglądarką, a serwerem (ciasteczek).

Ich zdefiniowanie odbywa się jednorazowo. Można w tym celu skorzystać z API udostępnianego przez producentów WordPress.

Dodatkowy stopień ochrony można zapewnić poprzez ukrycie dostępu do plików: wp-config.php oraz .htaccess i .htpasswd. Zmiana ta może zostać łatwo wprowadzona w pliku .htaccess:

<FilesMatch „\.(htaccess|htpasswd|wp-config.php)$”>
Order Deny,Allow
Deny from all
</FilesMatch>

Równocześnie warto aktywować zabezpieczeniem przed zmianą konfiguracji WordPress przez edytor – zmianę dyrektywy DISALLOW_FILE_EDIT w pliku wp-config.php.

WordPress dysponuje rozbudowanym API, które pozwala deweloperowi na wykonywanie wielu akcji. XML-RPC stało się jednak celem wielu ataków typu DoS, stąd zaleca się ograniczenie dostępu do tych funkcji. Możliwe jest całkowite zablokowanie, dostępu do XML-RPC, np. poprzez odpowiednie wpisy w pliku .htaccess, jednak efektem tego będzie np. niedostępność aplikacji mobilnej. Innym rozwiązaniem jest zastosowanie JetPack – wtyczki pozwalającej m.in. na ochronę przed tego typu atakami. Niezależnie od wybranego rozwiązania – jego implementacja powinna być przeanalizowana pod kątem ewentualnych „skutków ubocznych” objawiających się w postaci niedziałania elementów serwisu.

Należy dodać, że wtyczek poprawiających bezpieczeństwo WordPress jest wiele – począwszy od podstawowych, oferujących jedynie konkretne funkcjonalności, po rozbudowane systemy działaniem przypominające zaporę ogniową. Ich używanie jest jak najbardziej zalecane.

 

Bezpieczeństwo w WordPress. Certyfikat SSL.

Ostatnim elementem pozwalającym podnieść poziom bezpieczeństwa aplikacji WordPress jest zastosowanie certyfikatu SSL. Połączenie szyfrowane można wymusić dla strony logowania, lecz zaleca się, aby cała transmisja była szyfrowana. Oczywiście serwer musi obsługiwać aktualne i bezpieczne protokoły szyfrowania uznawane za bezpieczne – o ich konfigurację dbać powinien świadomy Administrator serwera.

Odpowiednie zabezpieczenie aplikacji jest gwarancją jej długiego i bezproblemowego działania. Zaprezentowane oraz częściowo omówione w artykule metody poprawy bezpieczeństwa nie są jedynymi. Poza nimi, oraz innymi możliwymi do wdrożenia od strony aplikacyjnej, są dostępne również dodatkowe zabezpieczenia implementowane od strony serwerowej, np. poprzez nadanie właściwych uprawnień na plikach i katalogach, zastosowanie oprogramowania analizującego dzienniki oraz zmiany w systemie plików czy zapewnienie jedynie wymaganych uprawnień użytkownika bazodanowego, a także zastosowanie dodatkowych nagłówków HTTP (np. X-Frame-Options). Oczywiście uzupełnieniem wszystkich działań jest regularna kopia zapasowa, zarówno plików jak i bazy danych.

 

Web Application Firewall (WAF).

Na koniec należy wspomnieć o możliwości wykorzystania Web Application Firewall (WAF). Oprogramowanie to analizuje ruch w ramach aplikacji oraz, w razie potrzeby, podejmuje odpowiednie akcje. Potrafi wykryć zarówno proste ataki, jak np. SQL Injection, ale świetnie radzi sobie również z bardziej złożonymi. WAF istnieje jako dedykowane oprogramowanie, bądź serwer, ale także jako usługa – np. w ofercie CloudFlare. Od strony serwerowej najpopularniejszymi przykładami tego rodzaju oprogramowania są moduły do serwerów HTTP – ModSecurity dla Apache czy NAXSI dla NginX.

 

Bezpieczeństwo w WordPress. Podsumowanie.

Odpowiednie zabezpieczenie WordPressa to jedno. Najważniejszy jest jednak zdrowy rozsądek i nieułatwianie zadania potencjalnym hakerom. Zachowując najważniejsze standardy bezpieczeństwa, WordPress będzie tak samo bezpieczny, jak inne, alternatywne rozwiązania.

 

PYTANIA

 

 

 

Zobacz również:

Dlaczego moja strona wolno się ładuje?
Hosting ecommerce dla sklepu internetowego
Przeniesienie sklepu internetowego do chmury
Infrastruktura serwerowa bez tajemnic. Serwer dedykowany, VPS, czy chmura?
Zarządzenie serwerami i optymalizacja dla Olive.pl
Chmura AWS na czas sprzedaży biletów na koncert Justina Biebera