Лечение сайта от вирусов начинается не с поиска вредоносного кода в файлах, а с диагностики: нужно понять, что случилось, насколько глубоко проблема сидит и что кроме файлов сайта могла задеть - базу данных, задания cron, репутацию домена в поисковике. Если браузер показывает предупреждение о небезопасном сайте, хостинг прислал письмо о вредоносной активности, а в выдаче появилась пометка про угрозу безопасности, разбираться самостоятельно методом проб и ошибок обычно выходит дороже, чем сразу отдать это специалисту. Дальше расскажу, как я строю работу по чистке сайта и от чего в итоге складывается цена.
Как понять, что сайт заражён
Проблему редко находят по чистой случайности - обычно её показывают внешние сигналы, а не собственные наблюдения владельца сайта.
- браузер при заходе на сайт выдаёт предупреждение о небезопасном ресурсе (Google Safe Browsing и похожие списки);
- в выдаче Яндекса или Google рядом с адресом сайта появляется пометка о возможной угрозе безопасности;
- хостинг присылает письмо о вредоносной активности, обычно с именем конкретного файла, и иногда сам приостанавливает сайт до выяснения;
- на страницах появились чужие рекламные блоки, баннеры или всплывающие окна, которых вы не размещали;
- в списке пользователей появились администраторы, которых вы не заводили, с непонятными адресами почты;
- часть посетителей вместо вашего сайта попадает на сторонние ресурсы, при этом с вашего компьютера всё выглядит нормально;
- в индексе поисковика находятся чужие страницы, которых вы не создавали, часто про товары и услуги, никак не связанные с вашей тематикой;
- в админке перестало работать то, что работало вчера: не открывается редактор записи, зависает страница, отваливаются кнопки сохранения;
- резко выросла нагрузка на хостинг или расход трафика без реального роста посещаемости;
- с формы обратной связи приходят письма, которые никто не отправлял;
- сайт уже чистили, а через пару недель всё вернулось в том же виде.
Важная оговорка из практики: не каждый признак из этого списка означает вредоносный код в файлах, и диагноз здесь меняет и лечение, и его стоимость.
На одном оптовом сайте появились рекламные баннеры, которые владелец не ставил. Вредоносного кода там не было вообще: рекламу подключил человек с доступом в админку, а жил этот код в базе данных, а не в файлах. Первая чистка прошлась по файлам, ничего не нашла, и через три недели реклама вернулась одним нажатием кнопки в панели управления.
Другой случай: сайт до меня уже почистили от заражения, а жалоба была на неработающий редактор записей. Заражения в остатках не нашлось, причиной оказался устаревший платный плагин, несовместимый с ядром, которое обновили во время чистки.
Поэтому работа начинается не с чистки файлов, а с диагностики, которая отвечает на два вопроса: что именно происходит и через какую дверь пришли. Ответ на второй вопрос важнее: если её не закрыть, любая чистка отменяется за сутки.
Где обычно сидит проблема на разных платформах
Причина почти всегда одна из двух: устаревший компонент с известной дырой или доступ к админке, который получили посторонние. А вот выглядит это по-разному в зависимости от системы.
WordPress
Самый частый вход - подбор пароля к странице входа, и подбирают его не десятками попыток в день, а тысячами, пользуясь штатными механизмами, которые упаковывают много попыток в один запрос. Дальше в системе появляются администраторы, которых владелец не заводил, а посторонний файл кладут в папку плагинов и называют похоже на известный плагин, чтобы он не бросался в глаза в списке. Отдельная история - плагины резервного копирования и миграции: они сами по себе не дыра, но у них есть ключи, которыми удобно закрепиться, если админка уже потеряна.
OpenCart
Здесь особенно часто источник живёт не в файлах, а в базе: модификации, правки шаблонов, сделанные из админки, и настройки, куда можно дописать посторонний код в хвост к коду счётчика аналитики. Отсюда типичная ситуация, когда сайт почистили по файлам, а через пару недель всё вернулось: достаточно было одной кнопки в панели управления. Вторая частая находка - забытый в корне сайта файловый менеджер или панель работы с базой, доступные из интернета без пароля.
1С-Битрикс
Смотреть нужно в точки автозапуска, то есть в файлы, код которых выполняется на каждом обращении к сайту, в планировщик задач и в обработчики событий: закрепиться удобнее всего именно там, потому что такая задача может раз в сутки возвращать удалённое. Плюс типичная гигиена, которая заражением не является, но дверь открывает: оставленные в корне отладочные файлы с полной конфигурацией сервера и ключи интеграций в файлах, доступных по прямой ссылке.
Самописные сайты на PHP
Самый трудоёмкий случай, потому что нет эталона для сравнения. У систем управления можно сверить файлы с оригинальной сборкой и увидеть изменённое, а в самописном проекте без истории версий и рабочего бэкапа приходится разбирать логику вручную и отличать посторонний код от авторского.
Порядок работ по лечению сайта от вирусов
Работа строится последовательно, и пропускать шаги здесь не стоит - иначе через пару недель всё повторится.
- Диагностика и снятие копии. Перед любым вмешательством я делаю копию сайта и базы в текущем состоянии - если что-то пойдёт не так, всегда есть точка возврата.
- Определение уровня заражения. Проверяю файлы, базу данных, задания cron и настройки, чтобы понять масштаб: одна папка или весь сайт, задета ли база, остались ли скрытые точки, через которые заражение вернётся.
- Чистка. Убираю посторонний код и файлы, восстанавливаю изменённые системные данные до исходного состояния.
- Восстановление работоспособности. Проверяю, что сайт открывается, формы работают, оплата и интеграции не сломаны после чистки.
- Закрытие точки входа. Обновляю CMS, плагины и модули до актуальных версий, меняю пароли и ограничиваю доступ там, где он был избыточным.
- Снятие санкций поисковиков и предупреждения браузера. Отправляю сайт на повторную проверку в Google Safe Browsing и в панели вебмастера, чтобы пометка о угрозе снялась.
- Отчёт по итогам. Фиксирую, что было найдено, что сделано и что стоит поменять в организации доступа на будущее.
Бесплатный материал
🎁 Полезный скрипт в подарок
Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.
Без спама. Отписка в 1 клик.
По срокам ориентир такой: точечная чистка занимает от 3 часов, а если задета база, задания cron или нужно восстанавливать удалённый контент, работа растягивается на несколько дней.
От чего зависит цена лечения сайта от вирусов
Базовая цена на лечение сайта от вирусов и восстановление после заражения - от 15 000 ₽. Дальше сумма растёт в зависимости от объёма работы, а не от того, на какой платформе стоит сайт.
| Фактор | Как влияет на цену |
|---|---|
| Сколько файлов задето | Точечное заражение чистится быстрее, чем сайт, где посторонний код внедрён в десятки файлов и шаблонов |
| Затронута ли база данных и задания cron | Если вредоносный код или задачи прописаны в базе и в cron, диагностика и чистка занимают заметно больше времени |
| Есть ли рабочий бэкап | Чистая резервная копия ускоряет восстановление и снижает риск пропустить скрытую точку входа |
| Насколько устарела CMS и можно ли её обновить | Древнюю версию системы иногда нельзя обновить без риска сломать сайт, тогда чистка совмещается с частичным переносом |
| Нужно ли восстанавливать удалённый контент | Если часть страниц, товаров или файлов была удалена или испорчена, добавляется отдельный этап восстановления |
| Срочность | Первоочередная задача до вечера или выходных требует перестройки моего графика, что тоже закладывается в цену |
Отдельно на цену не влияет ни зона домена, ни тип SSL-сертификата, ни тариф эквайринга - это расходы, которые владелец сайта несёт независимо от факта заражения. На стоимость лечения влияет именно объём и сложность работы с конкретным сайтом.
По моему опыту сайт с точечным заражением на актуальной версии CMS и с рабочим бэкапом обходится ближе к базовой цене. А вот заброшенный сайт пятилетней давности без обновлений, где заражена база и часть контента пропала, требует времени в разы больше - иногда дешевле обсудить с владельцем, не выгоднее ли ему заказать разработку сайта заново, чем latать старую систему до бесконечности.
Профилактика после лечения
После чистки я обычно советую несколько простых вещей, которые снижают риск повторного заражения:
- регулярные автоматические бэкапы, отдельные от хостинга, на котором лежит сайт;
- обновление CMS, тем и плагинов по расписанию, а не по факту проблемы;
- ограничение доступа в админку по IP или хотя бы двухфакторная авторизация;
- для конструкторов - контроль за тем, кто имеет доступ к аккаунту, и периодическая проверка вставленных сторонних скриптов.
Сайт, который никто не обслуживает между заказами, - самый частый кандидат на повторное заражение, поэтому многие клиенты после лечения переходят на постоянное сопровождение.
Частые вопросы
Сколько времени занимает лечение сайта от вирусов?
От 3 часов до нескольких дней. Точечная проблема на одной странице решается за несколько часов, а заражённая база, задания cron и удалённый контент требуют нескольких дней работы.
Можно ли вылечить сайт без бэкапа?
Можно, но диагностика займёт больше времени - без рабочей копии для сравнения приходится анализировать каждый файл и запись в базе отдельно, чтобы отличить вредоносный код от рабочей логики сайта.
Появится ли вирус снова после лечения?
Если закрыть точку входа - обновить систему, сменить пароли, ограничить доступ - риск повторного заражения снижается кратно. Полностью исключить его нельзя, как и в любой области безопасности, поэтому после лечения имеет смысл держать сайт на регулярном обслуживании.
Как быстро снимается предупреждение браузера или пометка в поиске?
После чистки сайт отправляется на повторную проверку в Google Safe Browsing и панели вебмастера. Срок снятия пометки зависит от самого поисковика и от того, насколько быстро он перепроверит сайт, а не только от скорости лечения.