Клиент и контекст проекта
Заказчик — компания с работающим сайтом на 1С-Битрикс, размещённым на VPS-сервере с виртуальной машиной BitrixVM. Сервер обслуживает сторонняя компания-подрядчик, но её зона ответственности ограничена поддержанием работоспособности инфраструктуры сервера как таковой: настройка ОС, веб-окружения, мониторинг ресурсов, резервное копирование. Выявление и ликвидация вредоносного программного обеспечения на уровне файлов и приложений в эту зону не входит — типичное разделение ответственности для российской веб-индустрии.
Все работы по аудиту безопасности, чистке от вредоносного ПО, обновлению ядра Битрикса, поиску и устранению скрытой cron-задачи и послеработающему мониторингу я выполнил лично за 1,5 недели. Обезличивание: домен сайта, название компании-заказчика, название компании-подрядчика сервера и контактные данные в публичной версии кейса не приводятся. Я базируюсь в Москве и работаю с заказчиками из любого региона РФ, СНГ и за рубежом — в данном случае все работы были выполнены удалённо.
Проблема
Клиент обратился с жалобой: VPS-сервер с сайтом на 1С-Битрикс не справлялся с нагрузкой. Симптомы — регулярные зависания, отдача 502 ошибки пользователям, общая деградация производительности. Сайт фактически стал неработоспособным в пиковые моменты. Стандартная перезагрузка сервера помогала временно, но через несколько часов проблема возвращалась.
Почему компания-подрядчик сервера не помогла
Сервер обслуживает сторонняя компания-подрядчик, но её зона ответственности ограничена работоспособностью инфраструктуры: настройки ОС, веб-окружения, мониторинг ресурсов. С точки зрения инфраструктуры — сервер был в порядке: CPU не перегружен, память не исчерпана, диск не заполнен. Проблема была не на уровне инфраструктуры, а на уровне приложения: вредоносное ПО внутри файлов сайта. Выявление и ликвидация такого ПО — отдельная задача, которая не входит в стандартный контракт на администрирование сервера. Клиент обратился ко мне как к специалисту по безопасности Битрикс-проектов.
Симптом, который указал на вредоносное ПО
При первичном осмотре логов и процессов сервера стало ясно, что нагрузка создаётся не легитимным трафиком, а фоновыми процессами внутри сайта — типичный признак заражения. Дальнейшая проверка файловой системы выявила файлы, которые загружали вредоносный код и создавали паразитную нагрузку на PHP и MySQL.
Ложный след: удаление файлов не помогало
Первое, что было сделано — удаление найденных вредоносных файлов. Казалось бы, проблема решена. Но через некоторое время вредоносные файлы вернулись на сервер, и симптомы возобновились. Это означало, что у нас есть автоматический источник, который сам загружает вредоносный код обратно — и до его обнаружения любая чистка бесполезна. Это классический сценарий скрытого бэкдора, но в данном случае «бэкдором» была не уязвимость в коде, а запланированная задача в cron.
Три корневые причины проблемы
После полного аудита сервера я выявил три взаимосвязанные причины, действовавшие одновременно. Устранение любой одной из них не давало результата — нужно было закрыть все три.
| Корневая причина | Описание |
| Загруженные вредоносные файлы | На сервере были файлы, загружавшие вредоносный код. Удаление этих файлов давало временный эффект, но проблема возвращалась. |
| Уязвимость в ядре Битрикса | Сайт давно не обновляли, и в установленной версии ядра имелись критические уязвимости, позволяющие внедрять вредоносный код. |
| Скрытая cron-задача | В планировщике задач сервера была обнаружена cron-задача, которая периодически самостоятельно загружала вредоносные файлы обратно на сервер. Это и было источником рецидивов. |
Решение
Все работы я выполнил лично за 1,5 недели. Подход — методичный: сначала найти все корневые причины, затем закрыть каждую, после чего — обязательный мониторинг для подтверждения, что проблема больше не возвращается. Без мониторинга работа не считается завершённой — особенно в случаях с вредоносным ПО, где рецидивы возможны через несколько дней.
Этап 1. Полный аудит сервера и файловой системы
- Проведён полный аудит файловой системы сервера — поиск вредоносных файлов, обфусцированного PHP-кода, известных сигнатур вирусов.
- Анализ логов доступа и ошибок: выявление аномальных запросов, подозрительных IP-адресов, нетипичных пользовательских агентов.
- Анализ запущенных процессов и нагрузки: выявление процессов, создающих паразитную нагрузку на CPU и память.
- Проверка целостности ядра Битрикса: сравнение с эталонными контрольными суммами, выявление модифицированных файлов ядра.
- Аудит планировщика задач cron: проверка всех зарегистрированных задач, поиск подозрительных записей.
Этап 2. Удаление вредоносных файлов
- Удалены все найденные вредоносные файлы — те, что загружали вредоносный код и создавали паразитную нагрузку.
- Проверены типичные точки заражения: директория для загрузок, кеш, временные файлы, директории плагинов и шаблонов.
- Удалены следы активности злоумышленников: скрытые административные аккаунты, изменённые системные файлы.
Этап 3. Обновление ядра и плагинов Битрикса
- Обновлено ядро 1С-Битрикса до актуальной версии. Это закрыло критические уязвимости, через которые злоумышленники изначально внедрили вредоносный код.
- Обновлены все установленные плагины и модули до актуальных версий. Устаревшие плагины — типичный вектор атаки.
- Проверена корректность работы сайта после обновления: все ключевые разделы, формы, интеграции.
- Обновление ядра было критически важным: уязвимость в устаревшей версии позволяла злоумышленникам внедрять вредоносный код даже без доступа к серверу — через специально сформированные запросы к сайту.
Этап 4. Устранение скрытой cron-задачи
Это был ключевой шаг, без которого все остальные работы были бы бесполезны. В планировщике задач cron сервера была обнаружена задача, которая периодически — по расписанию — загружала вредоносные файлы обратно на сервер. После удаления этих файлов cron-задача через несколько часов скачивала их снова, и проблема возвращалась.
- Обнаружена и деактивирована скрытая cron-задача, загружавшая вредоносные файлы по расписанию.
- Проверены все остальные cron-задачи — на случай, если есть и другие скрытые задачи.
- Зафиксировано, откуда именно cron-задача скачивала вредоносные файлы — это помогло понять полную картину атаки.
- После деактивации cron-задачи проблема рецидивов прекратилась: вредоносные файлы больше не возвращались на сервер.
Этап 5. Послеработающий мониторинг
- После всех работ проведён мониторинг сервера в течение нескольких дней — для подтверждения, что проблема больше не возвращается.
- Мониторинг включал: проверку нагрузки на CPU и память, проверку логов на наличие подозрительной активности, проверку файловой системы на появление новых вредоносных файлов.
- Мониторинг подтвердил: сервер перестал зависать, 502 ошибка больше не появлялась, вредоносное ПО не возвращалось.
- Только после подтверждения стабильной работы в течение нескольких дней работа была официально завершена и передана клиенту.
Результаты
Все работы выполнены за 1,5 недели. Сервер перестал зависать, 502 ошибка больше не появляется. Сайт работает стабильно даже в пиковые моменты нагрузки. Вредоносное ПО полностью ликвидировано, рецидивов не зафиксировано благодаря устранению всех трёх корневых причин — включая скрытую cron-задачу, которая была источником повторных заражений.
| Показатель | Результат |
| Срок выполнения работ | 1,5 недели |
| Платформа сайта | 1С-Битрикс на виртуальной машине BitrixVM |
| Тип сервера | VPS |
| Кто обслуживает инфраструктуру сервера | сторонняя компания-подрядчик |
| Зона моей ответственности | выявление и ликвидация вредоносного ПО, обновление Битрикса |
| Главная причина рецидивов | скрытая cron-задача, периодически загружавшая вредоносные файлы |
| Симптомы до работ | зависания, 502 ошибки, нехватка ресурсов VPS |
| Симптомы после работ | сайт стабилен, 502 не возвращается |
| Длительность мониторинга после работ | несколько дней для подтверждения отсутствия рецидивов |
Дополнительно клиент получил: обновлённое до актуальной версии ядро Битрикса — теперь сайт защищён от известных уязвимостей; понимание, почему стандартное администрирование сервера не покрывает задачи безопасности на уровне приложения; рекомендации по дальнейшему регулярному обновлению ядра и плагинов, чтобы подобная ситуация не повторилась.
Технологический стек
1С-Битрикс BitrixVM (виртуальная машина) VPS PHP MySQL Cron (планировщик задач) Анализ логов Nginx/Apache Поиск вредоносных сигнатур Мониторинг ресурсов сервера Обновление ядра Битрикс

