Восстановление сайтов после заражения: очистка, защита и работа с поисковыми системами

Взлом · Вредоносный код · Восстановление · Защита · Мониторинг · Яндекс.Вебмастер · Search Console

Восстановление сайтов после заражения: очистка, защита и работа с поисковыми системами

Два сайта клиента на общем хостинге — назовём их Сайт 1 и Сайт 2 — оказались заражены вредоносным кодом и параллельно использовались для скрытой накрутки чужих страниц в поисковой выдаче через robots.txt.

Работа охватила диагностику, очистку файлов, восстановление, защиту от повторного заражения, настройку мониторинга и приведение в порядок данных в Яндекс.Вебмастере и Google Search Console.

2заражённых сайта
5посторонних sitemap
3001ссылка в каждой карте
9568файлов под мониторингом
5 мининтервал проверки

Что обнаружено

Вредоносные файлы

На обоих сайтах найдены посторонние файлы, не относящиеся к дистрибутиву CMS.

Заражённые плагины

Часть установленных плагинов оказалась подозрительной, часть — модифицированной версией официальных.

Пять посторонних sitemap

В robots.txt заражённой версии Сайта 1 прописаны пять чужих карт сайта по 3001 ссылке в каждой — настоящая sitemap_index.xml не указана вовсе.

Чужое подтверждение прав

В Google Search Console обнаружен файл подтверждения прав, не принадлежащий владельцу сайта.

Что сделано

  1. Очистка

    На обоих сайтах найдены и удалены вредоносные файлы. Подозрительные плагины убраны, остальные заменены официальными версиями из репозитория. Перед любыми изменениями исходные файлы и база данных сохранены в резервных копиях.

    Вредоносный код · Плагины · Backup
  2. Восстановление и защита

    Очищенные файлы загружены обратно на сервер. Включён принудительный переход на защищённое HTTPS-соединение, усилены настройки безопасности, завершены все старые сеансы входа в административные панели. Чужой файл подтверждения прав Google удалён, файл владельца сайта сохранён без изменений.

    HTTPS · Права доступа · Сессии
  3. Мониторинг

    Установлен скрипт контроля новых и изменённых файлов, запускается каждые 5 минут через планировщик задач в панели хостинга. Отслеживаются новые файлы и изменение mtime, размера, inode или типа у существующих — включая символические ссылки, хотя их цели скрипт не обходит. Изображения, видео, музыка, CSS и TXT исключены из проверки, чтобы не заваливать уведомлениями по мелочам.

    Отчёт мониторинга файлов

    Отчёты уходят во внешнюю систему мониторинга; токен авторизации не передаётся в аргументах команды. Первый отчёт принят: в базовый снимок вошло 9568 файлов на обоих сайтах, очередь неподтверждённых отчётов пуста. Если изменений нет, очередной запуск ничего не отправляет.

    Cron · Контроль файлов · Уведомления
  4. Работа с Яндекс.Вебмастером

    robots.txt заменён на корректный: закрыта от обхода служебная часть админки, единственной картой сайта указана sitemap_index.xml. Файлы посторонних карт удалены с сервера — проверкой подтверждено, что все пять отдают 404, а штатная карта отвечает корректно.

    В интерфейсе Вебмастера старые карты пока показаны со статусом «ок» и датой последнего скачивания — это данные предыдущего обхода, не текущее состояние. Их обновление ожидается после того, как робот повторно обратится к robots.txt и старым адресам; точный срок Вебмастер не публикует.

    robots.txt · Sitemap · Яндекс.Вебмастер
  5. Работа с Google Search Console

    Посторонние карты сайта проверены, для дальнейшего обхода роботом указана штатная sitemap_index.xml. Чужой файл подтверждения прав удалён, файл владельца сайта сохранён. Обновление поисковых данных наступит после повторного обхода сайта — само по себе удаление посторонних карт не убирает из индекса страницы, которые туда уже попали.

    Search Console · Sitemap · Индексация

Причина заражения

Установить точный способ, которым сайты были заражены, не удалось: журналы доступа веб-сервера отсутствовали, логирование на сервере было отключено ещё до начала работ.

Без журналов нельзя доказательно назвать конкретную уязвимость, скомпрометированный пароль или заброшенный плагин, через который произошло заражение — версия «наверное, вот через это» осталась бы гипотезой, выданной за факт. Вместо гадания закрыты все найденные точки, через которые заражение могло повториться, и включён мониторинг файлов, который заменяет отсутствующие журналы контролем на будущее.

Текущий статус

Сайт 1

Работает в штатном режиме, под контролем мониторинга файлов.

Сайт 2

Файлы очищены, но для полноценного восстановления не хватает базы данных — её резервной копии на сервере не оказалось, и без неё сайт не поднять.

Что использовано

Диагностика и очистка Файлы — сравнение с чистым дистрибутивом CMS и плагинов Backup — резервная копия файлов и базы перед правками Плагины — замена официальными версиями из репозитория
Защита и поиск HTTPS — принудительный редирект и сброс сессий Cron — скрипт контроля файлов каждые 5 минут SEO — robots.txt, sitemap.xml, Яндекс.Вебмастер, Google Search Console

Результат

Сайт 1 очищен, защищён и работает в штатном режиме под контролем мониторинга файлов. Сайт 2 очищен от вредоносного кода, но ждёт от владельца недостающую базу данных, без которой сайт не восстановить. В обеих поисковых системах убраны посторонние карты сайта и чужие файлы подтверждения прав, вместо них указана штатная sitemap_index.xml и сохранён файл владельца; дальнейшее обновление данных в выдаче зависит от сроков очередного обхода робота, а не от подрядчика.

Очистка от вирусов · Восстановление после взлома · robots.txt · sitemap.xml · Яндекс.Вебмастер · Google Search Console · Мониторинг файлов · HTTPS · Безопасность