Zainfekowana strona WWW — jak rozpoznać atak, wyczyścić serwis i odzyskać dane z kopii

Zainfekowana strona WWW — jak rozpoznać atak, wyczyścić serwis i odzyskać dane z kopii

Zainfekowana strona WWW — jak rozpoznać atak, wyczyścić serwis i odzyskać dane z kopii

Większość infekcji stron internetowych nie zaczyna się od spektakularnego włamania. Zaczyna się od wtyczki, której nikt nie aktualizował od pół roku, od szablonu ściągniętego z przypadkowego źródła albo od hasła, które ktoś wpisał na zainfekowanym komputerze. Efekt jest zawsze podobny: strona zaczyna zachowywać się dziwnie, a Ty dowiadujesz się o tym od klienta albo — co gorsza — od Google.

Ten poradnik prowadzi Cię przez trzy etapy: rozpoznanie infekcji, bezpieczne czyszczenie i przywracanie danych w takiej kolejności, żeby nie wrócić do problemu po dwóch dniach.

Po czym poznasz, że Twoja strona jest zainfekowana

Infekcja rzadko wygląda jak podmieniona strona główna z komunikatem od włamywacza. Znacznie częściej objawy są ciche i łatwo je zignorować:

  • Przekierowania, które działają wybiórczo — strona otwiera się normalnie u Ciebie, ale użytkownicy z telefonów albo z wyników Google lądują na zupełnie innej witrynie.
  • Ostrzeżenie w wyszukiwarce — czerwony ekran „Ta witryna może być niebezpieczna” albo spadek widoczności w Google z dnia na dzień.
  • Treści, których nie dodawałeś — nowe podstrony z linkami do aptek, kasyn czy kryptowalut, często ukryte przed zalogowanym administratorem.
  • Nowe konta administratorów w panelu CMS-a, których nie zakładałeś.
  • Nagły wzrost obciążenia lub wysyłki poczty — zainfekowany serwis bardzo często jest wykorzystywany do rozsyłania spamu.
  • Pliki o dziwnych nazwach w katalogu strony, zwłaszcza z rozszerzeniem .php w miejscach, gdzie powinny być tylko obrazki lub pliki statyczne.

Jeśli rozpoznajesz choć jeden z tych objawów, traktuj to jako potwierdzoną infekcję i przejdź dalej. Weryfikacja „czy na pewno” kosztuje czas, którego w tej sytuacji nie masz.

Kopia zapasowa ma swój termin ważności

To jest najważniejszy fragment tego tekstu, a jednocześnie ten, który najczęściej zaskakuje.

Kopia zapasowa nie jest wehikułem czasu bez ograniczeń — ma okno retencji. W hostingu RapidDC backup wykonywany jest raz dziennie, a przywrócić można dane do 3 dni wstecz (źródło: rapiddc.pl/hosting-www). To bardzo przyzwoity zapas, ale wynika z niego twarda konsekwencja: jeśli infekcja siedzi na serwerze od tygodnia, wszystkie dostępne kopie są już zainfekowane. Przywrócenie backupu przywróci wtedy również złośliwy kod.

Wniosek jest prosty i bardzo praktyczny: czas reakcji jest tu ważniejszy niż sama technika czyszczenia. Im szybciej wykryjesz problem, tym większa szansa, że wystarczy jedno kliknięcie zamiast wielogodzinnego przeglądania plików. Dlatego warto raz na jakiś czas po prostu wejść na własną stronę z telefonu, w trybie prywatnym i z wyników Google — to zajmuje minutę, a wykrywa większość przekierowań. Więcej o tym, dlaczego automatyczny backup jest wart swojej ceny, piszemy w osobnym wpisie: jakie znaczenie ma automatyczny backup hostingu.

Bezpieczne czyszczenie krok po kroku

Kolejność ma znaczenie. Wykonanie tych kroków w złej kolejności najczęściej kończy się ponowną infekcją tego samego dnia.

1. Zabezpiecz dostępy, zanim cokolwiek naprawisz. Zmień hasła do panelu hostingu, FTP, bazy danych i kont administratorów w CMS-ie. Jeśli tego nie zrobisz, atakujący wgra kod ponownie zaraz po tym, jak go usuniesz. Przy okazji warto włączyć weryfikację dwuetapową — zebraliśmy zasady tworzenia haseł w osobnym poradniku.

2. Zrób kopię stanu bieżącego — nawet zainfekowanego. Brzmi nieintuicyjnie, ale to Twoja siatka bezpieczeństwa. Jeśli czyszczenie pójdzie za daleko i strona przestanie działać, będziesz miał do czego wrócić. Zapisz osobno pliki i osobno bazę danych.

3. Ustal, co jest zainfekowane. Przejrzyj katalog strony w menedżerze plików DirectAdmina lub przez FTP i sortuj pliki po dacie modyfikacji. Pliki zmienione w dniu, w którym pojawiły się objawy, to Twoi główni podejrzani. Zwróć uwagę na katalogi z uploadami — tam nie powinno być żadnych skryptów PHP.

4. Wyczyść albo przywróć. Jeśli infekcja jest świeża i mieści się w oknie backupu, przywrócenie kopii sprzed infekcji jest szybsze i pewniejsze niż ręczne czyszczenie. Jeśli jest starsza, podmień pliki CMS-a i wtyczek na świeże, pobrane z oficjalnych źródeł, a bazę danych przejrzyj pod kątem podejrzanych wpisów. Procedurę odtwarzania bazy opisaliśmy tutaj.

5. Usuń to, czego nie używasz. Nieaktywna wtyczka albo stary szablon to nadal kod na serwerze — i nadal może zostać wykorzystany. Kasuj bez sentymentu.

Jak nie wrócić do tego problemu za miesiąc

Czyszczenie bez utwardzenia serwisu to leczenie objawowe. Kilka rzeczy, które realnie zmniejszają ryzyko:

  • Aktualizuj CMS, wtyczki i szablony — to zamyka zdecydowaną większość realnie wykorzystywanych luk.
  • Trzymaj aktualną wersję PHP. Na hostingu RapidDC dostępne są wersje aż do PHP 8.3 (źródło: rapiddc.pl/hosting-www), a przełączysz je samodzielnie w panelu — jak to zrobić, opisaliśmy tutaj.
  • Włącz i wymuś HTTPS. Certyfikat SSL Let’s Encrypt jest w cenie hostingu RapidDC, więc nie ma powodu, żeby z niego nie korzystać — dlaczego to ważne.
  • Ogranicz liczbę kont z uprawnieniami administratora i kasuj konta osób, które już z Tobą nie pracują.
  • Zrozum, przed czym chroni Cię zapora, a przed czym nie — wyjaśniamy to we wpisie o zaporze sieciowej.

Jeśli prowadzisz kilka serwisów albo obsługujesz klientów, rozważ rozdzielenie ich na osobne środowiska. Przy większych projektach sensowne bywa przejście na serwer VPS — dostajesz pełną wirtualizację KVM i własne, odizolowane środowisko, w którym infekcja jednego projektu nie dotyka pozostałych (źródło: rapiddc.pl/serwery-vps).

Podsumowanie

Infekcja strony to problem, którego koszt rośnie z każdą godziną — nie dlatego, że złośliwy kod robi się groźniejszy, ale dlatego, że kurczy się okno, w którym czysta kopia zapasowa jest jeszcze dostępna. Reaguj szybko, zaczynaj od haseł, a dopiero potem czyść pliki.

Jeśli szukasz hostingu, na którym codzienny backup, certyfikat SSL i samodzielne zarządzanie wersjami PHP są standardem, a nie płatnym dodatkiem — sprawdź hosting WWW w RapidDC.

FAQ – najczęściej zadawane pytania o zainfekowaną stronę WWW

Skąd mam wiedzieć, że strona jest zainfekowana, skoro u mnie wygląda normalnie?

Wiele infekcji ukrywa się przed zalogowanym administratorem i uruchamia tylko dla ruchu z wyszukiwarki lub z urządzeń mobilnych. Sprawdź stronę w trybie prywatnym, z telefonu i wchodząc z wyników Google. Zwróć też uwagę na komunikaty w Google Search Console.

Czy przywrócenie kopii zapasowej zawsze rozwiąże problem?

Tylko wtedy, gdy kopia pochodzi sprzed infekcji. W hostingu RapidDC backup sięga do 3 dni wstecz (źródło: rapiddc.pl/hosting-www), więc przy świeżym incydencie to najszybsza droga. Przy infekcji starszej niż okno retencji wszystkie kopie są już zainfekowane i konieczne jest ręczne czyszczenie.

Od czego zacząć — od czyszczenia plików czy od zmiany haseł?

Od haseł. Jeśli atakujący nadal ma dostęp do FTP, bazy lub panelu CMS, wgra złośliwy kod ponownie zaraz po tym, jak go usuniesz. Zmiana haseł i wylogowanie aktywnych sesji zamyka drogę powrotu, zanim zaczniesz sprzątać.

Czy nieużywane wtyczki i szablony są bezpieczne, skoro są wyłączone?

Nie. Nieaktywna wtyczka to nadal pliki na serwerze i nadal może zawierać podatność, którą da się wywołać bezpośrednio. Jeśli czegoś nie używasz, usuń to całkowicie zamiast tylko dezaktywować — to jedna z najprostszych rzeczy, które realnie zmniejszają powierzchnię ataku.