Nie można zaprzeczyć, że WordPress jest najpopularniejszym oprogramowaniem do zarządzania treścią stron WWW na świecie. Projekt ten napędza ponad 27% stron w Internecie, a jeśli zestawimy go z innymi systemami zarządzania treścią (CMS) to jest on użyty na 2/3 stron opartych o takie systemy.

Dla porównania drugi największy tego typu system, czyli Joomla, jest wykorzystywany przez niewiele ponad 6% serwisów opartych o CMSy. Niestety WordPress ze względu na swoją popularność stał się również obiektem zainteresowania abuserów, którzy starają się wykorzystać jego instalacje do rozsyłania SPAMu, przeprowadzania ataków DDoS i innej, szkodliwej, działalności.

Poniżej przedstawiamy kilka kroków, które należy podjąć, aby zmniejszyć ryzyko, że Twój WordPress zostanie zainfekowany.

  1. Aktualizuj WordPressa tak często jak to tylko możliwe!

    Dla wielu osób jest to oczywiste, ale równie wiele zapomina o regularnych aktualizacjach platformy. Warto przy tym pamiętać, aby przed aktualizacją zawsze tworzyć kopie zapasowe, które pozwolą na cofnięcie się do ostatniej stabilnej wersji aplikacji, gdyby coś poszło nie tak.

    Równie ważne jest aktualizowanie wtyczek doinstalowanych do WordPressa – niektóre z nich (na szczęście tylko niewielki procent) potrafią również skutecznie utrudnić tę aktualizację – dlatego należy pamiętać, aby przed decyzją o instalacji wtyczki, przetestować jej proces aktualizacji.

  2. Zabezpiecz swoją konfigurację PHP, MySQL oraz serwera WWW.

    Twój serwer WWW powinien być oczywiście aktualizowany tak często, jak to tylko możliwe, ale bardzo istotne jest też wyłączenie listowania zawartości katalogów, podążania za linkami symbolicznymi oraz ekspozycji wersji serwera HTTP dla klienta. Serwer WWW powinien też być uruchomiony z poziomu dedykowanego użytkownika, który nie współdzieli żadnych usług z systemem na którym jest uruchomiony. Zmiana czasu timeout oraz dozwolonej maksymalnej liczby połączeń pozwoli nam również zapobiec atakom DDoS.

    Kolejnym etapem jest zabezpieczenie PHP. Na samym początku przyglądamy się liście modułów PHP i wyłączamy wszystkie, których w danej chwili nie używamy. Dodatkowo blokujemy potencjalnie niebezpieczne funkcje np. magic quotes, exec, passthru, shell_exec, system oraz te, które pozwalają na include zewnętrznych, zdalnych plików. Ważne jest też zablokowanie wyświetlania błędów na ekranie użytkownika i skonfigurowanie ich logowania do pliku na serwerze. Wyświetlony błąd często może być wskazówką dla atakującego zdradzającą słabości systemu. Równie istotnym elementem jest limitowanie czasu wykonywania skryptu oraz dostępnej dla niego pamięci.

    Jeśli chodzi o serwer bazy danych MySQL, to powinien być nieosiągalny z zewnętrznych lokalizacji, nieużywane konta powinny zostać usunięte,. Dobrze jest również zmienić nazwęa użytkownika administracyjnego powinna zostać zmieniona z root na własną, aoraz wszystkie konta powinny mieć ustawione hasło. Jeżeli hasło do użytkownika administracyjnego podczas instalacji serwera MySQL zostało ujawnione to pamiętaj również o usunięciu historii poleceń z instalacji serwera MySQL.

  3. Dostęp do plików WordPressa tylko bezpiecznymi protokołami!

    Nie używaj FTP do instalacji i zmian w konfiguracji WordPressa – ten protokół może zostać łatwo podsłuchany i zmodyfikowany „w locie”. Staraj się używać SSH, do kopiowania plików używając klienta SCP/WinSCP. Bardzo dobrym pomysłem jest również ograniczenie dostępu za pomocą serwera VPN.

  4. Ogranicz dostęp do panelu administracyjnego.

    /wp-admin/ – ten element adresu zna każda osoba, która miała kiedykolwiek styczność z instalacją i konfiguracją WordPressa – od tego miejsca poszukiwania rozpoczynają również abuserzy. Postaraj się zmienić jego nazwę , na przykład korzystając z tej instrukcji. Ograniczenie dostępu tylko do zaufanych IP również pozytywnie wpłynie na bezpieczeństwo.

  5. Zabroń wykonywania plików .php w katalogu uploads/ oraz ukryj wrażliwe pliki.

    W konfiguracji serwera WWW zabroń wykonywania skryptów PHP w miejscach, w które użytkownik aplikacji może wysłać pliki (mowa tu o katalogu uploads/). Warto również zablokować dostęp do plików (lub ich odczytu), które omyłkowo mogły zostać pozostawione w katalogu WordPressa podczas prac z nim związanych przykładem mogą być pliki pasujące nazwą do: engine, inc, info, install, make, module, profile, test, po, sh, sql, theme, tpl, xtmpl, wp-config.php, wp-comments-post.php, readme.html, license.txt etc.

  6. Ogranicz możliwość linkowania obrazków z Twojego WordPressa.

    Pliki hostowane na twoim serwerze WWW generują obciążenie, które bezpośrednio przekłada się na koszty utrzymania serwisu. Zezwolenie dostępu do nich tylko z zaufanych http referers zapobiegnie hotlinkowaniu obrazków z Twojego serwisu.

  7. Staraj się usuwać nieużywane dodatki.

    Dodatki które wchodzą w skład instalacji WordPressa mogą być wektorem wykorzystanym do ataku, dlatego im mniejsza ich liczba tym mniejsze prawdopodobieństwo, że uda się wykorzystać lukę związaną z którąś z wtyczek.

  8. Zainstaluj dodatek reCAPTCHA.

    Captcha spowoduje, że ataki bruteforce staną się nieszkodliwe – boty nie będą w stanie złamać przedstawionej przez nią łamigłówki.

  9. Skasuj readme.html, license.txt oraz install.php.

    Wspomniane pliki nie są potrzebne do działania WordPressa po instalacji, a mogą być wykorzystane do pozyskania informacji na temat wersji używanego WordPressa.

  10. Stwórz puste pliki index.php oraz index.html w katalogach: wp-includes, wp-content, wp-content/plugins, wp-content/themes oraz wp-content/uploads.

    W przypadku gdy serwer WWW będzie miał uruchomione listowanie katalogów, atakujący nie zobaczy listy plików Twojej instalacji WordPressa.

Pamiętaj, że nasze 10 przykazań, to tylko podstawowe kroki, które warto wdrożyć, ale wektorów ataku może być zdecydowanie więcej. Niemniej jednak, czasami najbardziej podstawowe zabezpieczenia mogą okazać się tymi, o których zapomnimy wdrażając rozwiązania bardziej zaawansowane.

Zapraszamy do zadawania pytań pod tekstem i udostępniania tego posta znajomym, którzy mają cokolwiek do czynienia z WordPressem. Śmiało sugerujcie też inne tematy, o których powinniśmy napisać – tematykę tego posta wybrał jeden z subskrybentów naszego newslettera.

Źródło.