Jak zabezpieczyć WordPress?

31 Styczeń, 2017

WordPress powstał pierwotnie jako platforma blogowa, która jednak za sprawą swej intuicyjności, prostoty, darmowości oraz uniwersalności stała się podstawą tworzenia i zarządzania stronami oraz serwisami internetowymi. Ogromną jej zaletą jest też ciągły rozwój – stale pojawiają się bowiem nowe wtyczki czy szablony, które rozszerzają możliwości oferowane przez to narzędzie. Popularność platformy to również główna przyczyna obranie jej za cel licznych ataków. W artykule tym przedstawię wybrane metody zabezpieczenia WordPressa przed szkodliwą ingerencją z zewnątrz.

 

Działania wstępne

Zacznijmy od wyboru odpowiedniego hostingu. Powinniśmy zwracać uwagę przede wszystkim na oferowane zabezpieczenia, obecność aktualnego i stabilnego oprogramowania serwera oraz skuteczność metod tworzenia kopii zapasowych i odzyskiwania danych.

Nie można zlekceważyć także selekcji instalowanych na komputerze aplikacji internetowych oraz dostawcy Internetu – ich wiarygodność zwiększa poziom bezpieczeństwa.    

Warto pamiętać o rozważnym ograniczeniu dostępu oraz odpowiedniej konfiguracji systemu, pozwalającej na zminimalizowanie szkód powstałych na skutek ataku. Istotną sprawą jest również skuteczne zabezpieczenie komputera przed wirusami i innym szkodliwym oprogramowaniem. Nie pomijajmy aktualizacji systemu operacyjnego, przeglądarek internetowych i innych zainstalowanych aplikacji. Bezpieczniej jest również zrezygnować z przeglądania stron niezaufanych lub używać do tego celu narzędzi typu no-script.

 

Login i hasło

Podstawę stanowi rezygnacja z banalnego loginu administratora, typu admin czy root. Niezwykle ważną kwestią jest również ustalenie hasła, które dysponuje odpowiednią siłą. Unikać w nim należy przede wszystkim prawdziwych danych na swój temat, słów krótkich czy używanych w kilku językach oraz ciągów samych liter bądź cyfr. Te proste reguły stanowią pierwszą linię obrony przed np. Brute Force Attack, polegającym na testowaniu wszystkich kombinacji znaków w celu ustalenia ciągu właściwego. Przy wyborze bezpiecznego hasła pomocne mogą być przeznaczone do tego generatory czy miernik jego siły wbudowany w WP. Bardzo dobrym pomysłem jest również skorzystanie z systemów uwierzytelniania dwuskładnikowego (np. Rublon). Z tendencją do walki z prostymi do złamania hasłami można walczyć także poprzez wycięcie dostępu do panelu logowania.

 

Rozwiązanie to może być korzystne, w sytuacji gdy z panelu korzystamy tylko my i odbywa się to zawsze z określonych lokalizacji. Osiągniemy to poprzez odpowiednie zmodyfikowanie pliku .htaccess w głównym katalogu instalacji:

<Files wp-login.php>

order deny,allow

Deny from all

 

#Adres IP, z którego będziemy mogli się zalogować

allow from xx.xxx.xx.xx

 

#Kolejny adres IP dopuszczony do panelu
allow from xx.xxx.xx.xx

 

</Files>

 

Aktualizacja WordPressa

Informacje na temat aktualizacji WordPressa są zawsze widoczne z poziomu strony głównej. Należy pamiętać, żeby nie pobierać ich z żadnej innej witryny internetowej. Możliwe jest też skorzystanie z opcji otrzymywania stosowanych powiadomień poprzez WordPress Dashboard czy ustawienie zautomatyzowania procesu. Aktualizacje rozwiązują wszelki problemy zdiagnozowane w starszych wersjach narzędzia. Luki te zostają podane do wiadomości publicznej, co zwiększa ryzyko skutecznego ataku na niezaktualizowane platformy.

W przypadku odkrycia nowej dziury w zabezpieczeniach WordPress – właściwe będzie zgłoszenie jej za pomocą odpowiedniego formularza.

 

Bezpieczeństwo baz danych

Kiedy prowadzisz wiele blogów lub stron na tym samym serwerze, lepiej utrzymywać je w odrębnych bazach danych zarządzanych przez innego użytkownika. W znacznym stopniu utrudni to intruzowi atak na nie wszystkie. Najłatwiej osiągnąć to poprzez wybór odpowiedniej opcji w trakcie instalacji WP.  Przydatne jest również poznanie konfiguracji bazy MySQL i wyłączenie w niej niepotrzebnych funkcji, gdy uczynimy siebie jej administratorem.

Właściwym podejściem jest wykonywanie regularnych kopii zapasowych swoich baz danych oraz podstawowych plików WordPressa, co pozwoli na szybsze odbudowanie strony oraz przeanalizowanie naruszenia. Przed ich nieupoważnionym zmodyfikowaniem uchroni natomiast szyfrowanie (z zachowaniem zapisu MD5) i umieszczenie kopii na nośnikach tylko do odczytu. 

 

 

Zabezpieczenie wp-admin i wp-config.php

Dodanie zabezpieczenia hasłem – typu, np. BasicAuth – do wp/admin pozwala uzyskać drugą warstwę ochrony obejmującą obszar wokół administratora, panelu logowania i same pliki. To właśnie na niej potencjalny atakujący skupi swoje wysiłki. Osiągniemy to przez użycie skryptu mod_rewrite w pliku .htaccess :

# Block the include-only files.

<IfModule mod_rewrite.c>

RewriteEngine On

RewriteBase /

RewriteRule ^wp-admin/includes/ - [F,L]

RewriteRule !^wp-includes/ - [S=3]

RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]

RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]

RewriteRule ^wp-includes/theme-compat/ - [F,L]

</IfModule>

 

# BEGIN WordPress

 

Natomiast plik wp-config.php rozsądnie jest przenieść do katalogu, znajdującego się jeden poziom powyżej lokalizacji zainstalowanego WordPressa i zabezpieczy uprawnieniem 400 lub 440.

 

Wyłączenie edycji plików   

Domyślnie WP umożliwia administratorom edycję plików PHP (m.in. wtyczek), co mogą dla swoich celów wykorzystać osoby atakujące platformę. Opcję tę warto więc wyłączyć poprzez umieszczenie define ( 'DISALLOW_FILE_EDIT', true); w pliku wp-config.php, co będzie równoznaczne z usunięciem 'edit_themes', 'edit_plugins' and 'edit_files'. Działanie to może zablokować niektóre ataki.

 

Wtyczki

Wtyczki mają bardzo istotny wpływ na bezpieczeństwo WP, dlatego należy je zawsze aktualizować i pobierać ze sprawdzonego źródła. W doskonały sposób uzupełniają je, instalowane na serwerze internetowym, Web Firewall. Zapora może pełnić rolę swoistego pośrednika w ruchu między Internetem i serwerem hostingowym.  Należy dokładnie sprawdzić wtyczki, które proszą o dostęp do plików oraz katalogów WP. Niektóre mogą bowiem zwiększyć negatywne skutki udanego ataku.

 

Logi i monitoring

Użyteczne dla lepszego zrozumienia, co dzieje się na stronie są tzw. logi (pliki dziennika). Dzięki nim możemy zidentyfikować rodzaj i czas dokonanego ataku oraz IP sprawcy, co jest niezwykle ważne dla prowadzonych działań śledczych. Do zarządzaniami logami warto skorzystać z narzędzia do monitorowania stanu systemów operacyjnych w sieci – OSSEC.  Pozwoli on także na lustrowanie plików, żeby jak najszybciej ostrzec o zaistniałych zmianach. Sprawnie działające monitoring i detekcja intruzów pomogą szybko zareagować w razie każdego ataku.  

 

 

 

Inne wskazówki

Do innych wskazów istotnych z perspektywy zachowania bezpieczeństwa platformy WordPress zaliczyć możemy, np.:

  • Używaj protokołów komunikacji SSH (zaszyfrowany transfer danych),
  • Skorzystaj z Limit Login Attemps, żeby określić limit nieprawidłowych logowań,
  • Nie nadawaj uprawnień 777 plikom i katalogom, a zdecyduj się na odpowiednio 644/640 i 755/750
  • Za pomocą Disable XML-RPC wyłącz natywny interfejs WordPressa XML-RPC, ponieważ może zostać wykorzystany w atakach DDoS (odmowy dostępu do usługi),
  • Zmień prefix  wp_ – instrukcja w filmiku:

 

  • Zabezpiecz katalog uploads za pomocą pliku .htaccess o następującej treści:

<Files ~ ".*..*">

Order Allow,Deny

Deny from all

</Files>

<FilesMatch ".(jpg|jpeg|jpe|gif|png|tif|tiff)">

Order Deny,Allow

Allow from all

</FilesMatch> 

 

autor:
Konrad Romanowski | specjalista ds. seo | OWL group