Bezpieczeństwo od podstaw na przykładzie WordPressa

Twórcy CMS typu WordPress dbają o to, aby ich oprogramowanie było jak najbardziej odporne na najnowsze metody ataków, jednak nie wszystko pozostaje w rękach programistów skryptu. Administratorzy i użytkownicy również muszą odpowiednio zadbać o bezpieczeństwo swojej strony. O czym warto pamiętać? Jakie praktyki stosować?

Zabezpieczanie strony od podstaw

Pomimo tego, że WordPress jest dobrze zabezpieczonym systemem CMS, a częste aktualizacje łatają wszelkie potencjalne luki, wciąż istnieje ryzyko włamania czy utraty danych, gdy z naszej strony nie zostaną podjęte odpowiednie praktyki. Wielokrotnie spotykamy się ze zdaniem, że nasza strona musi być dobrze zabezpieczona np. przed atakami hakerów. Powtarza się nam, że musimy koniecznie zadbać o bezpieczeństwo naszej strony. Początkujący użytkownicy nie zawsze jednak wiedzą, czym właściwie to bezpieczeństwo jest – co zrobić, aby je sobie zapewnić, a także jak o nie potem zadbać.

W tym artykule postaramy się przybliżyć różne aspekty zabezpieczania strony na WordPressie. Pamiętajmy jednak o tym, że problematyka bezpieczeństwa jest niezwykle rozległa i o każdym elemencie można by napisać osobny artykuł. Nie jest to krótki przewodnik typu „jak to zrobić”, który pokaże, jak za pomocą jednej opcji zrobić z naszej strony fort nie do zdobycia. Skupimy się raczej na tym, aby wyjaśnić problematykę bezpieczeństwa i nakreślić ogólne praktyki, które są niezbędne do utrzymania dobrego poziomu zabezpieczeń.

Co wpływa na bezpieczeństwo strony?

Nie ma czegoś takiego jak perfekcyjnie zabezpieczony system CMS czy skrypt. Każda aplikacja posiada pewną lukę, którą zawsze można wykorzystać. Zamiast patrzeć pod kątem całkowitej eliminacji ryzyka zdecydowanie lepiej jest rozpatrywać problematykę bezpieczeństwa pod kątem jego minimalizacji. Chodzi o to, aby wykorzystać wszelkie możliwe formy zabezpieczeń i kontroli (w ramach zdrowego rozsądku), by zredukować szanse na stanie się celem ataków hakerskich. Będąc odpowiednio przygotowanym zmniejszymy także ryzyko utraty naszych danych (a nawet całej strony) w przypadku problemów technicznych np. z hostingiem.

Na bezpieczeństwo strony ma wpływ wiele czynników, ale zanim przejdziemy do szczegółów, warto dokonać pewnego ogólnego podziału. Bezpieczeństwo naszej witryny zależeć będzie od dwóch głównych elementów – od hostingu, na którym utrzymujemy stronę, a także od aplikacji internetowej, z której korzystamy (i sposób, w jaki to robimy).

  • Hosting

Wybór hostingu jest niezwykle istotny. To w końcu miejsce, w którym utrzymywane są wszystkie nasze pliki oraz dane strony, a także powiązane z nią np. bazy klientów czy zamówień ze sklepu internetowego. Możemy mieć dobrze zabezpieczoną stronę, ale jeśli nasz hostingodawca nie przykłada dużej wagi do bezpieczeństwa, to może dojść do bardzo przykrych sytuacji (np. utrata danych w wyniku awarii i brak kopii zapasowych). Z drugiej strony zapewnienie bezpieczeństwa nie powinno także leżeć po samej stronie hostingodawcy – dobrze wiedzieć, gdzie kończy się odpowiedzialność usługodawcy, a gdzie zaczyna się nasza osobista. Bezpieczny serwer gwarantuje jednak zachowanie prywatności, integralności danych oraz zapewnia odpowiednią infrastrukturę.

Podczas wyboru hostingu powinniśmy zwrócić uwagę na kilka elementów. Oprócz rzeczy oczywistych, takich jak wymagania techniczne do uruchomienia pożądanych przez nas aplikacji internetowych oraz skryptów, warto szukać u hostingodawcy następujących cech:

  1. Otwarcie i czytelnie informuje użytkownika o formach zabezpieczenia danych (np. o tworzonych kopiach zapasowych), a także o wszystkich funkcjach, które są dla użytkownika dostępne
  2. Odpowiada na wszelkie pytania klienta dot. bezpieczeństwa i służy pomocą w razie problemów
  3. Dba o to, aby oprogramowanie serwerowe było zawsze stabilne i uaktualnione do najnowszej wersji

Taki hosting znajduje się w naszej ofercie. Chroni on przed najpopularniejszymi atakami DDoS oraz gwarantuje 14 dniowe kopie zapasowe plików.

hosting

  • Aplikacja internetowa i nasza interakcja z nią

Zawsze łatwo zrzucić całą winę na nasz hosting i żądać pomocy lub zwrotów finansowych za ewentualne problemy. Trzeba jednak dobrze pamiętać, gdzie kończą się obowiązki usługodawcy, a gdzie zaczynają się nasze. Nasza aplikacja internetowa (w tym wypadku strona na WordPressie lub sklep na WooCommerce) również musi spełniać odpowiednie standardy bezpieczeństwa, na które my mamy bezpośredni wpływ. Kiedy strony zostają zhakowane, to rzadko kiedy jest to wina naszego hostingu – w większości wypadków wina leży po stronie klienta / niedoświadczonego administratora strony.

Jest kilka punktów, o których więcej napiszemy poniżej. Na bezpieczeństwo WordPressa wpływają jednak aspekty związane z naszą stroną bezpośrednio oraz pośrednio. Do bezpośrednich elementów należy zaliczyć nasze administrowanie stroną – dokonywanie aktualizacji (lub nie) czy też instalowanie i używanie wtyczek oraz szablonów, które mogą być jednak niezweryfikowane. Z kolei aspekty pośrednie to takie jak np. bezpieczeństwo naszego komputera, z którego logujemy się do panelu administracyjnego – niedopilnowanie tej kwestii może się skończyć tym, że zostaniemy zainfekowani wirusem typu keylogger, który rezyduje w naszym systemie i wykrada hasła dostępowe poprzez rejestrowanie wszystkiego, co wpisujemy na klawiaturze. W tym wypadku odpowiedzialność za naszą stroną spada w całości na nas.

Ogólne praktyki związane z bezpieczeństwem strony

Jeśli zależy nam na bezpieczeństwie, to powinniśmy pamiętać o kilku podstawowych praktykach.

Ograniczanie dostępu – zawsze podejmuj mądre decyzje, które zredukują ilość potencjalnych furtek, przez które atakujący może się dostać do twojej strony. Weźmy na przykład różne formy logowania się do panelu administratora. Domyślnie do panelu WordPressa lub innego CMS możemy zalogować się z poziomu przeglądarki internetowej. Wiele osób przy logowaniu aktywuje jednak funkcję zapamiętywania haseł, przez co przeglądarka automatycznie uzupełnia pole z nazwą użytkownika i hasłem – w przypadku kradzieży laptopa może to spowodować, że złodziej uzyska także dostęp do naszej strony, gdyż przeglądarka automatycznie go zaloguje.

Bezpieczeństwo danych – nasza strona powinna być skonfigurowana w taki sposób, aby w przypadku włamania i utraty danych zminimalizować straty. Mowa tu oczywiście o kopiach zapasowych. Powinny być robione często (najlepiej automatycznie) i przechowywane poza serwerem FTP (np. na naszym komputerze lub na zewnętrznych nośnikach) w zaszyfrowanej hasłem formie. Dzięki temu nawet jeśli dojdzie do awarii po stronie hostingodawcy (lub gdy ktoś włamie się na stronę i usunie nasze dane), to zawsze będziemy mieć pod ręką kopię zapasową, z której przywrócimy naszą stronę. Kopia powinna zawierać zarówno pliki z serwera FTP, jak również zrzut bazy danych MySQL. Do WordPressa można zainstalować wtyczki, które automatycznie tworzą kopię zapasową plików strony oraz bazy danych MySQL w wybranym miejscu. Taką kopię najlepiej od razu skopiować z serwera i zachować w bezpiecznym miejscu.

Zaufane źródła – pobieraj oprogramowanie tylko i wyłącznie z zaufanych źródeł. Praktyka ta ma zastosowanie zarówno w odniesieniu do komputera jak i do CMS’ów typu WordPress, do których znajdziemy setki wtyczek oraz motywów. Dodatki oraz szablony powinniśmy instalować tylko z oficjalnego repozytorium WordPressa, a także uważać na ich poziom uprawnień. Z kolei programy na komputerze również powinny być pobierane tylko z oficjalnych stron, aby zmniejszyć ryzyko instalacji szkodliwego oprogramowania typu keylogger.

Zabezpiecz komputer, którego używasz do zarządzania WordPressem

Oczywiście komputer, z poziomu którego zarządzamy stroną powinien być wyposażony w oprogramowanie antywirusowe i narzędzia doraźne do usuwania złośliwego oprogramowania (np. MalwareBytes AntiMalware). Upewnij się, że w twoim komputerze nie ma szkodliwego oprogramowania, gdy logujesz się za jego pomocą na serwer FTP, do bazy MySQL przez phpMyAdmin lub do panelu administracyjnego WordPressa. Wspomniane wcześniej keyloggery mogą wykradać hasła i przesyłać je do osób trzecich, co grozi włamaniem i wyciekiem zarówno danych prywatnych jak i danych klientów (np. gdy prowadzimy sklep internetowy).

Zawsze aktualizuj system do najnowszej wersji, a także upewnij się, że masz zainstalowane oprogramowanie antywirusowe. Okresowo sprawdzaj zawartość komputera za pomocą programów do likwidowania złośliwego oprogramowania. Oprócz tego upewnij się, że twoje hasła dostępowe nie są zapisane w formie jakichkolwiek plików (np. notatek tekstowych) na komputerze. Odradzamy także wspomniane zapamiętywanie hasła do WordPressa w przeglądarce internetowej – takie dane dość łatwo odczytać, a w przypadku kradzieży laptopa mogą wpaść w niepowołane ręce.

Aktualizuj WordPressa

Zawsze utrzymuj WordPressa w najnowszej wersji – twórcy cały czas wydają nowsze wersje i pomniejsze aktualizacje, które łatają wszelkie możliwe dziury w oprogramowaniu i zamykają potencjalne furtki dla internetowych włamywaczy. Aktualizacje WordPressa można wykonywać łatwo i w porównaniu do innych systemów CMS są one w dużej mierze bezkonfliktowe. Dzięki temu, że wydawane są mniejsze łatki mamy zawsze pewność, że nasza strona jest stale bezpieczna i na bieżąco uaktualniania o najnowsze formy zabezpieczeń. Pozostawienie WordPressa na starej wersji i ignorowanie aktualizacji znacząco obniża poziom zabezpieczeń naszej strony. Wszelkie „dziury” w oprogramowaniu szybko rozchodzą się w sieci, przez co strony pozostawione na starej wersji WordPressa są podatne na ataki.

Aktualizacji powinniśmy dokonywać nie tylko na samym WordPressie, ale także na zainstalowanych wtyczkach oraz szablonach. Wszystko to wykonamy bezpośrednio z poziomu panelu administracyjnego – wystarczy z paska bocznego wybrać opcję „Kokpit > Aktualizacje”, aby wyświetlić naszą aktualną wersję strony, a także sprawdzić i pobrać dostępne uaktualnienia. Proces ten nie wymaga od użytkownika jakichkolwiek zdolności programistycznych – aktualizacja pobiera i instaluje się automatycznie i niczym nie różni się to od uaktualniania systemu przez Windows Update czy aplikacji w Androidzie za pomocą Sklepu Play.

Uwaga! O ile aktualizacje WordPressa są bezpieczne i łatwe w wykonaniu, o tyle trzeba pamiętać, że zawsze istnieje niewielki procent ryzyka, że coś pójdzie nie tak. Przykładowo, jeśli używamy bardzo starego szablonu strony, który nie był aktualizowany, to uaktualnienie starej witryny do najnowszej wersji WordPressa może spowodować błędy w wyświetlaniu całej strony (może też przestać w ogóle się wyświetlać i zamiast tego zobaczymy białą stronę). Zawsze przed większymi aktualizacjami należy wykonać kopię zapasową strony.

Instaluj tylko zweryfikowane wtyczki i szablony

Wtyczki do WordPressa rozszerzają funkcjonalność strony i wykonują konkretne operacje na naszej stronie. Należy pamiętać, aby pobierać je tylko i wyłącznie z zaufanych źródeł – oficjalne repozytorium wtyczek WordPressa dostępne jest na oficjalnej stronie WordPress.org. Znajdziemy tam także mnóstwo darmowych oraz płatnych szablonów. Wtyczki i szablony możemy stamtąd pobierać ręcznie lub bezpośrednio z panelu administratora WordPressa (Wtyczki > Dodaj nową / Wygląd > Motywy > Dodaj nowy).

Zainstalowanie dodatku ze strony niewiadomego pochodzenia może poważnie narazić naszą stronę na niebezpieczeństwo. Jeśli musimy pobrać szablon lub wtyczkę z nieoficjalnych źródeł, to starajmy się upewnić, że cieszy się ona zaufaniem użytkowników i ma pozytywne opinie.

Wykonuj samodzielne kopie zapasowe

Nasz hostingodawca powinien zabezpieczać swoje serwery i utrzymywane tam dane, aby w razie awarii móc przywrócić strony użytkowników. Pomimo tego zawsze powinniśmy mieć przynajmniej jedną kopię zapasową z ostatniego miesiąca lub dwóch, aby w razie poważniejszej awarii móc samodzielnie przywrócić stronę. Jeśli nie posiadamy własnej kopii zapasowej, a serwery hostingowe zostaną trwale uszkodzone wraz z kopiami zapasowymi, to nasza strona po prostu bezpowrotnie zniknie z sieci, o czym przekonali się użytkownicy jednej z polskich firm, która padła ofiarą ataku hakerskiego. Zabezpiecz się zawczasu przed takim scenariuszem!

Samodzielne wykonywanie kopii zapasowej wcale nie jest takie trudne. W przypadku bazy danych usługodawcy często oferują proste sposoby tworzenia backupów – wystarczy wejść w opcję edycji bazy danej w panelu klienta, a następnie wybrać opcję kopii zapasowej. Jeśli takiej funkcji nie znajdziemy, to kopie możemy też wykonać za pomocą panelu phpMyAdmin (zarządzanie bazami danych MySQL). Istnieją także wtyczki do WordPressa, które pozwalają zgrywać bazę danych np. w celu migracji – zobacz wtyczkę Duplicator.

W przypadku samej instalacji WordPressa i danych na serwerze FTP jest podobnie – warto po prostu raz na jakiś czas zalogować się do swojego serwera za pomocą dowolnego klienta FTP i wykonać kopię zapasową plików.

Alternatywnie możemy też skorzystać z wtyczki do WordPressa, która umożliwia wykonywanie automatycznych kopii zapasowych w określonych odstępach czasu, a także zapisywanie ich w chmurze (np. na naszym koncie Dropbox). Do grona takich wtyczek możemy zaliczyć np. BackWPup lub BackUpWordPress. Pamiętaj – samodzielna kopia zapasowa pozwala uniezależnić się użytkownikowi od swojego hostingu w fundamentalnej kwestii bezpieczeństwa.

Nie ustawiaj oczywistej nazwy użytkownika

Wiele osób ustawia bardzo łatwy login, który wykorzystujemy do panelu administracyjnego. Większość używa standardowych loginów typu admin czy administrator. To niezbyt dobra metoda, gdyż bardzo łatwo to odgadnąć i zostanie już tylko hasło do złamania. Najlepiej ustawić coś zupełnie innego (losowy ciąg znaków lub jakiś pseudonim) – utrudni to możliwość włamania się do panelu administratora.

Stwórz bezpieczne hasło do logowania

Bardzo ważnym aspektem bezpieczeństwa jest nasze hasło. Jeżeli sami instalowaliśmy WordPressa, to hasło do panelu administracyjnego powinno być zupełnie inne niż hasło do bazy danych. W żadnym wypadku nie powinno być takie same, jak nazwa firmy czy strony. Unikajmy też prostych rozwiązań, takich jak wpisywanie tam swojego imienia i nazwiska czy pseudonimu – tego typu dane można zawsze znaleźć, jak się dobrze w sieci „poszpera”. Dodawanie „123” na koniec hasła również nie jest dobrym pomysłem . Starajmy się tworzyć długie i dość skomplikowane hasła, składające się z małych i wielkich liter, a także z losowych cyfr.

Najlepiej, gdy hasło jest na pierwszy rzut oka kompletnie losowym zbiorem liter i cyfr, które jednak dla nas mają jakieś znaczenie, przez co ich nie zapomnimy. Dobrym sposobem jest użycie pierwszych liter np. ze słów refrenu piosenki, którą lubimy. Powstanie z tego zlepek zupełnie losowych liter, które jednak my łatwo sobie przypomnimy, gdyż wiemy, z czego pochodzą.

Zmień domyślny prefiks „wp_” w bazie MySQL na inny

W trakcie instalacji WordPressa możemy wybrać wyżej wspomniany login i hasło do panelu administracyjnego, jak również możemy podać prefiks dla tabeli w bazie danych MySQL. Domyślnie wszystkie nazwy tabel w bazie danych dla WordPressa rozpoczynają się prefiksem „wp_”, przez co są podane na ataki typu „SQL Injection”.

SQL Injection to metoda ataku, która polega na wykorzystaniu luk i „wstrzyknięciu” komend SQL do bazy danych poprzez wykonanie szkodliwego kodu na naszej stronie internetowej. Jako że w bazie MySQL przechowywane są wszystkie dane, to tego typu atak może być tragiczny w skutkach. Kod wykonywany przez tego typu włamania zazwyczaj w prosty sposób znajduje wpisy z WordPressa, gdyż – jak wspomnieliśmy – domyślnie umieszczone są one w tabelach, które zaczynają się równym prefiksem „wp_”. Zmieniając ten prefiks na inny możemy zwiększyć obronę przed tego typu atakami. Wystarczy wpisać inny prefiks w instalatorze WordPressa.

Używaj bezpiecznego logowania SFTP

Jeśli masz dostęp do serwera FTP i często się na nim logujesz, to używaj szyfrowania SFTP (zakładając, że serwer obsługuje taki standard). Używanie SFTP jest takie samo, jak korzystanie z FTP (trzeba tylko w programie do obsługi serwera FTP zaznaczyć opcję szyfrowania lub wybrać SFTP). Różnica polega na tym, że w połączeniu szyfrowanym nasze dane i hasła są ukryte. Hasło nigdy nie jest wysyłane w niezaszyfrowanej formie i nie może zostać przejęte przez osobę, która ma nas na celowniku.

Wyłącz w WordPressie możliwość edycji plików przez panel administratora

WordPress jest systemem nastawionym na bycie łatwym i przyjaznym. Z tego powodu są tu dodane rozwiązania bardzo pomocne dla osób początkujących, takich jak możliwość edytowania plików PHP i CSS z poziomu panelu administratora. Jeśli jednak ktoś złamie nasze hasło i dostanie się do panelu, to wykorzysta tę możliwość do wykonania szkodliwego kodu na naszej stronie. Warto tę opcję wyłączyć, a edycji plików dokonywać po ściągnięciu ich z serwera FTP na dysk lokalny.

Aby to zrobić, wystarczy dodać jedną linię w pliku wp-config.php. Ściągnij plik wp-config.php, a następnie edytuj go za pomocą dowolnego edytora tekstu, dodając poniższą linię:

define('DISALLOW_FILE_EDIT', true);

Zapisz plik, a następnie wyślij go ponownie na serwer, zastępując oryginalny plik wp-config.php.

Artykuł odpowiedział na twoje pytanie? Udostępnij go dalej:
Obrazek domyślny
Błażej Starosta
Ma doświadczenie w tworzeniu oraz prowadzeniu stron WWW, od blogów aż po sklepy internetowe. Od lat uważnie śledzi rozwój WordPressa i jego wpływ na rynek twórców stron internetowych. Stara się być na bieżąco ze wszystkimi nowinkami technologicznymi i dzielić się swoją wiedzą.