Содержание9
- Как понять, что сайт заражён
- Чем заражение бьёт по поиску, клиентам и хостингу
- Откуда на сайт попадает вредоносный код
- Где искать вредоносный код на 1С-Битрикс и других CMS
- Какими сканерами проверить сайт
- После чистки: поиск, Метрика и пользователи
- Как сделать так, чтобы вирус на сайте не вернулся
- Частые вопросы
- Источники
Вирус на сайте — это вредоносный код в файлах, базе или служебных скриптах, а не программа на вашем компьютере. Его выдают чужие редиректы, пометка «опасный сайт», спам-страницы в индексе и письмо хостера. Сначала изолируйте сайт и снимите копию «как есть», затем проверьте файлы и базу, смените пароли и после этого запросите пересмотр в Google и Яндексе.
Как понять, что сайт заражён
Чужой магазин вместо главной, редирект на посторонний домен или предупреждение браузера — повод проверить сайт. Вредоносный код может находиться в файлах, базе данных, .htaccess, cron-задачах или разметке. Компьютер владельца при этом может быть чистым.
В базе Безопасного поиска Яндекса указаны более 680 тысяч заражённых сайтов и 5,4 миллиона страниц. Эти цифры приведены в материале Яндекса для вебмастеров.
Проверьте сайт по нескольким признакам:
- неожиданный редирект с главной или внутренних страниц;
- предупреждение Google Safe Browsing или браузера;
- спам-страницы в поиске по запросу
site:вашдомен; - неизвестный скрипт в коде страницы;
- письма клиентов о спам-рассылке с вашего домена;
- уведомление хостера о вредоносных файлах или ограничении доступа;
- сообщение Яндекс.Вебмастера о заражении.
Откройте сайт с телефона и компьютера: подмена может затрагивать только часть посетителей. Затем проверьте поисковую выдачу, Яндекс.Вебмастер, Search Console, почту домена и панель хостинга.
Медленная загрузка или одиночный флаг онлайн-сканера сами по себе заражение не доказывают. Если одновременно появились редирект, предупреждение браузера и сообщение хостера, считайте ситуацию инцидентом: сначала ограничьте доступ к сайту и сохраните копию.
Чем заражение бьёт по поиску, клиентам и хостингу
Вредоносный код может подменять страницы и добавлять спам в поисковый индекс. Предупреждение браузера о вредоносном сайте отталкивает посетителей ещё до перехода. Яндекс.Вебмастер также может сообщить о проблеме.
Клиенты увидят чужую витрину или предупреждение и могут отказаться от заявки. Если под угрозой оказались данные из формы или личного кабинета, доверие восстановить сложнее, чем работу сайта.
Хостинг может ограничить доступ к заражённой площадке. Спам-рассылка с домена тоже создаёт проблемы: письма могут хуже доходить до адресатов.
Для магазина сначала восстановите безопасность сайта. Пока вредоносный код активен, запуск рекламы на заражённые страницы рискует привести посетителей к предупреждению браузера. Если заражение затронуло только отдельный тестовый стенд, выводы об основном сайте нужно делать после проверки его файлов и адресов.
Откуда на сайт попадает вредоносный код
Частые причины заражения — уязвимости в CMS, теме или модуле, слабые пароли и неизвестные скрипты. Даже если сайт давно не менялся, старые расширения и доступы могут оставаться точкой входа.
Проблемы начинаются, когда устанавливают темы и модули из непроверенных источников. Риск создают и сторонние скрипты, виджеты и счётчики, адреса которых владелец не проверял.
Проверьте, нет ли на сайте:
- заброшенных обновлений CMS, тем и модулей;
- слабых или повторно используемых паролей для админки, FTP и хостинга;
- заражённого компьютера администратора;
- пиратских сборок и неизвестных скриптов в шаблоне;
- других сайтов на одном аккаунте с общими правами;
- чрезмерно широких прав на файлы и каталоги.
Ограничьте права доступа так, чтобы процессы сайта не могли без необходимости менять служебные файлы. Это снижает риск, но не заменяет обновления и проверку учётных записей.
Если у вас статический лендинг без CMS и личного кабинета, советы про плагины к нему неприменимы. Проверьте разметку, DNS и аккаунт хостинга.
Где искать вредоносный код на 1С-Битрикс и других CMS
Проверяйте не только PHP-файлы. Вредоносный код может попасть в базу данных, .htaccess, cron, шаблон или сторонний скрипт. На 1С-Битрикс начните со сравнения ядра, шаблонов и модулей с чистой поставкой.
На 1С-Битрикс проверьте:
- шаблон и
php_interface/init.php, сравнив их с чистой поставкой; - компоненты, модули и пункты меню, которые вы не устанавливали;
- базу данных и файлы
.htaccess; - агенты, cron-задачи и кэш.
На другой CMS проверьте ядро, тему, расширения, служебные файлы и настройки в базе. Посмотрите результаты проверки хостинга, время изменения файлов и расхождения с чистой поставкой. Если ядро или шаблон изменены, сопровождение и разработка на 1С-Битрикс поможет разобраться с причиной.
Какими сканерами проверить сайт
Внешний сканер проверяет открытые страницы и URL. Он не читает базу данных, cron-задачи и файлы, доступные только после авторизации.
| Сервис или сканер | Что проверяет | Что учитывать |
|---|---|---|
| Google Safe Browsing | URL и репутацию домена | Предупреждение может сохраниться после чистки до пересмотра |
| Диагностика Яндекс.Вебмастера | Страницы с точки зрения Безопасного поиска | Проверяйте, не ведёт ли ссылка на заражённую страницу другого сайта |
| Sucuri SiteCheck | Открытые URL | Сервис может не увидеть содержимое за авторизацией |
| VirusTotal | URL или загруженный файл | Отдельные движки могут реагировать на легитимный скрипт |
| AI-Bolit, Imunify и аналоги | Файлы на сервере | Находку нужно сверить с чистой поставкой |
Чистый отчёт внешнего сканера не подтверждает, что на сервере нет вредоносного кода. Сверьте файлы с чистой поставкой и проверьте базу и кэш. Если флаг появился только на минифицированном скрипте, сначала проверьте его происхождение, а не удаляйте вслепую.
Что делать при заражении: порядок действий
Удалять подозрительные файлы на работающем сайте без копии рискованно: можно потерять данные для разбора и оставить другие копии вредоносного кода. Действуйте по порядку.
Ограничьте доступ
Покажите заглушку, при возможности временно отключите cron и исходящую почту, ограничьте вход в админку. Согласуйте действия с хостером, если он уже закрыл доступ к CMS.
Сохраните копию
До чистки скопируйте файлы и базу в текущем состоянии. Наличие и срок хранения резервных копий зависят от настроек хостинга, поэтому проверьте их, а не полагайтесь на предположение.
Проверьте файлы и базу
Осмотрите
.htaccess, cron-задачи и кэш. Если есть чистая резервная копия, восстановление из неё обычно проще ручного удаления отдельных фрагментов. Не восстанавливайте копию, заражённую тем же кодом.Закройте точку входа
Обновите CMS, модули и шаблон. Смените пароли хостинга, SFTP, базы и админки, отзовите ключи API и завершите активные сессии.
Проверьте результат
Повторно проверьте файлы и страницы сканерами и средствами хостинга, затем подайте запрос на пересмотр блокировки.
Без чистой копии и при расхождении ядра с поставкой ручная чистка может затянуться. В такой ситуации надёжнее восстановить сайт из проверенных файлов и перенести только нужные данные.
После чистки: поиск, Метрика и пользователи
Запрашивайте пересмотр после повторной проверки файлов, базы и хостинга. Для этого используйте Search Console и диагностику Яндекс.Вебмастера. Срок обработки зависит от сервиса.
После восстановления проверьте спам-адреса и редиректы в выдаче, данные Search Console и Вебмастера, а также цели и источники в Метрике. У интернет-магазина дополнительно проверьте фиды, карточки товаров, локальные страницы и уведомления клиентам о заказах.
Если есть основания считать, что могли утечь персональные данные, оцените инцидент и определите, нужны ли уведомления пользователям или ведомствам. В такой ситуации привлеките юриста, который изучит обстоятельства и применимые требования.
После инцидента настройте мониторинг изменений файлов, WAF и двухфакторный вход. Включите флаги cookie HttpOnly, Secure и SameSite, если они подходят вашей конфигурации. Эти меры снижают риск повторного заражения, но не дают бессрочной гарантии. Если восстановить ядро и шаблон не удаётся, сравните затраты с разработкой нового сайта для бизнеса.
Как сделать так, чтобы вирус на сайте не вернулся
Слабый пароль и забытые расширения оставляют сайт уязвимым после чистки. Проверяйте все возможные точки входа, а не только тот файл, который обнаружил сканер.
Устанавливайте темы и модули из проверенных источников, обновляйте CMS и расширения. Храните пароли в менеджере, используйте разные пароли для панели, CMS и базы и включите двухфакторный вход. Подключайтесь к серверу по SFTP и изолируйте сайты, размещённые на одном аккаунте.
Настройте мониторинг изменений файлов и храните резервные копии отдельно. Восстановите копию в тестовой среде, чтобы убедиться, что она пригодна.
Если заражение уже есть, оставьте заявку: разберём файлы и базу, сменим доступы и подготовим запрос на пересмотр в поиске.
Источники
- Цепочки заражения сайта в Яндекс.Вебмастере — Блог Яндекса для вебмастеров