«Он работал, а сегодня слетел»
Примерно с такой фразы клиента началась работа над этой задачей.
Конечно, причин такого падения было много и без диагностики никак не обойтись – с нее мы и начали погружения в эту «кроличью нору».
Нагрузка на процессор была под 400% - очевидно, что это не нормальная история. Но любопытнее всего то, что она уже давно такая. Проверяем дальше и не торопимся делать поспешные выводы, так как с проектом мы не были знакомы и не знали еще как там внутри устроено и работает.
Бывает, что какой-то большой процесс был запущен и не остановился, поэтому грузит в фоне систему. Может быть, у них какой-то обмен в фоне стоит и скрипты просто написаны таким образом, что не выдерживают большие объемы?
Когда залезли в процессы, утвердились в мнении, что все-таки это подозрительный экшен. Более того он как снежный ком, нагребал все больше и больше ресурсов сервера. Сам сайт никакой особой нагрузке не оказывал, он относительно небольшой и получается клиент оплачивал сервер, мощности которого кто-то сторонний использовал для себя.
Лечим от трояна miner ./top
Да, подтвердилось что это троян. Мы так же запросили информацию в поддержке хостинга. Делаем это всегда в таких ситуациях, так как действия, которые в дальнейшем надо будет предпринять крайне важны и стоит получить подтверждения от стороны хостинга. Более того, там работают максимально компетентные специалисты в вопросах управления и настройки серверов, и они могут подсказать и обратить внимание на важные детали, которые мог упустить наш специалист.
В ситуации, когда сайт заражен вирусом или трояном, важной проверкой является уточнение версии системы Битрикс. В текущем проекте версия ядра была старой и последние обновления были сделаны больше года назад. Это одна из причин почему сайт вообще был заражен, так как разработчик CMS постоянно улучшать систему безопасности и если ее не обновлять, то сайт становится решетом с кучей дыр в безопасности.
К примеру, была выявлена критичная проблема в модуле голосования (vote) в Битриксе, разработчики поправили эту проблему и выпустили обновления. Кто не обновил ядро своего сайта вовремя, словили трояна.
Возникает вопрос, а кто за этим должен следить?
Конечно компания, которая осуществляет вам техническую поддержку и сопровождение. А если вас не обслуживают на постоянной основе, то очень важно, хотя бы раз в год обращаться самостоятельно и делать условное ТО сайта. Это как с автомобилями. Такое ТО выходит не дорого в сравнении с возможными поломками и вытекающими потерями, если этого не делать.
Возвращаемся к нашему «коню». Нашли его - зараженные файлы и запущенный в crontab процесс. Проводим стандартные процедуры «лечения» и смены паролей доступа.
Профилактика будущих заражений
После этого важно провести обновление всех модулей и запустить диагностику состояния безопасности стандартными средствами Битрикс.
В данном проекте оказалась еще старая версия PHP, поэтому пошли сначала обновлять ее. Так как тут в основе стоит BitrixVM заходим в меню управления для обновления пакетов, но получаем ошибку. Пытаемся обновить пакеты ОС Centos 7 и тут тоже не получается, и система выдает ошибку.
Оказывается, репозиторий mirrorlist.centos на текущий момент отключен, полагаем это связано с тем, что поддержка Centos 7 закончилась как устаревшей версии. Меняем репозиторий на vault.centos и успешно обновляем пакеты - сначала ОС, потом запускаем процессы обновления в BitrixVM.
Теперь остается финишная прямая. Проводим сервисные работы по обновлению ядра Битрикса, переходим полностью на PHP 8, проверяем не сломалось ли что-то на сайте. Конечно, сломалось – так как 8-ка стала более строгой ко многим деталям, лезем в код прошлого разработчика и исправляем все выявленные ошибки в публичной части сайта.
В новой версии ядра модуль проверки вирусов и троянов стал встроенным и не требует отдельной установки. С его помощью мы детально изучаем подозрительные файлы, отсеиваем реальные угрозы, которые надо нейтрализовать.
В коммуникации с клиентом, поняли, что ряд модулей сторонних разработчиков уже не используется на сайте. Проверили зависимости. Один из них технический и используется в коде. Его не трогаем, а остальные все удалили полностью, а вместе с ними и половину подозрительных файлов.
Сайт стал уже чистенький, залетал на более высоких скоростях, нагрузка стабилизировалась и полностью соответствует ожидаемой.
В финале мы все-таки прошлись по всем не критичным, но возможным дырам, сделали всю тонкую возможную настройку и с чистой душой передали проект клиенту.
Резюме
Из опыта можем сказать, что чем реже проводится обслуживание сайта, тем больше он накапливает мусора, устаревающих компонентов и, как следствие, в нем начинают обитать нежеланные персонажи в виде вирусов, троянов и прочей нечести.
Будьте здоровы и обращайтесь к нам за поддержанием чистоты на сайтах и их лечению