Bezpieczeństwo w systemie WordPress


21 lutego 2013 / Karol Trybulski


Niestety, ale tak długo jak nasza strona internetowa jest online, tak długo jesteśmy narażeni na atak wymierzony właśnie w nią. Nie istnieją systemy CMS, bazy danych ani skrypty w 100% odporne na nie. Nie stworzono również żadnych systemów, które pozwalają w pełni zabezpieczyć naszą witrynę. Mimo tego możemy postarać się zmniejszyć ryzyko i zwiększyć jej bezpieczeństwo. Poniższy wpis dotyczy bezpieczeństwa na systemie CMS WordPress, który jest obecnie (prawdopodobnie) najpopularniejszym CMS-em w sieci.

Backup

Najlepsza forma zabezpieczenia swojej strony to jej kopia bezpieczeństwa. Wielu z nas jej nie realizuje, pomimo tego, że posiada taką możliwość. Jeżeli jesteśmy leniwi, a danych naszego bloga nie liczy się w dziesiątkach gigabajtów danych, polecam zastosować plugin WordPress Backup to Dropbox. Pozwala on na automatyczne wykonywanie kopii bezpieczeństwa wszystkich plików oraz oczywiście bazy danych wprost do naszego konta na DropBox. Konfiguracja jest prosta, a dalej plugin robi kopie sam, w regularnych, ustalonych przez nas odstępach czasu.

Trochę oklepanych podstaw

Aktualizacje

Niestety na aktualizacje jesteśmy niejako skazani. Przy małych blogach nie ma to zbyt dużego znaczenia i aktualizacje przebiegają spokojnie. Wiem, że dla administratorów większych stron, gdzie ilość zainstalowanych wtyczek sięga dużo ponad 20, stają się męczące. Niestety developerzy „addonów” nie oszczędzają administratorów. Dlaczego aktualizacje są konieczne? Podobno zwiększają bezpieczeństwo, ale niestety większa część developerów chwali się przy okazji nowego wydania, gdzie dotąd znajdowała się luka. Wszyscy, którzy do tej pory o niej nie wiedzą, mają ją podaną i to dodatkowo informacja jest opublikowana na stronie autora wtyczki. Niewykonanie aktualizacji wiąże się z utrzymaniem oczywistej luki w systemie naszego CMS.

Rozważne stosowanie wtyczek

Wtyczki warto pobierać z repozytorium. Te pochodzące z for ze zmianami i innymi dodatkami bardzo często tworzą lukę pozwalającą na dostęp do naszego serwera.

Hasła

Warto zmienić nazwę użytkownika z klasycznego admina na inną. Dobrze jest również zmienić prefiks tabel podczas instalacji na inny oraz stosować 8 znakowe hasło z jednym albo dwoma znakami specjalnymi oraz małą i dużą literą. W sieci znajdziemy dziesiątki porad, jak dokonać powyższych zmian również po instalacji wordpress-a.

Użytkownicy

Jeżeli nie musimy rejestrować nowych użytkowników, nie róbmy tego. Wręcz wyłączmy tę opcję. Nie da się ukryć, że najlepiej jest to uniemożliwić poprzez wykasowanie plików odpowiedzialnych za proces rejestracji, dopiero wtedy jest ona naprawdę wyłączona.

Bezpieczeństwo serwera

Hasło do serwa powinno być dość długie tak samo jak do baz danych i wszelkich innych usług związanych z stroną. Minimum to 12 znaków ze znakami specjalnymi, dużymi oraz małymi literami.

Wtyczki, czyli największe dobro

W dużej mierze potęga CMS WP to właśnie wtyczki. Pośród tych, które pomogą zwiększyć bezpieczeństwo naszego CMS-a warto zainstalować (darmowe):

  • Limit Login Attempts (wtyczka wymieniona poniżej ma podobną funkcję, jednak lepiej używać ich razem)
  • Wordfence Security (prawdziwe dobro, którego nie może zabraknąć na naszym WordPressie, jednak wymaga konfiguracji)
  • Secure WordPress (tylko od WebsiteDefender po instalacji, czasem widoczna jako „Zabezpiecz WordPress”, wymaga konfiguracji)
  • W3 Total Cache (to również bezpieczeństwo, ale o tym dalej; wymaga konfiguracji)

W3 Total Cache to wtyczka, która nie tylko pomoże nam zmniejszyć obciążenie baz danych oraz serwera poprzez cachowanie strony, ale również dzięki darmowej (dla jednej witryny) usłudze cloudflare. Podłączenie jej za pomocą wtyczki nie zajmie nam zbyt wiele czasu, a pozwala znacznie przefiltrować ruch, który kierujemy na naszą witrynę.

WP htaccess Control – wtyczka, która również wymaga konfiguracji. Pozwoli nam na dodatkową kontrolę pliku htaccess, dzięki niej możemy chronić dodatkowo takie pliki jak wp-config.php, comments.php oraz oczywiście  htaccess.

Prawdziwa zabawa

Niestety tak właściwie sami również musimy zajrzeć do naszego WordPress-a i poświęcić klika chwil na wprowadzenie chociaż kilku zmian. Poniżej najważniejsze z nich, z którymi mimo wszystko każdy powinien dać sobie radę.

Dodajmy do naszego pliku motywu functions.php następujące linijki:

Wyłączamy możliwość edycji plików naszego motywu z poziomu WordPress-a:

define(’DISALLOW_FILE_EDIT’, true);

Przestańmy zwracać wersję WordPress-a, którą posiadamy

function remove_version()

{return ”;}

add_filter(’the_generator’, 'remove_version’);

Nastomiast do wp-config:

Wyłączamy powiadomienie o errorach PHP:

@ini_set(’display_errors’,’Off’);

@ini_set(’error_reporting’,0);

Wyłaczmy debug mode zamieniając tę linijkę:

define(’WP_DEBUG’, true);

na taką:

define(’WP_DEBUG’, false);

Po tym zabiegu (jak i każdym innym) sprawdźmy, czy nasz wordpress i przede wszystkim wtyczki działają poprawnie. Czasem wymagane jest ich ponowne uruchomienie.

To samo możemy zrobić dla JavaScript:

define(’SCRIPT_DEBUG’, false);

Wyłaczmy powiadomienia o błędach PHP:

error_reporting(0);

@ini_set(‘display_errors’, 0);

Pamiętaj tylko, że je wyłączyłeś.

Projekt w skali Enterprises

Masz gigantyczny projekt? Nie zapomnij, że możesz być najsłabszym ogniwem w jego bezpieczeństwie. Uważaj komu wysyłasz hasła dostępu, zabezpiecz pocztę oraz swój komputer. Zapisz hasła nie na komputerze, a na kartce i trzymaj je głęboko w szufladzie. Uważaj na programy uruchamiane w tle oraz na swoich współpracowników. Twórz kopie bezpieczeństwa za pomocą zewnętrznych serwisów, sprawdź dobrze parametry hostingu.

Wszelkie powyższe uwagi zostały przetestowane razem wielokrotnie i działają. Na pewno jest wiele szkół, jeżeli chodzi o dbałość o bezpieczeństwo witryny. Pozwalają one zmniejszyć ryzyko uszkodzenia naszej witryny i jej zawartości, a jeżeli coś się nie udało zawsze pozostaje backup.

Szukaj autora na Google+.



9 odpowiedzi na “Bezpieczeństwo w systemie WordPress”

  1. Artur Pięciak pisze:

    Całkiem ciekawey artykuł ;) Jak tylko śniegi stopnieją trzeba będzie wprowadzić część zmian :) Fajna opcja z backupem + dropbox :)

  2. Kacper Suliński pisze:

    „Nie zapomnij, że możesz być najsłabszym ogniwem w jego bezpieczeństwie.” Moim skromnym zdaniem zawsze jesteś najsłabszym ogniwem. Dodałbym jeszcze jedną rzecz, pomimo zabezpieczenia poczty lub komputera, trzeba zacząć myśleć i nie polegać na programach zabezpieczających ale również na własnym rozumie, tzn. nie wiesz czy coś jest bezpieczne to nie uruchamiaj tego. Programy antywirusowe są tak samo zawodne jak my a nawet i gorzej, w niepewnym pliku może być pełno wirusów które udostępniają klucz do naszej furtki bezpieczeństwa.

  3. Karol pisze:

    Taki mały update gdyby ktoś miał większy portal (np. mamy ponad 2 GB samych plików, a jeszcze przecież baza danych to można zastosować BackWPup, również posiada opcję DropBox, ale ona działa bez problemowo dla większych portali.

    Dodatkowo uważajcie na transfer ustawiając te opcje :)

    • DMati pisze:

      Z obserwacji i szybkich testów, BackWPup spisuje się rewelacyjnie ale do lokalnych kopii, w przypadku wysyłki do DropBoxa ma problemy – nie pełny, przerwany upload lub zapętlony proces uploadu. Z wysyłką do Google Drive’a nie lepiej.

      Jeżeli już chcemy kopię w chmurze DropBoxa to lepiej spisuje się wtyczka WordPress to Dropbox, choć niekiedy ma też problemy ;)

      • Karol pisze:

        w sumie może być , u mnie póki co bez zarzutu, wszystko działa jak powinno, sprawdziłem też logi sprzed tygodnia na blogach, też bez problemu, a znowu sprawiała problemy WordPress to Dropbox, trzeba widocznie testować. Ale dzięki za informację :)

  4. DMati pisze:

    W3TC nie zabezpiecza witryny, a jedynie umożliwia podpięcie CloudFlare zamiast instalacji osobnej wtyczki do niego, głównie aby poprawnie IP były identyfikowane.

    Zaś CloudFlare z planem Free nie ma ograniczenia co do ilości podpiętych witryn a jedynie ograniczenia co do możliwości, dopiero plan Biznes chroni naszą witrynę przed botami, XSS, DDos etc. W wersji darmowej ochroni naszą domenę przed podmianą DNS czy zablokujemy ruch z danego kraju czy pojedynczego IP. Reszta opisanych tam opcji jak walka ze spamem w komentarzach czy ochrona treści to już robią połączone z CF w większości płatne appki.
    =========
    Warto też zerknąć na 5G Blacklist i dodać do htaccess jeżeli żadnej wtyczki do blokady „fajnych urli” nie posiadamy ;)

    • karol pisze:

      zakładkę Security widać i dla dlarmowego i wcale nie jest tak biednie. Wszlka obrona przed przeciążeniem serwera (jak np. zjedzenie całego procesora na miesiąc w jeden wieczór).

      Co prawda odstaje od innych ten punkt, ale każdy wie o co chodzi. Dodatkowo po zalogowaniu cloudflare.com/threat-control też możemy dodać :)

      Tak przed XSS i DDos nie chroni, niestety :(

  5. martins pisze:

    Wtyczki i aktualizacje. Tak … to jest to co webmasterzy w WordPressie lubią najbardziej :)

  6. PROInformatics.pl pisze:

    Na bazie tego artykułu, na potrzeby swojego serwera zawierającego kilkanaście serwisów na WordPressie, napisałem skrypt wprowadzający ww. zmiany. Jeszcze tylko odpowiedni wpis do crona i żadna aktualizacja WP mi nie straszna ;-P

Skomentuj DMati Anuluj pisanie odpowiedzi

Twój adres e-mail nie zostanie opublikowany.