Jak zabezpieczyć WordPressa?
Wiele osób narzeka na niski poziom bezpieczeństwa WordPressa, a obiegowa opinia głosi, że nie jest on zbyt odporny na różnego rodzaju ataki. W niektórych przypadkach jest to rzeczywiście prawda, ale na pewno nie jest to wina samego CMS’a, a przynajmniej nie tylko jego. Niestety, najczęściej winę za ataki na witrynę ponosi jej właściciel. Często obserwowanym problemem jest lekceważące podejście właściciela strony do kwestii aktywnej ochrony. Powinna ona być wynikiem opracowania i przestrzegania całego procesu, w ramy którego wchodzi wiele różnych elementów. Tymczasem, bardzo często zakłada się, że wystarczy zainstalować oprogramowanie, nie trzeba robić nic więcej. Efekty takiego podejścia można znaleźć w innym artykule tego poradnika, a setki, tysiące przykładów w Sieci. Inny stereotyp mówi, że historia ujawnionych podatności WordPress jest bardzo długa, więc nie należy mu ufać. Jednak, to już w dużej mierze historia, a obecnie głównym źródłem problemów są wtyczki, a nie sam CMS. Pewna analiza ujawniła, że przynajmniej jedną groźną podatność miała prawie połowa przebadanych wtyczek.
W tym artykule postaram się udzielić kilku rad, które mogą pomóc Ci w zabezpieczeniu swojej strony, opartej na WordPressie. Znajdziesz tutaj listę rozwiązań, które powinieneś podjąć samodzielnie, aby zwiększyć poziom bezpieczeństwa swojej witryny do akceptowalnego (idealny nigdy nie będzie). Niektóre z tych podpowiedzi mogą wydać Ci się trudne do realizacji. Nie poddawaj się jednak, pracuj nad poszerzaniem swojej wiedzy i świadomości oraz staraj się wdrożyć jak największą ilość poniższych porad. Nawet, jeśli nie dasz rady zrealizować tego na początku, zaplanuj sobie możliwie jak najszybszy powrót do tego zadania.
Potraktuj proszę poniższą listę jako wyznacznik, drogowskaz pokazujący kierunek. Każde bowiem tego typu działanie, będzie kolejnym krokiem w kierunku osiągnięcia celu. A, czym mniej typowe rozwiązanie wymyślisz i zastosujesz, tym lepszą ochronę zapewni ono samej stronie i większy spokój Tobie.
Artykuł znajdziesz również w całkowicie bezpłatnym poradniku dla e-commerce:
Co Ci grozi i jakie mogą być konsekwencje?
Stworzyłeś i rozwijasz swój serwis, podejmujesz wysiłki w celu jego promocji. Niestety, informacja o Twoim przedsięwzięciu rozchodzi się nie tylko wśród potencjalnych użytkowników. Dociera również w miejsca, z których możesz otrzymać cios. I wcale nie muszą to być źli ludzie, najczęściej będzie do automat – oprogramowanie, które ma tylko jeden cel: próbę ataku na każdą stronę, która pojawi się w jego zasięgu. Jakie szkody może przynieść taki ‘miły automacik’ po udanym włamaniu? Ogromne – konsekwencje wizerunkowe, funkcjonalne, jak również prawne lub finansowe. Może na przykład:
- wysyłać spam z Twojej strony/poczty,
- wykraść bazę danych wszystkich użytkowników,
- zwiększyć sztuczny ruch i/lub obciążenie serwera,
- zamieścić na Twoich stronach linki do różnych ofert,
- uruchamiać inne strony,
- podmienić zawartość Twoich stron,
- usunąć część lub całą zawartość Twojego serwisu,
- instalować i uruchamiać aplikacje na komputerach użytkowników,
- użyć Twoich danych dostępowych przy atakach na inne strony,
- instalować nieautoryzowane oprogramowanie na Twoim serwerze,
- przenosić się na inne urządzenia, z których korzystasz.
Nie nadziej się, nie strzel sobie w kolano!
W wielu poradnikach zaleca się instalację tzw. wtyczki bezpieczeństwa. Przy czym temat jest tyle popularny wśród w miarę świadomych użytkowników, co kontrowersyjny wśród ekspertów bezpieczeństwa. Większość z nich po prostu odradza instalację takich kombajnów.
Osobiście widzę możliwość wykorzystania przynajmniej części możliwości tych wtyczek, ale pod pewnymi – bardzo ważnymi – warunkami, które z kolei są dosyć trudne do spełnienia. Nigdy nie wolno poprzestawać wyłącznie na zaufaniu do takich kombajnów, a wręcz powinieneś je traktować z pełną podejrzliwością. Nie tylko jako jeden z wielu (!) elementów systemu ochrony, ale również jako kolejny ‘punkt zapalny’. Znanych jest sporo przypadków odkrycia tzw. dziur bezpieczeństwa w tego rodzaju rozwiązaniach, więc mogą spowodować jeszcze większy problem, zamiast chronić. Taka wtyczka może być co najwyżej uzupełnieniem szerszego procesu i sama musi być również ściśle kontrolowana. Czyli, jeśli już decydujesz się korzystać z dodatku, to wyłącznie wtedy, gdy jesteś bardzo świadomym technicznie użytkownikiem, masz dużą wiedzę w kwestii zagrożeń i bardzo solidnie będziesz realizował wszystkie etapy procesu kontroli. Natomiast, jeśli tak jest, to po co Ci ta wtyczka? 🙂
Z takimi dodatkami jest jeszcze jeden problem. Wywołują one u mniej świadomego użytkownika efekt wiary w to, że wtyczka rozwiąże wszystkie problemy, całkowicie zabezpieczy serwis, nie trzeba robić nic innego. W konsekwencji osłabia to czujność osoby zarządzającej witryną i doprowadza do jeszcze gorszych skutków. Pamiętaj więc, że:
- Instalacja wtyczki – kombajnu bezpieczeństwa, de facto zmniejsza jego poziom, naraża na dodatkowe ryzyko oraz osłabia Twoją czujność. Powinieneś pamiętać, że poleganie na informacjach, automatycznie generowanych przez tego typu dodatki, jest niczym innym, jak oszukiwaniem samego siebie. To może być wyłącznie wstępna informacja, jedna z wielu. No i, a może przede wszystkim, generowane i/lub wysyłane przez wtyczkę informacje należy czytać, starać się zrozumieć, wyciągać z nich informacje i reagować.
- Powinieneś jak najszybciej podjąć wszelkie inne, dostępne Ci działania, aby podnieść poziom bezpieczeństwa swojego serwisu. Powinieneś poświęcić możliwie jak najwięcej sił i czasu, aby nauczyć się i wdrożyć własne metody ochrony. Powinieneś wypracować w sobie odruch nieustannego rozwoju w tym zakresie i nigdy nie powinieneś spoczywać na laurach.
- Pamiętaj, że nie istnieje w świecie realnym witryna bezpieczna w 100%. Powinieneś więc określić granicę dopuszczalnych strat i podejmować wszelkie działania, aby poziom bezpieczeństwa witryny możliwie jak najbardziej chronił ją przed przekroczeniem tej granicy.
- W sytuacji, gdy poprzestaniesz jedynie na instalacji wtyczki bezpieczeństwa, musisz mieć pełną świadomość, że nadejdzie kiedyś moment weryfikacji. I wówczas będziesz mógł mieć pretensje wyłącznie do siebie.
Mam nadzieję, że przeczytałeś i wziąłeś sobie do serca powyższe uwagi. Potraktuj je proszę naprawdę poważnie i uważnie. Przecież nie chcesz być kolejną osobą, z rozpaczą w oczach poszukującą pomocy w sytuacji podbramkowej. Kogoś, kto za odpowiednim i niemałym wynagrodzeniem, pomoże odzyskać utracony serwis i/lub dane. Ten etap nigdy nie będzie tani, szybki i zawsze możliwy, więc lepiej minimalizować ryzyko.
Lista działań, które nie tylko możesz, ale powinieneś wykonać:
Poniższe porady zgrupujemy sobie w kilka obszarów, wynikających z naturalnych etapów działania podczas instalacji oraz administracji WordPressem. Oczywiście nie musisz ściśle stosować się do tej kolejności, jeżeli np. jesteś już na innym etapie. Zrób natomiast wszystko, co w Twojej mocy, aby możliwie jak najszybciej, wdrożyć możliwie jak najwięcej z tych rozwiązań. Czym szybciej i czym więcej, tym bardziej zminimalizujesz ryzyko. I jeszcze jedno: W miarę możliwości, zmian technicznych dokonuj krok, po kroku, za każdym razem sprawdzając, czy ich wprowadzenie nie zakłóciło działania samej witryny. Każdy przypadek jest nieco inny, więc nie wolno tego robić bezmyślnie. I oczywiście zadbaj wcześniej o aktualną kopię zapasową, abyś mógł cofnąć się w razie problemu. A już najlepiej będzie, jeśli uruchomisz sobie testową kopię strony i nie będziesz eksperymentował na środowisku produkcyjnym.
Zaplecze, czyli hosting lub serwer.
O pewne elementy z zakresu bezpieczeństwa serwera, z którego korzysta Twój WordPress, powinien zadbać dobry dostawca hostingu. W skrócie chodzi o to, że środowisko, z którego będzie korzystał Twój WordPress składa się nie tylko z samego oprogramowania tego CMS’a. To również sam serwer, w rozumieniu fizycznej maszyny, jak też oprogramowanie serwera WWW, silnika bazy danych, implementacja PHP, itd. Szczegóły na ten temat znajdziesz m.in. w artykule ‘Hosting vs. Administracja serwerami vs. Zarządzanie witryną.’. Zakładam – skoro czytasz ten artykuł – że nie budujesz własnego środowiska w oparciu o serwer dedykowany lub VPS, a korzystasz ze zwykłego hostingu. Tak więc, w tym artykule skupimy się na tych obszarach, na które masz bezpośredni wpływ, jako właściciel – administrator WordPressa.
Serwer dla WordPress to nie szafa na starocie.
Dbaj o porządek na dyskach
serwera, na których powinny znajdować się jedynie te elementy,
z których korzysta platforma witryny i jej użytkownicy. Usuwaj niepotrzebne
pliki, stosuj własną,
ale czytelną strukturę dodatkowych plików, panuj nad bazami danych (tylko
aktywne, odrębne, z silnymi hasłami). W szczególności unikaj pozostawiania na
serwerze testowych wersji oprogramowania, nieużywanych skryptów, poprzednich
lub roboczych wersji plików, itp. Pamiętaj, że niewiele da też np. zmiana nazw,
a nawet uprawnień plików wykonywalnych. Atakujący będzie aktywnie i różnymi
metodami poszukiwał właśnie takich zapomnianych plików, licząc na znalezienie
np. informacji nt. konfiguracji, ścieżek dostępu, haseł, nazw i loginów, itp.
Ponadto, tak samo, jak w szafie pełnej staroci, trudniej zauważyć podrzucony
śmieć, w nieuporządkowanych strukturach na dyskach, trudniej zauważyć np.
złośliwe oprogramowanie. Różnego rodzaju koparki kryptowalut, robaki
internetowe, backdoory, konie trojańskie, to często spotykany przykład plików,
których nie powinno być w uporządkowanych katalogach, a które łatwo mogą umknąć
Twojej uwadze.
Wybieraj najnowsze stabilne wersje PHP i MySQL.
Dobry hostingodawca pozwoli Ci na wybór wersji oprogramowania, tworzącego środowisko pracy dla WordPressa, jak np. wersja PHP i jego rozszerzeń. W wielu przypadkach jest to całkowicie uzasadnione działanie, niemniej jednak nakłada na Ciebie obowiązek zadbania, aby Twoja witryna korzystała ze stabilnych i bezpiecznych wersji oprogramowania. Musisz pamiętać o tym zarówno w procesie instalacji, jak również w kolejnych etapach administrowania WordPressem. Np. stary, dziurawy interpreter PHP, może być wytrychem, za pomocą którego włamywacz złamie zabezpieczenia. Nie wspominając już o tym, że może niekorzystnie wpływać na szybkość działania witryny. Sprawdzaj zatem okresowo, czy Twój WordPress korzysta z aktualnie wspieranego oprogramowania, jak np. z bezpiecznej wersji PHP.
Wersja produkcyjna strony nie służy do testów.
Podczas
rozwoju, rozbudowy witryny, możesz mieć potrzebę testowania nowych opcji.
W przypadku małych serwisów i rzadkich zmian, być może będziesz mógł pozwolić
sobie na pewne uproszczenia. W każdym innym przypadku, powinieneś zadbać o
stworzenie zupełnie odrębnego środowiska testowego. Z co najmniej tych kilku
powodów:
- Często prace programistyczne trwają dłużej, niż np. część nocy (kiedy to ruch na stronie z reguły jest niewielki i możesz podjąć ryzyko). W przypadku przeprowadzania zmian i testów na stronie produkcyjnej, narażasz się na brak jej dostępności, a więc na konkretne straty biznesowe (finansowe, wizerunkowe).
- W przypadku, gdy przekazujesz dostęp do strony osobom trzecim (programiście, grafikowi, itp.), nie powinien on mieć dostępu do Twoich poufnych informacji, danych osobowych klientów, itd. Wynika to zarówno z konieczności dbania o własny interes, jak również z określonych przepisów, jak np. RODO (o czym możesz przeczytać w odrębnym artykule poradnika).
- Najwięcej ‘śmieci’ (kilka punktów powyżej) tworzy się właśnie podczas wszelkich prac rozwojowych. O wiele łatwiej będzie utrzymać porządek na wyodrębnionym do tego celu środowisku.
- Zazwyczaj wersje testowe nie są zabezpieczone tak dobrze, jak produkcyjne. Ofiarą ataku padło wiele znanych e-commerce, właśnie poprzez wersje testowe swoich platform, ich niezabezpieczone elementy. W sytuacji, gdy stworzysz taką wersję testową w ramach tego samego hostingu, zazwyczaj będzie ona miała adres w rodzaju: test.strona.pl lub strona.pl/nowa/. Roboty ze złośliwym oprogramowaniem wiedzą o tym i będą starały się szukać wszelkich tego typu rozwiązań.
Uważaj na auto instalatory.
Generalnie, auto instalator nie jest taki zły, pomaga w pierwszym uruchomieniu WordPressa, upraszcza sprawę. Oczywiście, lepiej mieć pełną kontrolę nad tym procesem, ale jeśli już musisz, to pamiętaj proszę, aby koniecznie zweryfikować, czy:
- auto instalator pozwoli Ci na wybranie własnej konfiguracji – patrz następny punkt,
- zainstalowany w ten sposób WordPress jest aktualny – jeśli nie, zaktualizuj,
- auto instalator nie próbował przypadkiem, wraz z samym WordPressem, zainstalować zbędne wtyczki lub motywy – jeśli tak, usuń,
- na serwerze nie pojawiły się jakieś zbędne pliki, których nie powinno być w przypadku normalnej instalacji – jeśli tak, usuń.
Instalacja WordPressa.
Zmień prefiks bazy danych.
Niezależnie od tego, w jaki sposób instalujesz WordPressa, powinieneś mieć możliwość wpisania własnego prefiksu (przedrostka) dla nazw tabel w tworzonej bazie danych. Instalator podpowie jakąś domyślną frazę w rodzaju ‘wp_’ i właśnie ten fragment zmień na własny, nietypowy ciąg różnych znaków, zakończony podkreślnikiem (np.: ‘dE12k_’). Dzięki temu, nieco utrudnisz robotom sieciowym odnalezienie konkretnych tabel w bazie.
Dbaj o porządek uprawnień do wielu baz danych.
W przypadku, gdy instalujesz kilka instancji WordPressa, pamiętaj, żeby dla każdego z nich stworzyć osobną bazę danych. Dzięki temu uzyskasz separację, a więc zwiększysz bezpieczeństwo jednej bazy, gdy drugiej przytrafi się coś złego. Poza tym, będzie Ci o wiele łatwiej zarządzać kopiami bezpieczeństwa i przywracać bazę w razie potrzeby. Nadaj jej również unikalną nazwę, aby nie sugerować ew. włamywaczowi schematu, nie ułatwiać mu sprawy.
Powinieneś również dla każdej z wersji ustalić odrębnego administratora, inną nazwę i hasło.
Dzięki temu, gdy zostaną złamane, odkryte lub podsłuchane dane dostępowe jednej z witryn, nie narazisz automatycznie innej.
Unikaj zdalnych połączeń do bazy danych, jeśli nie jest Ci to naprawdę niezbędne. Wiele serwerów baz danych nie szyfruje domyślnie swoich połączeń, więc nie narażaj się na podsłuchanie.
Zadbaj o login i hasło admina.
Od pewnego momentu WordPress pozwala nadać własną nazwę głównego konta administracyjnego. Używaj różnych loginów i haseł (hosting, WordPress, htaccess, baza). Podczas instalacji, ani nigdy później nie używaj loginów w rodzaju ‘admin’, ‘administrator’, ‘root’, ‘user’, ‘test’, ‘support’, ‘nazwa-Twojego-serwisu’, ‘Twoja-domena’, itp.
Korzystanie z tego samego hasła do różnych platform oraz używanie za słabych haseł, to dwa z najczęściej popełnianych błędów. Gdy używasz jednego hasła w kilku miejscach, to nie musi ono zostać złamane w Twoim WordPressie. Ten może być odpowiednio zabezpieczony, ale co z tego, jeśli uda się pokonać przeszkody lub nastąpi wyciek w innym miejscu, a następnie hasło posłuży do zalogowania w WordPressie. Co więcej – pamiętaj, że sam WordPress, to tylko jeden z kilku elementów Twojej strony, poza nim jest jeszcze dostęp do bazy danych, do serwera, itd. Pamiętaj, aby ustawić trudne hasło i włączyć autoryzację dwuskładnikową.
Więcej na ten temat znajdziesz w punkcie ‘Unikaj przewidywalnych haseł.’ artykułu ‘Jak chronić swój e-biznes przed atakiem.’.
Wstępna konfiguracja WordPressa.
Przenieś dane dostępowe do bazy.
Dane dostępowe do bazy danych zapisane są w pliku wp-config.php. W przypadku, gdy WordPress został zainfekowany jakimś malware, ten będzie próbował odczytać dane z tego właśnie pliku. Możesz mu to utrudnić, zmieniając lokalizację danych dostępowych do bazy. Możesz to osiągnąć np. tak:
- W pliku ‘wp-config.php’ znajdź:
define('DB_NAME', 'xyz');
define('DB_USER', 'xyz');
define('DB_PASSWORD', 'xyz');
define('DB_HOST', 'xyz');
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
- Usuń i skopiuj do innego pliku, nadając mu własną nazwę, np. ‘d9x00-db-config.php’.
- W pliku ‘wp-config.php’, w miejsce usuniętego, umieść fragment kodu:
require_once " d9x00-db-config.php";
- Dodatkowo, stworzony plik (w naszym przykładzie: ‘d9x00-db-config.php’), przenieś poza główny katalog strony, jednocześnie odpowiednio zmieniając ścieżkę do niego.
Zmień klucze WordPressa na własne.
W pliku konfiguracyjnym ‘wp-config.php’ WordPress przechowuje klucze do autoryzacji oraz enkrypcji. Przypilnuj, aby każda instancja WordPressa miała swoje własne, unikatowe klucze. Pamiętaj, że niektóre auto instalatory, używają tych samych kluczy dla każdej instalacji. Wygeneruj i zmień klucze w pliku ‘wp-config.php’. Własny zestaw uzyskasz bezpłatnie np. na stronie: https://api.wordpress.org/secret-key/1.1/salt/, a następnie zastąp nimi zestaw z domyślnej instalacji.
Posprzątaj po instalatorze.
Usuń domyślnie zainstalowane, a niepotrzebne wtyczki (jak np. ‘Akismet’) i motywy. W sytuacji, gdy nie planujesz ich użyć, usuń wszystkie poza wybranym szablonem. Dlaczego to takie ważne uzmysłowisz sobie wiedząc, że w jednym z domyślnych szablonów znaleziono kiedyś groźną podatność. To, że z któregoś nie korzystasz nie oznacza, że nie będzie narażał Twojego WordPressa, więc go usuń zanim zapomnisz.