Jak zapewne wiesz, WordPress jest najbardziej popularnym systemem zarządzania treścią. Statystycznie więcej niż co trzecia strona jest na nim wykonana. I to jest właśnie główny powód, dla którego strony oparte na tym CMS-ie są najczęściej atakowane. Zobacz, dlaczego strony na WordPressie są atakowane i zabezpiecz swoją stronę.
Dlaczego strony na WordPressie są atakowane
WordPress jest najbardziej popularnym systemem CMS (ang. Content Management System, czyli System Zarządzania Treścią). Według najnowszych danych W3Techs(stan na dzień 05.03.2022 r.) na WordPressie wykonanych jest około 43,2% ze wszystkich stron internetowych. Czyli statystycznie więcej niż co trzecia strona działa w oparciu o ten system CMS. Ponadto z każdym rokiem ilość ta rośnie.
WordPress jest wybierany głównie ze względu na prostotę obsługi, a także dużą elastyczność. Na WordPressie wykonasz prostą wizytówkę firmy, bloga, sklep internetowy, portal aukcyjny, serwis ogłoszeniowy i wiele więcej. Wszystko w dużej mierze zależy od naszych umiejętności, a także inwencji twórczej. Kolejnym ważnym aspektem jest ogromna społeczność, która jest zgromadzonawokół WordPressa. W razie problemów ze stroną możesz poprosić o pomoc na forum. Ponadto nie będziesz mieć trudności ze znalezieniem specjalisty, ponieważ dużo freelancerów oraz agencji interaktywnych pracuje na WordPressie. Dodatkowo w sieci znajdziesz dużo poradników, również w języku polskim.
Niestety jest też druga strona medalu. WordPress przez swoją dużą popularność często jest celem ataków. Agresorom opłaca się szukać podatności, ponieważ po odnalezieniu słabych punktów mogą je wykorzystać na dużej ilości stron. Należy zaznaczyć, że nie tylko WordPress jest celem ataków. Inne systemy zarządzania treścią (np. Drupal, Joomla, itd.), a także statyczne strony również nie są w 100% bezpieczne. Niemniej jednak mając stronę wykonaną na WordPressie, należy cały czas być czujnym i odpowiednio o nią dbać, by nie padła ofiarą ataku.
WordPress jest dość specyficznym środowiskiem z ogromną ilością motywów i wtyczek. Niestety nie każdy dodatek spełnia normy bezpieczeństwa. Poza tym nie wszyscy twórcy na bieżąco ulepszają i aktualizują swoje dodatki. Kolejnym aspektem jest to, że właściciele stron nie przeprowadzają regularnych aktualizacji WordPressa, wtyczek i motywów. Nie zawsze wynika to z lenistwa, ale po prostu z braku wiedzy na temat skutków zaniedbania tej kwestii. Poza tym dużo osób obawia się aktualizacji. Jest to jak najbardziej zrozumiałe, ponieważ po aktualizacji mogą wystąpić problemy ze stroną. Jednak pomimo tego warto przeprowadzać regularne aktualizacje, ponieważ zaniedbanie tego może być bardzo dotkliwe w skutkach.
Główny cel ataków
Atakującym przyświeca różny cel. Po pierwsze jest to nieuczciwe pozycjonowanie stron agresora w wyszukiwarkach, tak by osiągały wyższe pozycje. Zjawisko to nosi miano Hacking SEO. W dużym skrócie polega na wstrzyknięciu zainfekowanego kodu poprzez luki w zabezpieczeniach WordPressa, wtyczek lub motywu. Złośliwy kod zawiera linki do innych witryn. W efekcie zainfekowana strona przyczynia się do pozycjonowania innych stron, tracąc przy tym swoją pozycję. Dodatkowo istnieje ryzyko, że przez infekcję Google stwierdzi, że jest to strona o złej reputacji.
Atak ten nie zawsze jest łatwy do wykrycia, ponieważ linki przeważnie są sprytnie ukryte w obrazkach lub kodzie CSS. Agresorzy również nierzadko umieszczają na zainfekowanej stronie reklamy, często o nieodpowiedniej treści. W efekcie strona taka może odstraszać potencjalnych użytkowników.
Kolejnym powodem ataków jest przechwycenie wrażliwych danych. Najczęściej ofiarami padają sklepy internetowe, serwisy społecznościowe, a także wszystkie inne strony, które gromadzą w bazie danych informacje o klientach/użytkownikach. Większe firmy, które doprowadzą do wycieku poufnych danych tracą swoją reputację, nad którą pracowały przez wiele lat. Czasem celem agresorów jest nie tyle zysk ze sprzedaży poufnych danych, ile zniszczenie konkurencji.
Zainfekowane strony mogą również służyć do ataku DDOS (ang. Distributed Denial Of Service, czyli Rozproszona Odmowa Usługi) na inne systemy. Po zainfekowaniu stają się tzw. botami, czy stronami „zombie” i bez wiedzy właściciela biorą udział w ataku na inne strony. Atak DDOS polega na wysyłaniu dużej ilości zapytań w krótkim czasie. W efekcie dochodzi do przeciążenia serwera i atakowana strona może być niedostępna, albo może wolno się wczytywać.
Są też początkujące osoby, które dopiero zaczynają swoją przygodę jako Black-Hat Hacker, które chcą przetestować swoje „umiejętności”. Osoby takie za swój cel obierają słabo zabezpieczone i łatwe do złamania systemy.
Ataki mogą też mieć podłoże polityczne. W takim przypadku atakujący chcą wyrazić swój sprzeciw wobec władzy lub pokazać wyższość danej grupy społecznej.
Warto wspomnieć o tym, że przeważnie ataki są zautomatyzowane, a ofiary zupełnie przypadkowe. Bardzo rzadko jest tak, że strona lub serwer jest atakowany ręcznie. Z tego właśnie powodu ważna jest prewencja mająca na celu odpowiednie zabezpieczenie i zamaskowanie strony, tak by nie została wykryta przez atakujące boty.
Najsłabsze ogniwa
Po poznaniu przyczyn ataków przejdźmy do konkretów. Omówimy teraz newralgiczne punkty, które mogą stanowić furtkę dla agresorów.
Słabej jakości hosting
Wybór hostingu jest niezwykle ważną decyzją w procesie tworzenia strony internetowej. W dużej mierze od serwera zależy szybkość strony, a także jej bezpieczeństwo. Przed zakupem hostingu warto zasięgnąć opinii na forach dyskusyjnych. Dodatkowo u niektórych dostawców można przetestować ich usługi przez okres np. 14 dni. Można wykorzystać ten czas, aby samemu przetestować poziom zabezpieczeń, a także przede wszystkim poziom wsparcia. Nie bój się zadawać pytań, nawet tych oczywistych. Obsługa serwera powinna być cierpliwa i służyć pomocą. Dzięki temu potem w razie rzeczywistych problemów będziesz mieć pewność, że możesz na nich liczyć 😉
Pamiętaj, że dobrej jakości i odpowiednio zabezpieczony hosting jest w stanie zablokować większość ataków.
Przy wyborze hostingu zwróć uwagę na poniższe parametry:
- Czy dostawca hostingu oferuje wykonywanie automatycznych kopii zapasowych. Jeśli tak, zapytaj przez jaki okres je przechowuje.
- Czy na serwerze jest włączona obsługa najnowszej wersji PHP.
- Jaka jest gwarancja dostępności serwera tzw. uptime. Przykładowo, jeśli przez wybrany okres czasu uptime naszego serwera wynosił 100%, to znaczy, że strona, która jest na nim umieszczona nie miała żadnych przerw w funkcjonowaniu.
- Jaka jest lokalizacja serwerów. Jeśli Twoja strona skierowana jest do użytkowników z Polski, to serwery powinny być zlokalizowane w naszym kraju. Dzięki temu strona będzie szybciej się wczytywać. Pamiętaj, że szybsze strony są premiowane wyższą pozycją w wyszukiwarce Google.
- Czy dostawca hostingu ma zainstalowaną na swoim serwerze aplikację firewall, skaner antywirusowy, a także zaporę sieciową ModSecirity. Zapora ModSecurity ma za zadanie filtrowanie zapytań kierowanych do serwera HTTP. Zapora ta jest w stanie zatrzymać większość znanych ataków.
Źle zabezpieczony panel administracyjny WordPressa
Panel administracyjny WordPressa jest bardzo często obierany za cel ataków. Warto go dodatkowo zabezpieczyć, by nie stanowił furtki dla agresorów. Po pierwsze należy ustawić hasło o odpowiednim stopniu skomplikowania. Z pewnością nieodpowiednie będzie hasło będące tytułem filmu, datą urodzenia, pojedynczym słowem, itp. Tego typu hasła są łatwe do złamania za pomocą ataku słownikowego. Zaleca się, żeby hasło składało się z małych i dużych liter, cyfr oraz znaków specjalnych.
Jeśli nie masz pomysłu na mocne hasło, skorzystaj z generatora haseł online, np. https://www.eset.com/int/password-generator/
Przykłady nieodpowiednich haseł:
- hasło
- haslo123
- qwerty
- 123456
- kasia1992
Nazwa użytkownika też nie powinna być prosta do odgadnięcia dla osób postronnych. Tu również warto zadbać o to, by była unikalna. Pamiętaj, że słowo „admin” jest najgorszym z możliwych loginem!
Domyślnie panel administracyjny WordPressa dostępny jest pod adresem /wp-admin. Zmieniając go dodatkowo utrudnimy agresorom dostęp do zaplecza naszej strony. Do ukrycia adresu logowania polecam wtyczkę WPS Hide Login.
Oczywiście dostępnych jest więcej wtyczek o podobnym działaniu. Ponadto bardziej rozbudowane wtyczki do zabezpieczania WordPressa również mają funkcję ukrywania adresu logowania, np. All in ONE WP Security & Firewall.
Możesz także wdrożyć dwuskładnikowe uwierzytelnianie. W tym celu polecam rozwiązanie Google Two Factor Authentication. Na ekranie logowania oprócz loginu i hasła trzeba będzie wpisać dodatkowo jednorazowy kod.
Funkcjonalność tą możesz dodać za pomocą wtyczki Google Authenticator.
Kolejną ważną kwestią jest ustawienie limitu prób logowania do zaplecza. Po przekroczeniu maksymalnej liczby następuje czasowa blokada adresu IP, z którego użytkownik lub boot próbował się zalogować. Do wdrożenia tej funkcjonalności polecam wtyczkę WP Limit Login Attemps, lub All in ONE WP Security & Firewall.
Wtyczki i motywy z „bonusem”
Każda dodatkowa wtyczka stanowi zagrożenie, ponieważ może zawierać lukę w zabezpieczeniach. Instalując wtyczki tylko z oficjalnego repozytorium, a także wtyczki płatne od zaufanych twórców, zmniejszamy to ryzyko. Oczywiście nie można zapomnieć o aktualizowaniu ich.
Najgroźniejsze są pirackie wersje wtyczek. Osoby udostępniające takie pluginy często mają w tym interes. Raczej nikt nie robi tego za darmo. W nielegalnej wersji wtyczek, czy motywów można natrafić na bonus pod postacią tylnej furtki „backdoor” lub kodu infekującego.
Z tego właśnie powodu nie należy korzystać z pirackich wersji wtyczek i motywów. Pomijam fakt, że jest to nieuczciwe i nieetyczne.
Źle chronione hasła
W sieci pojawia się coraz więcej serwisów. Zalecenie jest takie, żeby nie używać tych samych haseł do różnych usług. Niestety niektórzy nadal używają jednego hasła do różnych platform. Jest to dość niebezpieczne, ponieważ w razie wycieku danych w jednym serwisie atakujący może przejąć dostęp do pozostałych.
Niektórzy zapisują hasła w papierowym notesie. To też jest dość ryzykowne, ponieważ notes może dostać się w niepowołane ręce. Hasła, które zapiszemy w pliku na komputerze również nie są w 100% bezpieczne. Dane do logowania mogą zostać przechwycone, jeśli na naszym komputerze zainstalowany jest keylogger. Dla wyjaśnienia jest to program, który rejestruje wpisywane przez nas frazy i przesyła do agresora. Keylogger może zostać zainstalowany poprzez fizyczny dostęp do naszego komputera, albo zdalnie np. w wyniku braku programu antywirusowego.
Bałagan na serwerze
Na serwerze należy trzymać tylko te pliki, które są niezbędne do działania naszej strony lub stron. Bardzo niebezpieczne są pozostałości po starej stronie, zwłaszcza jeśli strona ta wykorzystywała kod PHP i wykonana była w oparciu o CMS. Stare, nieaktualizowane pliki mogą posłużyć agresorom do ataków na nasz serwer. Dlatego warto zadbać o porządek na nim.
Brak certyfikatu SSL
SSL (ang. Secure Socket Layer) jest to protokół sieciowy wykorzystywany do bezpiecznych połączeń sieciowych. Strony, które są nim chronione mają adres zaczynający się od przedrostka https (np. https://monikaszeliga.pl).
Certyfikat SSL sprawia, że wszelkie dane przesyłane przez formularze znajdujące się na stronie są szyfrowane za pomocą kluczy kryptograficznych. Na niezabezpieczonej stronie dane przesyłane są w formie jawnego tekstu, który może zostać przechwycony przez osoby postronne.
Certyfikat SSL nie jest trudny do wdrożenia i można to zrobić bezpłatnie. Niektórzy dostawcy hostingu oferują wsparcie dla darmowego certyfikatu SSL Let’s Encrypt. Dlatego już na etapie wyboru hostingu warto dowiedzieć się, czy wybrany dostawca oferuje wsparcie dla Let’s Encrypt.
Nieodpowiednie uprawnienia
Pliki i katalogi wchodzące w skład instalacji WordPressa powinny mieć ustawione odpowiednie prawa dostępu. W przeciwnym razie wdrożone przez nas środki bezpieczeństwa będą mogły zostać łatwo ominięte przez atakujących.
Zalecania dotyczące uprawnień katalogów i plików w WordPressie:
- Pliki – 644
- Katalogi – 755
- .htaccess – 444
- wp-config.php – 600.
Ustawienia uprawnień możesz zmienić za pomocą klienta FTP (polecam program WinSCP).
Brak aktualizacji
Jak zapewne wiesz, należy wykonywać regularne aktualizacje WordPressa, wtyczek i motywów. Zaniedbanie tej kwestii może skutkować zainfekowaniem strony. Atakujący na bieżąco „testują” WordPressa, a także wszelkiego rodzaju dodatki pod względem zabezpieczeń. Po odnalezieniu luki często są one publikowane i wykorzystywane do ataków.
Przykładowo 17 grudnia 2020 r. wykryto lukę w bardzo popularnej wtyczce Contact Form 7. Wtyczka Contact Form 7 umożliwia dodanie do strony formularzy, np. formularza kontaktowego. Odnaleziona luka pozwalała atakującemu na przesłanie poprzez formularz pliku z rozszerzeniem PHP. Plik mógł zawierać dowolny kod pozwalający m.in. na uzyskanie dostępu do serwera. Przez to, że wtyczka jest bardzo popularna (szacuje się, że około 5 milionów stron z niej korzysta) problem stał się bardzo poważny. Dużo dostawców hostingu wysłało ostrzeżenie o konieczności aktualizacji wtyczki.
Na stronie https://wpscan.com publikowane są odnalezione luki w zabezpieczeniach WordPressa, a także dodatków.
Jednak, czy aby na pewno regularne aktualizacje ochronią stronę w 100%? O tym w następnym punkcie.
Na to nie masz wpływu
Po odnalezieniu luki musi jakiś czas upłynąć, zanim zostanie wydana poprawka. Do tego czasu mogą krążyć po sieci exploity umożliwiające wykorzystanie jej. Takie exploity noszą miano „0-day”. Niestety na to nie mamy wpływu. Na szczęście zautomatyzowane ataki najczęściej wykorzystują znane od dawna i upublicznione luki. Jednak na wszelki wypadek warto wykonywać regularne kopie zapasowe, żeby w razie konieczności móc łatwo i szybko przywrócić stronę.
Ukrywanie strony logowania do kokpitu nie ma znaczenia
Słuszna uwaga, faktycznie samo ukrycie ścieżki logowania w ogóle nie ma sensu, ponieważ bardzo łatwo można ją odczytać. Jednak poprzez ukrycie domyślnej ścieżki wp-admin ukrywamy przed mniej doświadczonymi agresorami fakt, że nasza strona wykonana jest na WordPressie. Oczywiście oprócz tego należy jeszcze wykonać szereg innych czynności.
Warto podkreślić, że ukrycie ścieżki logowania nie zabezpieczy nas przez atakiem typu Brute Force. W tym celu należy np. ograniczyć liczbę prób logowania 🙂