Пару недель назад заметил странную штуку с одним из моих серверов под Linux. Он перестал отвечать, при чем и на http, и на ssh, и на ping. Ну, я его перегрузил и забыл об этом.
Пару дней все было нормально, а потом он опять перестал отвечать. И главное, не зайти и не посмотреть – ssh-то тоже лежит. Видимо что-то отжирает канал, или CPU, или память, но как понять что, если нельзя законнектится?
Что я с этим делал и в чем оказалась проблема читайте дальше.

Я подождал пока свервер начал тормозить, но все еще отвечать на запросы(проверял раз в час, в течении двух дней) и в этот момент залогинился по ssh. Попробовал сделать top – ничего особенного, загрузка CPU порядка 1%, памяти используется 2%. Больше я ничего посмотреть не успел, потому как коннекшен отвалился. Но судя по тому что я увидел – проблема была в нетворкинге. Я написал cron таску, которая выполняла netstat и его результаты писала в лог файл. Опять дождался пока сервер отвалился – перегрузил. Смотрю лог там тоже все нормально. В чем же дело?

Сделал ps aux. Начал перебирать все процессы, благо их там не так и много: вебсервер apache, mysql база, ну и еще пара вещей в таком духе, ничего особенного. О! А это еще, что /boot/.IptabLes и /boot/.IptabLex. Я этого не заказывал. Сначала я решил, что IptabLes – это процесс netfilter/iptables(линуксовый файрвол), но немного погуглив, я выяснил, что iptables не отображается, как отдельный процесс(поскольку является частью ядра). И в любом случаи, что за IptabLex? И что они оба делают в моей boot папке? Я их точно туда не ставил. Погуглив еще немного на эту тему я нашел вот это – единственное упоминание этих файлов. Проблема в том, что по-китайски я не очень понимаю. И даже с гуглтранслетом, ни в русском переводе, ни в английском мне полностью понять написанное не удалось(уж очень корявый выходил перевод). Хотя основная идея понятна и без перевода: это вирусло, живет оно в /boot/.IptabLes, /boot/.IptabLex и /etc/rc.d/init.d/IptabLes, /etc/rc.d/init.d/IptabLex(обычно, вместо /etc/rc.d/init.d/ на большинстве инсталяций Linux это просто /etc/init.d/), лечится очень просто – удалить эти файлики и ребутнуть. Единственное, что могу к этому добавить, у меня IptabLes, IptabLex в папе /etc/init.d/ не было, а лежали они все там же в boot.
rm -rf и ребут помогли, но не на долго – процессы эти понятное дело погрохались, но через какое-то время опять появились вместе с файлами. Как выяснилось позже, эти процессы были не единственными. Они порождали еще кучку процессов с рандомными именами, которые перезапускали родительские процессы в случаи если те стопались. Я погрохал и их, но и это не все. Оказалось, что они еще прописывались в cron, добавляя туда кроме себя еще и несколько сотен строк комментариев(чтоб не так бросалось в глаза). Задачи cron проверяли наличие этих файлов и в случаи отсутствия выкачивали их и запускали. Сами же процессы, проверяли свою запись в cron и при необходимости ее добавляли. Таким образом вирусняк не убивался просто удалением файлов или выпиливанием его из cron'a. Но почистив cron вместе с /etc/init.d/ и /boot/ удалось его грохнуть. После ребута упомянутые выше процессы больше не появлялись, а сервер перестал тупить. Так что вобщем, все благополучно.

Вот в целом и вся история. Я честно говоря думал, что она выйдет подлиннее – все это заняло около недели. Как бы там ни было, надеюсь, кому-то еще это пригодится, хотя, конечно, всем желаю такого не ловить. Спасибо за внимание. Удачи.
0

Читайте также

Комментарии

Для того, чтоб оставлять комментарии или зарегистрируйтесь.