«Он работал, а сегодня слетел»

Примерно с такой фразы клиента началась работа над этой задачей.

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

Нагрузка на процессор была под 400% - очевидно, что это не нормальная история. Но любопытнее всего то, что она уже давно такая. Проверяем дальше и не торопимся делать поспешные выводы, так как с проектом мы не были знакомы и не знали еще как там внутри устроено и работает.

Бывает, что какой-то большой процесс был запущен и не остановился, поэтому грузит в фоне систему. Может быть, у них какой-то обмен в фоне стоит и скрипты просто написаны таким образом, что не выдерживают большие объемы?

Когда залезли в процессы, утвердились в мнении, что все-таки это подозрительный экшен. Более того он как снежный ком, нагребал все больше и больше ресурсов сервера. Сам сайт никакой особой нагрузке не оказывал, он относительно небольшой и получается клиент оплачивал сервер, мощности которого кто-то сторонний использовал для себя.

Лечим от трояна miner ./top

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

В ситуации, когда сайт заражен вирусом или трояном, важной проверкой является уточнение версии системы Битрикс. В текущем проекте версия ядра была старой и последние обновления были сделаны больше года назад. Это одна из причин почему сайт вообще был заражен, так как разработчик CMS постоянно улучшать систему безопасности и если ее не обновлять, то сайт становится решетом с кучей дыр в безопасности.

К примеру, была выявлена критичная проблема в модуле голосования (vote) в Битриксе, разработчики поправили эту проблему и выпустили обновления. Кто не обновил ядро своего сайта вовремя, словили трояна.

Возникает вопрос, а кто за этим должен следить?

Конечно компания, которая осуществляет вам техническую поддержку и сопровождение. А если вас не обслуживают на постоянной основе, то очень важно, хотя бы раз в год обращаться самостоятельно и делать условное ТО сайта. Это как с автомобилями. Такое ТО выходит не дорого в сравнении с возможными поломками и вытекающими потерями, если этого не делать.

Возвращаемся к нашему «коню». Нашли его - зараженные файлы и запущенный в crontab процесс. Проводим стандартные процедуры «лечения» и смены паролей доступа.

Профилактика будущих заражений

После этого важно провести обновление всех модулей и запустить диагностику состояния безопасности стандартными средствами Битрикс.

В данном проекте оказалась еще старая версия PHP, поэтому пошли сначала обновлять ее. Так как тут в основе стоит BitrixVM заходим в меню управления для обновления пакетов, но получаем ошибку. Пытаемся обновить пакеты ОС Centos 7 и тут тоже не получается, и система выдает ошибку.

Оказывается, репозиторий mirrorlist.centos на текущий момент отключен, полагаем это связано с тем, что поддержка Centos 7 закончилась как устаревшей версии. Меняем репозиторий на vault.centos и успешно обновляем пакеты - сначала ОС, потом запускаем процессы обновления в BitrixVM.

Теперь остается финишная прямая. Проводим сервисные работы по обновлению ядра Битрикса, переходим полностью на PHP 8, проверяем не сломалось ли что-то на сайте. Конечно, сломалось – так как 8-ка стала более строгой ко многим деталям, лезем в код прошлого разработчика и исправляем все выявленные ошибки в публичной части сайта.

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

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

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

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

Резюме

Из опыта можем сказать, что чем реже проводится обслуживание сайта, тем больше он накапливает мусора, устаревающих компонентов и, как следствие, в нем начинают обитать нежеланные персонажи в виде вирусов, троянов и прочей нечести.

Будьте здоровы и обращайтесь к нам за поддержанием чистоты на сайтах и их лечению