Как удалить вирус с сайта

12 Февраля 2018

Компьютерные вирусы научились поражать в том числе и сайты. В этой статье мы рассмотрим, как удалить вирус с сайта и как не допустить его заражение.

Как вирус появляется на сайте

Прежде, чем мы расскажем о том, как удалить полностью вирус с сайта, вы должны понять, как они туда попадают. Инфицирование виртуального ресурса говорит только об одном - наличие какой-либо уязвимости. Другими словами, ваша задача - не только найти и удалить вирусы с сайта, но и устранить уязвимость, благодаря которой он попал на веб-страницы. О поиске уязвимостей мы еще поговорим, а теперь приступим к удалению вируса. 

Если вам повезло…

Резервные копии на платформе xelent.cloud делаются с глубиной 7, 14, 21 и 28 дней (то есть будут храниться копии за последние 7, 14, 21 и 28 дней соответственно). Если вам повезло, вы быстро заметили работу вредоносного кода, то вам не придется думать о том, как удалить вирус с сайта. Вы можете восстановиться из резервной копии, где еще нет вредоносного кода. Например, если вчера было все хорошо, а сегодня ресурс был инфицирован (вы это увидели, например, по всплывающему окну на веб-страницах или по перенаправлению на другие ресурсы, или же вообще обнаружили изменение главной страницы), то самое простое, что можно сделать - восстановиться из резервной копии. 

Резервное копирование xelent

Рис. 1. Конфигурация резервного копирования: резервное копирование с глубиной в 7 дней для сервера с диском на 20 Гб обходится всего в 60 рублей в месяц. 

Понятно, что чем выше глубина резервного копирования, тем больше шансов на восстановление. Конечно, все материалы, которые были внесены с момента создания выбранной резервной копии, будут потеряны. Но это меньшее из зол. Материалы, как правило, есть на компьютере, так что их можно быстро восстановить при необходимости. 

Для восстановления из резервной копии перейдите в панель управления, выберите сервер, перейдите в раздел Backup, перейдите на вкладку Восстановить из копии и выберите интересующую вас резервную копию (рис. 2). Включите флажок и нажмите кнопку Восстановить для начала процесса восстановления. 

Выбор резервной копии

Рис. 2. Выбор резервной копии для восстановления

Если восстановленная резервная копия оказалась "чистой" (то есть в ней нет вируса), вам повезло. Однако "исцеление" веб-ресурса - это только половина пути. Нужно еще найти уязвимость и закрыть ее. 

Более сложный случай

А вот если резервное копирование было выключено или же вирусное приложение на ресурс попало давно, то при восстановлении из резервной копии восстановится и вредоносный код. В этом случае перед тем, как целиком удалить вирус сайта, придется искать его вручную. 

Опять-таки, можно запустить какой-либо антивирусный сканер. В Windows можно запустить предпочитаемый вами антивирус (например, тот же CureIt). Если у вас Linux, то перейдите в каталог с документами веб-сервера (htdocs) и запустите его командой:

clamscan -r -i

Если антивирус clamav не установлен, то установите его (команды для Ubuntu):

sudo apt install clamav
sudo freshclam

Первая команда устанавливает антивирус, вторая - обновляет его базы.

На рис. 3 показан отчет антивируса clamav. Найден файл с вирусным ПО. Таких файлов может быть много. Не спешите удалять вирусы с сайта: их нужно проанализировать. Если есть возможность (если исходный код не зашифрован), изучите исходный код, чтобы понять, как работает вредоносная программа. Если в программировании вы ничего не понимаете или исходники зашифрованы, то просто переместите эти файлы в другой каталог файловой системы для их дальнейшего анализа специалистами. Также определите, какие файлы относятся к веб-страничкам (которые были в комплекте вашей CMS), а какие - новые. 

Отчет антивируса ClamSV

Рис. 3. Отчет антивируса ClamSV

Если облака для вас
не просто теория
Широкий спектр услуг
по выделенным северам
и мультиклауд-решениям
Конфигурация VPS и бесплатный тест уже через 2 минуты
Организация вашей IT-инфраструктуры на основе мультиклауд-решения

Если файлы относятся к CMS, то придется повозиться перед тем, как удалить вирус с сайта, т.к. их ликвидация нарушит нормальную работу ресурса. Нужно проверить их на наличие стороннего кода, а сделать это можно путем их сравнения с оригинальными файлами из дистрибутива CMS, и удалить этот код. В Windows для этого можно использовать программу WinDiff, в Linux - использовать команду diff.

Нужно понимать, что само по себе наличие файлов с вредоносным ПО (как изображено на рис. 3) еще ничего не означает. Удалить вирусы с сайта, просто ликвидировав его, не получится. Нужно понять, какой код вызывает эти файлы. Возможно, он скрыт в базе данных или в других файлах вашего проекта. Чтобы полностью удалить вирус с сайта, нужно понимание принципов работы используемой CMS. 

Понять, как работает вредоносная программа и как она заражает ресурсы, можно, прочитав ее описание в Интернете. Название вирусного софта сообщит вам антивирус. Какие-либо рекомендации об удалении вируса с сайта привести сложно, поскольку они индивидуальны и зависят от используемой CMS и от самой вредоносной программы, конечно же.

Поможет также и исследование исходного кода после инфицирования в браузере. Зайдите на ресурс и откройте его исходный код. Если вы хоть что-то в этом понимаете, вы обязательно заметите лишний код, которого не должно быть. Ликвидировав его, удалить вирусы с сайта не получится. Затем ваша задача - определить, что генерирует этот код. Возможно, это какой-то PHP-сценарий, а может код содержится в базе данных. Многие веб-ресурсы хранят в базе данных контент, который отправляется в браузер. Вредоносные программы могут добавить к этому контенту JavaScript-код, который и будет производить всякие неприятные действия вроде отображения какой-то заставки. Если своими силами удалить полностью вирус с сайта не получается, вы всегда сможете обратиться к специалистам xelent.cloud, которые за дополнительную плату помогут вам исправить ситуацию. 

Предохраняемся

Некоторые рекомендации, позволяющие избежать появления вирусов на сайте:

  1. Включите резервное копирование с максимальной глубиной 28 дней. При наличии резервной копии можно не удалять вирусы с сайта, а просто откатить веб-ресурс в состояние до заражения. 
  2. Регулярно меняйте пароли для доступа к сайту: пароли FTP-пользователей и пароли для доступа к панели управления CMS.
  3. Регулярно применяйте всевозможные обновления CMS, особенно патчи безопасности. Некоторые из них таких дополнений сами удалят вирус на сайте, а другие закроют имеющиеся уязвимости. Определенные CMS уведомляют о новом обновлении в панели управления, а некоторые - нет. Поэтому нужно подписаться на сайте разработчиков на рассылку информации о наличии обновлений. 
  4. Раз в месяц сканируйте свой сайт на наличие уязвимостей. Желательно использовать специализированные для вашей CMS сканеры, например, MageReport для Magento. Если для вашей CMS нет специального сканера, можно использовать универсальный. Но в этом случае его эффективность будет ниже, так как он "не знает" об особенностях именно вашей CMS. Универсальных сканеров, которые ищут уязвимости и иногда удаляют вирусы с сайтов, много, поэтому рекомендовать какой-либо не будем. На рис. 4 показан отчет сканера MageReport.
  5. Ограничьте доступ к панели управления CMS только своему IP-адресу. Для этого в .htaccess внесите необходимые изменения. 
  6. Установите правильные права доступа к файлам и каталогам веб-ресурса. 

Найдена уязвимость

Рис. 4. Найдена уязвимость: не применен один из патчей безопасности

С четырьмя пунктами все относительно понятно. Ограничить доступ к панели управления веб-ресурсом можно, добавив в файл .htaccess следующие строки:

<Files wp-login.php> 
order deny,allow 
deny from all 
allow from ваш_ip
</Files>

Здесь мы предполагаем, что используется CMS WordPress и мы закрываем доступ к wp-login.php всем пользователям, кроме тех, кто пришел с указанного IP-адреса. Если у вас динамический IP-адрес, то указывайте его не полностью, например, 192.168.1. Если нужно указать несколько IP-адресов, укажите их через пробел.

Какие права доступа считаются правильными? Во-первых, нужно, чтобы все файлы и каталоги принадлежали пользователю, от имени которого работает ваш веб-сервер. В Linux веб-сервер Apache часто настраивается так, что работает от имени пользователя www-data, поэтому перейдите в каталог документов веб-сервера (htdocs) и введите команду:

chown -R www-data:www-data .

Данная команда рекурсивно меняет владельца всех файлов и каталогов сайта на www-data. 

Во-вторых, нужно использовать рекомендации конкретной CMS относительно установки прав доступа. Как правило, на все каталоги, в которые не предусмотрена запись, нужно установить права 500, а на все файлы, изменение которых не планируется - 400:

find . -type f -exec chmod 400 {} \;
find . -type d -exec chmod 500 {} \;

Для файлов и каталогов, которым необходим доступ "чтение запись" (600 и 700 соответственно) для обеспечения нормального функционирования виртуального ресурса (каталоги, в которые загружаются служебные данные, изображения и т.д.), нужно изменить права так:

find var/ -type f -exec chmod 600 {} \; 
find media/ -type f -exec chmod 600 {} \;
find var/ -type d -exec chmod 700 {} \; 
find media/ -type d -exec chmod 700 {} \;

Данные команды приведены в качестве примеров рекурсивного применения тех или иных прав доступа к файлам (-type f) и каталогам (-type d). Не нужно вводить их на своем сервере! Следуйте только рекомендациям разработчиков CMS (как правило, такие есть для каждой CMS, но пользователи начинают их соблюдать, когда случается что-то плохое) и устанавливайте права доступа так, как сказано в этих рекомендациях. 

Надеемся, что данная статья поможет вам не только удалить вирус с сайта, но и не допустить его появления. 

Возможно, вас также заинтересует:

Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent