Bezpieczeństwo Twojej strony opartej na WordPressie jest kwestią indywidualnych wyborów. To Ty decydujesz, jak bardzo chcesz ją chronić. Zapoznaj się z pięcioma kluczowymi elementami, które mają największy wpływ na bezpieczeństwo Twojej witryny.
Dyskusje i obawy dotyczące poziomu zabezpieczeń platformy WordPress to temat znany od dawna.
Jeśli rozważasz wybór systemu CMS i konsultujesz się z dostawcą, który nie specjalizuje się w WordPressie, z dużym prawdopodobieństwem usłyszysz, że bezpieczeństwo jest głównym argumentem przeciwko tej platformie. Czy to oznacza, że każdy powinien porzucić WordPressa i przerzucić się na statyczne generatory stron internetowych lub systemy CMS typu headless?
Absolutnie nie! Jak w każdej kwestii, tak i w tej, istnieje wiele punktów widzenia.
Czy WordPress to system o niskim poziomie bezpieczeństwa?
Przyjrzyjmy się kilku znanym witrynom internetowym, które oparte są na WordPressie:
- TechCrunch
- The New Yorker
- BBC America
- Bloomberg
- MTV News
- PlayStation Blog
Co sprawia, że te duże organizacje, z potężnym zapleczem finansowym i dużą ilością specjalistów, nie rezygnują z WordPressa? Jeśli myślisz, że powodem jest przestarzały kod, zastanów się ponownie. Dla tych firm ochrona danych i wizerunek publiczny są o wiele ważniejsze niż migracja, która kosztowałaby (jak szacuję) mniej niż 200 tysięcy dolarów.
Z pewnością ich inżynierowie wiedzą, co robią i nie dostrzegają fundamentalnych, niemożliwych do rozwiązania problemów związanych z bezpieczeństwem WordPressa, prawda?
Sam mam przyjemność zarządzać instalacją WordPressa, która co miesiąc generuje od 3,5 do 4 milionów odsłon. Liczba incydentów związanych z bezpieczeństwem w ciągu ostatnich ośmiu lat? Zero!
Więc… czy WordPress jest bezpieczny?
Przepraszam, jeśli to zabrzmi jak trolling, ale oto moja odpowiedź:
Moja odpowiedź brzmi – tak, i to dlatego, że podobnie jak w wielu kwestiach, sytuacja jest złożona. Aby udzielić właściwej odpowiedzi, musimy zrozumieć, że WordPress (lub jakikolwiek inny gotowy CMS) to nie jest zamknięta szafka, którą ustawiasz na miejscu i już.
To rozbudowane oprogramowanie z licznymi elementami składowymi:
- PHP – język, na którym opiera się WordPress
- Publicznie dostępny serwer, na którym zainstalowana jest strona
- Serwer WWW odpowiedzialny za obsługę ruchu (Apache, Nginx, itp.)
- Używana baza danych (MySQL/MariaDB)
- Szablony graficzne (zbiory plików PHP, CSS i JS)
- Wtyczki (zbiory plików PHP, CSS i JS)
- I wiele innych, w zależności od tego, jakie funkcje ma spełniać Twoja witryna
Innymi słowy, naruszenie bezpieczeństwa w dowolnym z tych elementów, będzie traktowane jako naruszenie bezpieczeństwa WordPressa.
Jeśli hasło administratora serwera to admin123 i zostanie złamane, czy będzie to wina WordPressa?
A może to wina luki w zabezpieczeniach w wersji PHP, lub nowej wtyczki, którą zakupiłeś i zainstalowałeś, a która zawiera poważny błąd? Podsumowując: awaria dowolnego elementu systemu jest odbierana jako awaria bezpieczeństwa WordPressa.
Nie chcę, abyś odniósł wrażenie, że PHP, MySQL i Apache są z natury niebezpieczne. Każde oprogramowanie posiada słabe punkty, a ilość tych punktów jest zaskakująca w przypadku oprogramowania open source (ponieważ każdy może je zobaczyć i przeanalizować).
Czy ktoś wspomniał o „bezpieczeństwie”?
Czego uczymy się z tego wszystkiego?
Nic nie jest z natury bezpieczne lub niebezpieczne. To użyte elementy tworzą łańcuch, który jest tak silny, jak jego najsłabsze ogniwo. Historycznie, łatka „niebezpiecznego” WordPressa wynikała z kombinacji przestarzałych wersji PHP, współdzielonego hostingu oraz instalowania wtyczek i motywów z niezaufanych źródeł.
Jednocześnie, pewne powszechne zaniedbania powodują, że instalacja WordPressa jest podatna na ataki osób, które wiedzą, jak wykorzystać te słabości. Właśnie o tym będzie ten artykuł. Bez zbędnych ceregieli (i niekończących się dyskusji), zaczynajmy.
Najważniejsze luki w WordPressie, które hakerzy mogą wykorzystać
Prefiks tabeli WordPress
Słynna instalacja w 5 minut to wspaniała funkcja WordPressa, ale jak to bywa w przypadku instalatorów, ma to swoje wady, bo sprawia, że stajemy się leniwi i zostawiamy domyślne ustawienia.
Oznacza to, że domyślny prefiks tabel WordPressa to „wp_”, co skutkuje nazwami tabel łatwymi do odgadnięcia:
- wp_users
- wp_options
- wp_posts
Rozważmy teraz atak typu SQL Injection, gdzie złośliwe zapytania do bazy danych są w sprytny sposób wstawiane i uruchamiane w systemie WordPress (ważna uwaga – to nie jest atak specyficzny wyłącznie dla WordPressa/PHP).
Chociaż WordPress ma wbudowane zabezpieczenia przed takimi atakami, nie ma gwarancji, że taki atak nie nastąpi.
Jeśli atakujący zdoła w jakiś sposób uruchomić zapytanie typu DROP TABLE wp_users; DROP TABLE wp_posts;, to wszystkie Twoje konta użytkowników, profile i wpisy zostaną usunięte w mgnieniu oka i nie będzie możliwości ich odzyskania (chyba, że masz system kopii zapasowych, ale nawet wtedy stracisz dane od ostatniej kopii).
Już sama zmiana prefiksu podczas instalacji ma ogromne znaczenie (i nie wymaga żadnego wysiłku).
Zaleca się używanie czegoś losowego, jak np. sdg21g34_, ponieważ jest to bezsensowne i trudne do odgadnięcia (im dłuższy prefiks, tym lepiej). Najlepsze jest to, że prefiks nie musi być łatwy do zapamiętania; jest to coś, co WordPress zapisze i nigdy więcej nie będziesz musiał się o to martwić (tak jak nie martwisz się o domyślny prefiks wp_!).
Domyślny adres URL logowania
Skąd wiadomo, że dana strona działa na WordPressie? Jednym z charakterystycznych znaków jest to, że po dodaniu do adresu strony „/wp-login.php” wyświetla się strona logowania WordPressa.
Weźmy na przykład moją stronę (http://ankushthakur.com). Czy jest na WordPressie? Spróbuj dodać ten fragment do adresu. Jeśli Ci się nie chce, oto co się stanie:
¯\_(ツ)_/¯
WordPress, prawda?
Gdy to jest już wiadomo, hakerzy zacierają ręce i mogą rozpocząć działania ze swojego „worka sztuczek”, od tych najprostszych. Biedny ja!
Rozwiązaniem jest zmiana domyślnego adresu URL logowania i udostępnianie go tylko zaufanym osobom.
Na przykład ta strona również jest na WordPressie, ale jeśli wejdziesz na http://wdzzwdz.com/wp-login.php, to nic tam nie znajdziesz. Adres URL logowania jest ukryty i znany tylko administratorom.
Zmiana adresu URL logowania nie jest skomplikowana. Wystarczy zainstalować wtyczkę.
Gratulacje! Właśnie dodałeś kolejną warstwę utrudnień dla ataków typu brute force.
Wersja PHP i serwera WWW
Wcześniej wspominaliśmy, że każde oprogramowanie, jakie kiedykolwiek napisano, jest podatne na ataki.
To samo dotyczy PHP.
Nawet jeśli korzystasz z najnowszej wersji PHP, nie masz pewności, jakie luki w zabezpieczeniach istnieją i które mogą zostać odkryte w każdej chwili. Rozwiązaniem jest ukrycie nagłówka wysyłanego przez serwer WWW (nie wiesz, czym są nagłówki? Przeczytaj ten artykuł!), gdy przeglądarka się z nim połączy: x-powered-by.
Oto, jak to wygląda, gdy sprawdzisz narzędzia dla programistów w swojej przeglądarce:
Jak widać na załączonym obrazku, strona informuje nas, że działa na Apache 2.4 i używa PHP w wersji 5.4.16.
Jest to mnóstwo informacji, które udostępniamy bez powodu, pomagając hakerom wybrać właściwe narzędzia do ataku.
Te (i podobne) nagłówki powinny być ukryte.
Na szczęście można to zrobić szybko, jednak potrzebna jest do tego wiedza techniczna, ponieważ trzeba będzie zagłębić się w ustawienia serwera i edytować ważne pliki. Dlatego zalecam poprosić o to dostawcę hostingu. Jeśli to nie pomoże, zapytaj konsultanta. Musisz pamiętać, że wszystko zależy od konfiguracji serwera, czy taka zmiana będzie możliwa, czy nie.
Jeśli to nie zadziała, być może nadszedł czas, aby zmienić dostawcę hostingu lub przenieść stronę na VPS i zatrudnić specjalistę od bezpieczeństwa i administracji.
Czy to jest opłacalne? Musisz sam podjąć decyzję.
Aha, i jeśli chcesz pobawić się z nagłówkami bezpieczeństwa, oto Twoja poprawka!
Limit prób logowania
Jedną z najstarszych sztuczek z podręcznika hakerów jest tzw. Atak słownikowy.
Chodzi o przetestowanie absurdalnie dużej liczby (miliony, jeśli to możliwe) kombinacji haseł, aż w końcu jedno z nich zadziała. Ponieważ komputery działają szybko, ten prosty schemat jest rozsądny i może przynieść efekty w stosunkowo krótkim czasie.
Jednym z powszechnych (i niezwykle skutecznych) sposobów obrony jest dodanie opóźnienia przed wyświetleniem komunikatu o błędzie. To zmusza użytkownika do czekania. Jeśli to skrypt używany przez hakera, cała operacja zajmie dużo czasu. Dlatego Twój komputer lub aplikacja chwilę „myśli”, zanim wyświetli komunikat „Ups, złe hasło!”.
W każdym razie, powinieneś ograniczyć liczbę prób logowania na swojej stronie WordPress.
Po przekroczeniu ustalonej liczby prób (powiedzmy 5), konto powinno zostać zablokowane, a odblokowanie powinno być możliwe tylko za pośrednictwem adresu email właściciela konta.
Na szczęście zrobienie tego jest bardzo proste. Wystarczy zainstalować odpowiednią wtyczkę.
HTTP a HTTPS
Certyfikat SSL, o który tak długo prosił Cię dostawca hostingu, jest ważniejszy, niż myślisz.
To nie jest tylko symbol reputacji, który w przeglądarce wyświetla zieloną kłódkę z napisem „Bezpieczne”. Zainstalowanie certyfikatu SSL i wymuszenie używania „https” we wszystkich adresach URL, sprawia, że Twoja witryna przestaje być otwartą księgą, a staje się tajemniczym zwojem.
Jeśli nie wiesz, o co chodzi, to przeczytaj o czymś takim jak atak typu „man-in-the-middle”.
Innym sposobem przechwytywania ruchu przesyłanego między komputerem a serwerem jest sniffing pakietów, pasywna forma gromadzenia danych, która nie wymaga nawet ustawienia się pośrodku.
W przypadku stron, które korzystają ze zwykłego „HTTP”, hasła i numery kart kredytowych przesyłane są w postaci zwykłego tekstu.
Źródło: comparitech.com
Straszne, prawda? Bardzo!
Jednak po zainstalowaniu certyfikatu SSL i przekonwertowaniu adresów URL na „https”, te poufne dane stają się ciągiem znaków, które może rozszyfrować tylko serwer. Innymi słowy, nie żałuj tych kilku dolarów rocznie.
Podsumowanie
Czy wprowadzenie tych pięciu zmian sprawi, że Twoja witryna będzie bezpieczna?
Nie, wcale. Jak wynika z wielu artykułów na temat bezpieczeństwa, nigdy nie można czuć się w 100% bezpiecznym, ale można wyeliminować wiele problemów, stosując proste zabezpieczenia. Rozważ również użycie SUCURI cloud WAF, aby zapewnić kompleksową ochronę Twoich witryn.
newsblog.pl