Ой-ой, нам сайт зламали! Що ж робити?
- Головна
- Блог
- Інструкції
- Ой-ой, нам сайт зламали! Що ж робити?
Зайшли зранку на свій сайт, а він рясніє сторонніми банерами чи зовсім заблокований? Швидше за все, його зламали чи заразили. Порада № 1 – без паніки, все можна виправити. Головне, не впадайте у відчай і тим більше не погоджуйтеся на пропозицію «викупити» свій сайт назад (так-так, і таке буває). Особисто ми не ведемо переговорів із зловмисниками. І вам підкажемо, як із ними боротися. :)
Хто шкідник?
Здавалося б, ну якій нормальній людині потрібно зламувати чужий сайт, витрачати на цей час і ресурси? Щоб що? Лише пошантажувати власника? Насправді, список набагато ширший. Найчастіше зловмисники зламують сайти, щоб:
- Використовувати його для «фішингу» – вид інтернет-шахрайства, коли на підставних сайтах відвідувачі крадуть акаунти, реквізити банківських карток та іншу персональну інформацію.
- Розсилати зі зламаного сайту спам.
- Використовувати сайт для зловмисної активності, DDoS-атак.
- Пересилати відвідувачів на інші веб-сайти.
- Банально насолити конкуренту, зламавши роботу сайту.
Тому навіть те, що ви не зберігаєте на своєму сайті особисті дані користувачів і не проводите фінансові операції, не вбереже вас від попадання в поле зломників.
Симптоми
Звісно, якщо зловмисники розмістили на сайті свої банери або відвідувачів при вході перекидають на інші ресурси, напевно, ви помітите це і без додаткової діагностики.
Крім того, якщо зломщики вже встигли «нашкодити» (розіслати спам, провести DDoS-атаку тощо), можливо, ваш сайт потрапив до чорного списку пошукових систем. Той же Google вкладає великі ресурси у боротьбу з сайтами-шкідниками, тому, ймовірно, швидко вистежить ваш сайт і почне попереджати потенційних відвідувачів. Зрозуміло, це позначиться на відвідуваності.
Також «симптомами» зламаного або зараженого сайту можуть бути невідомі файли у директорії та чужорідний код у тілі чи файлах сайту.
Знаходимо причину
Виявити шкідливі файли, а заразом і слабкі місця сайту можна так:
-
Знайдіть заражені файли за допомогою антивірусу. З цим завданням впораються антивірусні утиліти clamav та maldet. Якщо ClamAV є в системі, maldet буде використовувати при скануванні не тільки свої бази, але й бази clamav.
Для сканування важливо використовувати команду, яка не переміщатиме файли в карантин. В іншому випадку дата їхньої модифікації зміниться і подальше «розслідування» не вийде. Підійде така команда:
-bash-4.1# maldet --config-options quarantine_hits=0 -a /var/www/
Linux Malware Detect v1.
(C) 2002-2016, R-fx Networks proj@rfxn.com
(C) 2016, Ryan MacDonald ryan@rfxn.com
This program may be freely redistributed under the terms of the GNU GPL v2
maldet(5719): {scan} signatures loaded: 11294 (9343 MD5 / 1951 HEX / 0 USER)
maldet(5719): {scan} building file list for "/var/www/", this might take awhile...
maldet(5719): {scan} setting nice scheduler priorities for all operations: cpunice 19 , ionice 6
maldet(5719): {scan} file list completed in 0s, found 6624 files...
maldet(5719): {scan} found clamav binary at /usr/bin/clamscan, using clamav scanner engine...
maldet(5719): {scan} scan of "/var/www/" (6624 files) in progress...
maldet(5719): {scan} processing scan results for hits: 1 hits 0 cleaned
maldet(5719): {scan} scan completed on "/var/www/": files 6624, malware hits 1, cleaned hits 0, time 26s
maldet(5719): {scan} scan report saved, to view run: maldet --report 170223-1010.5719
maldet(5719): {scan} quarantine is disabled! set quarantine_hits=1 in conf.maldet or to quarantine results run: maldet -q 170223-1010.5719
Важливо!
Перевірте на віруси і сам комп'ютер, з якого керуєте сайтом — якщо злом зроблено в результаті витоку пароля, новий пароль через якийсь час можуть вкрасти знову.
-
Дізнайтеся про час, коли вірус був змінений востаннє. Це можна зробити за допомогою утиліти ls (утиліта для виведення вмісту каталогів).
Зазвичай з'являється час останньої модифікації файлу. Зловмисники могли його змінити:
[****]# ls -l class-smtp.php
-rw-r--r--. 1 **** 52078 січ 12 00:41 class-smtp.php
А час останньої зміни файлу фіксовано. Дізнатися його можна за допомогою параметра –c:
[****]# ls -lc class-smtp.php
-rw-r--r--. 1 **** 52078 лют 1 10:40 class-smtp.php
-
Звірте час останньої зміни із записами в логах веб-сервера за допомогою утиліт less (програма для читання файлів) та grep (утиліта для пошуку рядків).
Вийде приблизно так:
[****]# less remoteoffice.****.log-20170202.gz | grep POST | grep -E ":10:(3([789])|40):"
93.124.244.82 - - [01/Feb/2017:10:39:50 +0200] "POST /wp-content/plugins/LayerSlider/tmp/file65.php HTTP/1.0" 504 183
"http://****/wp-content/plugins/LayerSlider/tmp/file65.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
184.168.152.197 - - [01/Feb/2017:10:39:59 +0200] "POST /wp-includes/SimplePie/Decode/HTML/dir.php HTTP/1.0" 200 64
****/wp-includes/SimplePie/Decode/HTML/dir.php" "Mozilla/5.0 (X11; U; Linux i686; en-US) U2/1.0.0 UCBrowser/9.3.1.344"
37.255.128.50 - - [01/Feb/2017:10:40:03 +0200] "POST /wp-includes/SimplePie/Decode/HTML/dir.php HTTP/1.0" 200 82
"http://****/wp-includes/SimplePie/Decode/HTML/dir.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
184.168.193.197 - - [01/Feb/2017:10:40:06 +0200] "POST /wp-content/plugins/contact-form-7/languages/dump.php HTTP/1.0" 200 57 "http://****/wp-content/plugins/contact-form-7/languages/dump.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36"
23.91.70.65 - - [01/Feb/2017:10:40:08 +0200] "POST /wp-includes/fonts/global.php HTTP/1.0" 200 62
"http://****/wp-includes/fonts/global.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
97.74.24.221 - - [01/Feb/2017:10:40:14 +0200] "POST /wp-content/themes/Avada/fusion-icon/alias72.php HTTP/1.0" 200 60 "http://****/wp-content/themes/Avada/fusion-icon/alias72.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36"
50.62.177.78 - - [01/Feb/2017:10:40:16 +0200] "POST /wp-includes/js/jquery/css6.php HTTP/1.0" 200 92
"http://****/wp-includes/js/jquery/css6.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
45.40.164.132 - - [01/Feb/2017:10:40:17 +0200] "POST /wp-content/plugins/LayerSlider/tmp/file65.php HTTP/1.0" 499 0
"http://****/wp-content/plugins/LayerSlider/tmp/file65.php" "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:24.0) Gecko/20100101 Firefox/24.0"
-
Відрізайте неуспішні запити (відповідь від сервера не 200) та запити до одного і того ж скрипту. Вийде список:
184.168.152.197 - - [01/Feb/2017:10:39:59 +0200] "POST /wp-includes/SimplePie/Decode/HTML/dir.php HTTP/1.0" 200 64
"http://****/wp-includes/SimplePie/Decode/HTML/dir.php" "Mozilla/5.0 (X11; U; Linux i686; en-US) U2/1.0.0 UCBrowser/9.3.1.344"
184.168.193.197 - - [01/Feb/2017:10:40:06 +0200] "POST /wp-content/plugins/contact-form-7/languages/dump.php HTTP/1.0" 200 57 "http://****/wp-content/plugins/contact-form-7/languages/dump.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36"
23.91.70.65 - - [01/Feb/2017:10:40:08 +0200] "POST /wp-includes/fonts/global.php HTTP/1.0" 200 62
"http://****/wp-includes/fonts/global.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
97.74.24.221 - - [01/Feb/2017:10:40:14 +0200] "POST /wp-content/themes/Avada/fusion-icon/alias72.php HTTP/1.0" 200 60 "http://****/wp-content/themes/Avada/fusion-icon/alias72.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.48 Safari/537.36"
50.62.177.78 - - [01/Feb/2017:10:40:16 +0200] "POST /wp-includes/js/jquery/css6.php HTTP/1.0" 200 92
"http://****/wp-includes/js/jquery/css6.php" "Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 Firefox/29.0 SeaMonkey/2.26"
Кожен із п'яти (у нашому випадку) відібраних скриптів може бути причиною зараження.
Важливо!
Як правило, зловмисники зламують сам сайт, а не систему, де він працює. Найпростіший спосіб перевірити – подивитися, кому належать заражені файли. Якщо тому ж користувачу, від імені якого запускалися PHP-скрипти (залежно від налаштувань системи, це або той самий користувач, якому належать інші файли веб-сайту, або системні користувачі apache або nobody), швидше за все, злом стався внаслідок витоку пароля або вразливість у коді сайту.
Як «вилікувати» сайт
Після виявлення вірусів:я вирусов:
-
Обновіть CMS сайту і всіх модулів/плагінів, так як через дірки (уразливості) вірус часто і потрапляє не сайт.
-
Змініть паролі для всіх (!) користувачів сайту та всіх облікових записів, які стосуються сайту (доступ до FTP-сервера, панелі керування хостингом тощо). Є ймовірність, що вірус зміг впровадити своїх користувачів у базу даних і вже цілком легально виконує будь-які шкідливі дії.
-
Видаліть всі можливі шкідливі файли. Це можна робити як при ручному редагуванні файлів, так і з використанням скриптів, які видалять файли і не порушать структуру сайту.
-
Обмежте доступ до всіх каталогів сайту.
Крайні заходи
Якщо «вилікувати» сайт все ж таки не вийшло, доведеться розвернути його з резервної копії. Робите копії щодня? Тоді великих проблем таке розгортання не завдасть. А от якщо з часу останнього копіювання минули дні або навіть тижні – біда, втрата важливих змін майже неминуча.
Профілактика
Найкраще лікування – це профілактика. Щоб мінімізувати ризик злому:
- Перевіряйте сайт та віртуальну машину на віруси.
- Обмежте доступ до веб-сайту. У кожного співробітника повинен бути той рівень доступу, який потрібен йому для виконання роботи.
- Ніколи не користуйтесь логіном та паролем, які дісталися вам за замовчуванням. Ретельно вибирайте пароль, використовуйте всі допустимі символи та їх варіації.
- Обмежте кількість спроб авторизації користувача.
- Заздалегідь подбайте про регулярне резервне копіювання.
- Встановіть плагіни, які дозволяють убезпечити сайт від зломів, наприклад WordFence для CMS WordPress та аналоги для інших CMS.
Але найголовніше правило – довіряйте керування сайтом лише професіоналам.
Висновки
Зламаний сайт ще не вирок. Ситуацію можна виправити навіть у найбільш занедбаних випадках. Але профілактика завжди краща за «агресивне» лікування. Тому рекомендуємо дотримуватися елементарних правил безпеки ще до того, як зловмисники зазіхають на ваш сайт. Ну, а для швидкого завантаження сайту та надійної роботи подбайте про якісний хостинг як для невеликих, так і для масштабних проектів.