Krótka odpowiedź: WordPressa nie zabezpiecza jedna wtyczka, tylko kilka nawyków: aktualizacje, logowanie dwuetapowe dla administratorów, regularny przegląd kont i haseł aplikacji, kopie zapasowe poza serwerem i oddzielenie stron od siebie. Poniżej 12 kroków ułożonych od najważniejszych. Przy wielu z nich podajemy przykład z infekcji, które sami czyściliśmy.
Jak atakujący dostają się do WordPressa
Najczęściej jedną z trzech dróg:
- Nieaktualna wtyczka albo motyw ze znaną luką. Po opublikowaniu poprawki atakujący wiedzą, czego szukać na stronach, które jej nie zainstalowały.
- Wykradzione albo słabe hasło administratora, często używane jeszcze w kilku innych miejscach.
- Podrzucony kod: piracka wersja płatnej wtyczki, menedżer plików w panelu albo plik wgrany przez inną zainfekowaną stronę na tym samym koncie hostingowym.
Dwa przykłady z naszej pracy, bez nazw klientów. W pracowni reklamy 13 stron stało na jednym koncie hostingowym. Znaleźliśmy tam 157 plików z tylnymi furtkami i 14 obcych kont administratora, a infekcja siedziała od 2021 roku, bo wcześniejsze sprzątanie usuwało objawy, ale nie mechanizmy powrotu. W sklepie internetowym malware ukrywał się w fałszywej wtyczce, zadaniach cron i pliku .user.ini, a po pierwszym czyszczeniu napastnik wrócił z wykradzionym hasłem. Żaden administrator sklepu nie miał logowania dwuetapowego.
12 kroków, żeby zabezpieczyć stronę WordPress
1. Aktualizuj rdzeń, wtyczki i motyw
To najważniejszy krok, bo zamyka znane luki, zanim ktoś je wykorzysta. Rób to z kopią zapasową i testem formularzy po każdej zmianie. Jak to zrobić bez psucia strony, opisujemy w poradniku aktualizacja WordPressa krok po kroku.
2. Usuń wtyczki i motywy, których nie używasz
Wyłączona wtyczka dalej leży na serwerze i dalej może mieć lukę. Zostaw tylko to, co naprawdę pracuje. Nigdy nie instaluj pirackich wersji płatnych wtyczek: to jeden z najprostszych sposobów, żeby samemu wgrać sobie złośliwy kod.
3. Włącz logowanie dwuetapowe dla każdego administratora
Drugi krok logowania, na przykład kod z aplikacji w telefonie, sprawia, że samo hasło nie wystarczy. W sklepie z przykładu wyżej to właśnie wykradzione hasło pozwoliło napastnikowi wrócić po pierwszym czyszczeniu. Po naprawie wymusiliśmy logowanie dwuetapowe dla wszystkich administratorów.
4. Przejrzyj listę administratorów
Wejdź w Użytkownicy i sprawdź, kto ma rolę administratora. Każde konto, którego nie rozpoznajesz, to sygnał alarmowy. W pracowni reklamy było ich 14. Konta byłych pracowników i dawnych wykonawców usuń albo obniż im uprawnienia. Każda osoba powinna mieć własne konto, a nie jedno wspólne hasło.
5. Usuń nieznane hasła aplikacji
W profilu użytkownika jest sekcja Hasła aplikacji. Takie hasło pozwala logować się do strony przez interfejs programistyczny bez podawania głównego hasła i przetrwa jego zmianę. Atakujący chętnie je zostawiają, żeby wrócić po sprzątaniu. Jeśli nie korzystasz z aplikacji, które ich wymagają, lista powinna być pusta.
6. Ogranicz próby logowania i wyłącz XML-RPC
Limit nieudanych logowań zatrzymuje zgadywanie haseł. XML-RPC to stary mechanizm do zdalnego publikowania, przez który da się próbować wielu haseł w jednym zapytaniu. Jeśli nie używasz aplikacji mobilnej WordPressa ani usług, które go potrzebują, wyłącz go. W sklepie z naszego przykładu zrobiliśmy obie rzeczy.
7. Wyłącz edycję plików z panelu
Wpis define( 'DISALLOW_FILE_EDIT', true ); w pliku wp-config.php usuwa edytor motywów i wtyczek z panelu. Ktoś, kto przejmie konto administratora, nie wklei wtedy kodu jednym kliknięciem. Z tego samego powodu nie instaluj wtyczek do zarządzania plikami z poziomu panelu, jeśli nie musisz.
8. Ustaw właściwe uprawnienia plików
Standard to 644 dla plików, 755 dla katalogów i 600 albo 640 dla wp-config.php, w którym są dane do bazy. Katalog z uprawnieniami 777 pozwala zapisywać w nim każdemu procesowi na serwerze.
9. Rób kopie zapasowe poza serwerem i sprawdzaj je
Kopia leżąca na tym samym koncie może zostać zaszyfrowana albo zainfekowana razem ze stroną. Trzymaj ją w osobnym miejscu i co jakiś czas sprawdź, czy da się ją przywrócić. Kopia, której nikt nigdy nie przywracał, jest tylko nadzieją. Harmonogram, miejsce zapisu i test przywracania opisujemy w poradniku kopia zapasowa WordPress.
10. Jedna strona, jedno konto hostingowe
Kilka stron na jednym koncie to jedno mieszkanie z kilkoma wejściami: infekcja jednej strony ma dostęp do plików wszystkich. W pracowni reklamy infekcja wracała po kilku dniach, dopóki usuwano pojedyncze objawy. Wyczyściliśmy wszystkie 13 stron naraz i każdą zamknęliśmy w osobnym środowisku.
11. Aktualne PHP i zapora na serwerze
Stare wersje PHP przestają dostawać poprawki bezpieczeństwa. Dobry hosting ma też zaporę aplikacyjną, która blokuje znane ataki, zanim dotrą do WordPressa. To jeden z powodów, dla których warto wybierać hosting pod WordPressa, a nie najtańszy serwer.
12. Monitoruj stronę
Włącz powiadomienia o zmianach w plikach, na przykład w Wordfence, i o niedostępności strony. W Google Search Console sprawdzaj raport Problemy dotyczące bezpieczeństwa: Google często widzi infekcję wcześniej niż właściciel, na przykład po spamie w wynikach wyszukiwania. W pracowni reklamy Google miał w indeksie 12 837 adresów z kasynowym spamem.
Czego nie robić
- Nie instaluj kilku wtyczek bezpieczeństwa naraz. Dublują się, spowalniają stronę i potrafią się wzajemnie blokować. Jedna dobrze ustawiona wystarczy.
- Nie traktuj wtyczki jak gwarancji. Żadna nie zastąpi aktualizacji, logowania dwuetapowego i kopii zapasowej.
- Nie dziel jednego konta administratora między kilka osób ani wykonawców. Nie da się wtedy sprawdzić, kto co zmienił, i nie da się odebrać dostępu jednej osobie.
- Nie usuwaj podejrzanych plików na ślepo, jeśli strona już jest zainfekowana. Samo usunięcie objawu zwykle kończy się powrotem infekcji po kilku dniach.
Co zrobić, jeśli strona już jest zainfekowana
Zmień hasła, zrób kopię obecnego stanu jako dowód i nie aktualizuj niczego na siłę. Pierwsze kroki opisujemy w poradniku wirus na stronie WordPress: co zrobić od razu. Jeśli wolisz oddać to w ręce specjalistów, usuwanie wirusów i malware z WordPressa kosztuje u nas od 1000 zł, zależnie od rodzaju infekcji, a cenę znasz przed startem prac.
Najczęstsze pytania o bezpieczeństwo WordPressa
site:twojadomena.pl i sprawdź, czy w wynikach nie ma stron, których nie tworzyłeś.