Bezpieczeństwo WordPress’a – jak skutecznie zabezpieczyć aplikcję WordPress-ową.

zabezpieczenie WordPress'a

WordPress jest obecnie najczęściej wykorzystywanym, ogólnodostępnym CMS-em w internecie. Jednak za swoją popularność płaci dość wysoką cenę, ponieważ jest również atrakcyjnym obiektem zainteresowań dla hakerów . Duża ilość stron i serwisów internetowych opartych o ten system blogowy sprawia, że pewien odsetek aplikacji jest źle administrowany i bardzo słabo zabezpieczony przed atakami. Oczywiście nie istnieje stuprocentowa ochrona. Zawsze będzie występowało prawdopodobieństwo ataku, jednak przy zachowaniu kilku podstawowych zasad można to prawdopodobieństwo ograniczyć. Poniżej przedstawiam najważniejsze czynności, których wykonanie znacznie podniesie poziom zabezpieczeń i ochroni Twoją aplikację przed większością ataków na strony oparte o WordPress-a. Opisane środki zapobiegawcze  zostały podzielone na podstawowe i bardziej zaawansowane. Warto poświęcić trochę czasu chociaż na skonfigurowanie podstawowej ochrony i spać spokojniej.

Zadbaj o bezpieczeństwo swojego komputera

Paradoksalnie, najsłabszym ogniwem może okazać się komputer, z którego korzystasz do co dziennie do  zarządzania stroną internetową opartą na WP. Upewnij się, że jest on wolny od wszelkiego rodzaju złośliwego oprogramowania oraz spayware’u. Zadbaj również aktualizację systemu operacyjnego i przede wszystkim przeglądarki internetowej, z której korzystasz logując się na zaplecze swojego bloga.

Poniższe zabiegi okażą się daremne jeżeli w Twoim systemie będzie zainstalowany np. keylogger, dzięki któremu haker bez trudu przechwyci twoje nowe i silne hasło. Infekcji możesz dokonać także wgrywają nieświadomie zarażone pliki na serwer przy pomocy protokołu FTP.  W związku zacznij od sprawdzenia i zabezpieczenia swojego komputera.

Aktualizuj

Podstawową czynnością, która podniesie poziom bezpieczeństwa każdej aplikacji webowej jest aktualizacja. Aktualizuj swojego bloga tak często, jak się tylko da (przy regularnych wizytach na zapleczu strony nie będzie z tym problemu). Dotyczy to zarówno całego systemu, jak również wtyczek oraz zainstalowanych szablonów. Dzięki doświadczonemu zespołowi programistów, który na bieżąco rozwiązuje wszystkie zgłoszone problemy z oprogramowaniem, możemy liczyć na dość szybkie „załatanie” dziur w kolejnej aktualizacji. Gdy tylko pojawi się taka możliwość – aktualizuj.  Niech praca programistów nie idzie na marne.

Ustaw silne hasło administratora

Kolejną elementarną rzeczą jest zabezpieczenie aplikacji silnym hasłem. Wszystkie czynności mogą pójść na marne, w przypadku kiedy mamy słabe (słownikowe) hasło do panelu zarządzania stroną. Najlepszą praktyką będzie zmiana hasła na losowy ciąg znaków zawierający oprócz znaków alfanumerycznych również znaki specjalne takie jak ‚@’ czy na przykład ‚%’. Oczywiście zapamiętanie takiego hasła to nie lada wyzwanie. Łatwiejsze od zapamiętania i równie bezpieczne będzie hasło przypominające zdanie. Dla utrudnienia warto dołożyć do niego również znaki niealfanumeryczne, żeby wyglądało na przykład tak: „#Ala3Ma@1Kota”. Siła tak utworzonego hasła jest znacznie większa.

Nie używaj „admin” jako nazwy administratora

Koniecznie zmień domyślny login administratora systemu. Żeby dostać się do zaplecza strony atakujący potrzebował będzie zarówno hasła jak i poprawnego loginu użytkownika posiadającego prawa administratora. Nie ułatwiaj mu zadania. Warto zastanowić się i  wybrać nazwę mniej pospolitą, nie kojarzącą się bezpośrednio z funkcją jaką będzie pełnił ten użytkownik w systemie.

Nie używaj konta administratora do publikacji postów

Zmiana loginu nie przyda się na nic jeżeli opublikujesz post czy medium z użyciem konta administratora. Atakujący z łatwością znajdzie poszukiwaną nazwę użytkownika w metadanych pod nazwą wpisu (niektóre szablony umożliwiają wyłączenie wyświetlania tego rodzaju informacji). Najlepszym rozwiązaniem jest stworzenie konta o niższych uprawnieniach, które będzie wykorzystywane tylko do publikacji treści na blogu. WordPress umożliwia również hurtową zmianę autora postów, która w tym przypadku wydaje się bardzo pomocna.

Ogranicz liczbę prób logowania

Tym prostym zabiegiem zabezpieczysz swojego WordPress’a przed próbą złamania hasła do panelu CMS. System nie posiada takiej opcji w ustawianiach, ale do tego celu możemy posłużyć się którąś z darmowych wtyczek. Zazwyczaj mamy możliwość ustawienia po ilu próbach możliwość logowania ma zostać wyłączona oraz opóźnienie czasowe, po którym logowanie zostanie ponownie odblokowane. Do tego celu polecam wtyczkę Limit Login Attempts autorstwa Johana Eenfeldta.

Zmień prawa dostępu do katalogów

System WordPress korzysta w różnych plików, większość z nich, to pliki wykonywalne, ale istnieją również pliki konfiguracyjne oraz katalog gdzie użytkownicy mogą uploadować swoje pliki. Tak więc nie możemy ustawić wszystkim plikom i katalogom w drzewie aplikacji takich samych uprawnień. Dobrą praktyką będzie nadanie jak najbardziej restrykcyjnych uprawnień tam gdzie tylko istnieje taka możliwość.

Oto schemat uprawnień katalogów zalecany przez twórców aplikacji:

/ 
Katalog główny aplikacji: wszystkie pliki powinny mieć ustawione prawo do modyfikacji tyko przez właściciela pliku – 644
/wp-admin/
Katalog przechowuje cześć administracyjną aplikacji: prawo do modyfikacji tyko przez właściciela pliku – 644
/wp-includes/
Biblioteki WP: prawa dostępu – 644
/wp-content/
Katalog przechowuje dane, które mogą być modyfikowane w zależności konfiguracji bloga.

W tym folderze znajdziemy:

/wp-content/themes/ 
Pliki szablonów WP. W zależności projektantów szablonów uprawnienia dla poszczególnych plików mogą się różnic, jednak zaleca się uprawnienia 644 dla wszystkich plików wykonywalnych.
/wp-content/plugins/ 
Wtyczki. Sytuacja wygląda tutaj analogicznie jak w przypadku szablonów.

Dla samych katalogów uprawnienia powinny mieć wartość 755.

Zabezpiecz katalog /wp-admin/

Dobrym rozwiązaniem może okazać się również dodatkowe zabezpieczenie katalogu /wp-admin/.  W katalogu tym znajdują się wszystkie pliki odpowiedzialne za zaplecze administracyjne bloga. W śród nich na uwagę zasługuje przede wszystkim wp-login.php, który, jak łatwo się domyślić jest opowiedziany za logowanie użytkowników w systemie. Osoba, próbująca uzyskać dostęp do aplikacji będzie najprawdopodobniej przesyłała do serwera zapytania dotyczące właśnie tego pliku. Jeżeli nie zarządzasz aplikacją WP, która musi umożliwiać logowanie się wielu użytkownikom, możesz zablokować dostępu do katalogu z innych, niż wybrany adres IP. Najlepiej stworzyć odpowidnią regułę w pliku .htaccess, która będzie wyglądała w następujący sposób:

<Files wp-login.php>
order deny,allow
Deny from all
Allow from xxx.xxx.xxx.xxx
</Files>

gdzie xxx.xxx.xxx.xxx, to adres IP komputera, z którego logujesz się na zaplecze swojego WordPress’a.

W przypadku kiedy musisz umożliwić logowanie do panelu wielu użytkownikom, innym równie skutecznym rozwiązaniem może okazać się zabezpieczenie dostępu do katalogu /wp-admin/ dodatkowym hasłem. Żeby utworzyć hasło w katalogu, który masz zamiar zabezpieczyć umieść plik .htaccess zawierający:

AuthType Basic
AuthName „Podaj dodatkowe hasło do panelu CMS”
AuthUserFile /ścieżka-pliku-na-serwerze/.htpasswd
Require valid-user

Dodatkowo należy utworzyć plik .htpasswd, który przechowywał będzie login i hasło w formie zahaszowanej. To jest na przykład:

Jan:WvzodahMR9USk

Do utworzenia wpisu w .htpasswd najwygodniej użyć generatora.

Pliki powinny znajdować się  w katalogach, które nie są ogólnodostępne i  mieć ustawione odpowiednie prawa.

Zadbaj o bezpieczeństwo serwera

Jeżeli korzystasz konta hostingowego (zbiorczy serwer), to niestety musisz liczyć na profesjonalizm osób nim administrujących. Przed zakupem usługi warto poczytać opinie i sprawdzić szczegóły oferty. Na szczęście większość dostawców usług hostingowych oferuje dodatkowe opcje takie jak dostęp przez szyfrowane połączanie SSH, automatyczne kopie zapasowe i aktualizacje, czy dostęp do logów. Ważnym elementem może okazać się również możliwość kontaktu z administratorem, który może pomóc w kryzysowej sytuacji. Dodatkowo sprawdź czy serwer współdzielony obsługuje najnowszą wersję PHP i MySql.

Korzystaj z bezpiecznego połączania sieciowego

Łącząc się z zapleczem swojej strony bądź przesyłając pliki na serwer przy użyciu protokołu FTP zwróć uwagę na sieć, z której korzystasz. Bezpieczeństwo połączania musi być zapewnione nie tylko na serwerze, gdzie stoi strona, ale również na wszystkich węzłach pośredniczących w tym połączeniu. Niestety ciężko zadbać o takie bezpieczeństwo w praktyce. Na szczęście jest kilka zasad, które pomogą Ci zmaksymalizować:

– korzystaj z połączeń, które uważasz z zaufane i odpowiednio zabezpieczone ( domowy ISP, sieć w pracy, na uczelni)

– jeżeli musisz skorzystać z połączenia z publicznej sieci (na przykład w kawiarni czy restauracji) skonfiguruj połączenie za pomocą VPN-a. Dzięki tunelowaniu i szyfrowaniu danych wykluczysz możliwość ataku typu Man-in-the-middle i utraty wrażliwych danych (np. loginu i hasła).

Inne sposoby

Oczywiście, podane tutaj sposoby pewnie nie wyczerpują tematu. W związku z tym faktem, jeżeli znasz jakiś inny, dobry sposób na zabezpieczenie WP (lub ogólnie aplikacji webowej) – zapraszam do podzielenia się tą wiedzą w komentarzach pod postem.

 

10 komentarzy do “Bezpieczeństwo WordPress’a – jak skutecznie zabezpieczyć aplikcję WordPress-ową.

  1. Polecam jeszcze dodatkową ochronę konta Rublon: https://wordpress.org/plugins/rublon/

    Wtyczka zabezpiecza na wypadek wykradzenia lub odgadnięcia hasła. Po zastosowaniu Rublona hasło nie musi być już tak silne; nazwę „admin” można śmiało zostawić.

    Zalety:
    – działa od razu po aktywacji wtyczki
    – nie wymaga konfiguracji
    – tak prosty, że szkolenie użytkowników jest niepotrzebne

  2. Jeszcze nie tak dawno nie interesowałem się tematem bezpieczeństwa stron – drogo mnie to kosztowało. Teraz pogłębiam swoją wiedzę takimi wpisami jak ten. Dzięki!

  3. Niesamowicie ważna sprawa, aby po stworzeniu strony zadbać o jej bezpieczeństwo. Bardzo ciekawa rada dotycząca publikacji wpisów z innego konta niż administrator. Może jakieś info dotyczące ukrywania w kodzie strony wersji WP?

    1. Zgadzam się. Warto poświęcić te kilkanaście minut więcej i zapewnić sobie spokojny sen w przyszłości. Oczywiście o bezpieczeństwie stron internetowych można by spokojnie napisać nie jedną książkę, dla tego nie poruszyłem tutaj wszystkich aspektów, tylko te moim zdaniem najważniejsze. Dzięki za opinię.

      BTW: Wersję ze swojego WP usuniesz wklejając w functions.php poniższy kod:


      function sd_remove_version() {
      return '';
      }
      add_filter('the_generator', 'sd_remove_version');

      Mam nadzieję, że pomogłem 😉

  4. Jasne 🙂 Dziękuję za kod 🙂 Wyczytałam jednak, że wersję WP można sprawdzić na kilka sposóbów, zatem czy jest sens ukrywać tę informację tworzoną przez znacznik „generator”?

    1. Cieszę się, że w jakimś stopniu mogłem pomóc 😉 Sens będzie to miało kiedy usuniemy możliwie jak najwięcej informacji, np. plik readme.html itp. Miej jednak na uwadze, że tego typu działania to doraźna ochrona przed automatami i ewentualnie script kiddies 😉

      Może zatem lepiej zaktualizować WP do najnowszej wersji i pochwalić się, że strona nie jest już podatna na ataki? 🙂

      Myślę, że to dobry temat na osobny artykuł.

  5. Dziękuję za ratunek. Blogi prowadzę hobbystycznie od dawna, aż tu nagle przekierowanie na strony XXX ! albo inne spamerskie serwisy.
    Dopiero teraz zdaję sobię sprawę jak istotne jest bezpieczeństwo, dopóki nic się nie dzieje to najczęściej mało interesująca teoria.
    Dzieki!

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *