Как определить, что сервер взломан?

Доброго дня, коллеги.

Несколько дней назад у меня произошел неприятный случай.
На арендуемой VPS появились признаки взлома. Дважды. В частности RKhunter сказал что кое-что поменялось.

Ситуация осложняется тем, что взлом сеовера (на мой взвгляд) не мог произойти снаружи. Есть основания предполагать, что это произошло из хост машины.

Итак, начнем с момента, когда я переустановил систему из образа, рассудив что чем вычищать последствия, проще все сжечь и отстроить заново. В этот момент началось самое интересное. За промежуток времени максимум 5 часов произошел повторный взлом. На этот раз это подтвердили аж 4 теста: rkhunter, tripwire, md5 -c по предварительно сделанному эталонному файлу, плюс сравнение md5 зараженных и переустановленных файлов.

На тот момент системы выглядела следующим образом:
Все пакеты обновлены.
sshd настроен только на авторизацию по ключам и только на работу оп 2 версии протокола. Доступ root через ssh запрещен.
установлен и настроен nginx, php-fpm, mysql. Веб сервер показывал два сайта на последней версии wordpress.
/var и /tmp были смонтированы с noexec.

Собственно наружу торчали только nginx, mysql и ssh. Все последних версий, все запущенны от собственных непривилегированных пользователей.

И вот здесь начинается самое интересное. Поменянными оказались 600+ файлов в каталогах /bin, /usr/bin, /sbin, /usr/sbin.
Набор стандартный — ps, ls, lsmod и все такое прочее, что бы скрыть руткит. НО, все эти файлы может поменять только супер пользователь. Я стал думать, даже если в приложениях нашли 0-day exploit и через него попали в систему, как-то обошли noexec, то подняться до суперпользвоателя можно было только одним способом — через уязвимость в ядре.
Я посмотрел версию ядра (хостер использует openvz, поэтому поменять его возможности не было).
Оказалось так: 2.6.18-308.el5.028stab099.3

На сколько я понимаю для 2.6.18 есть куча эксплоитов. Плюс сами ребята из openvz говорят что данную версию ядра больше не поддерживают… где-то причем 3 года уже. (http://wiki.openvz.org/Download/kernel/2.6.18 This page was last modified on 22 October 2009, at 17:57.)

Я пишу хостеру и говорю «Может быть стоит провериться? Я ведь у вас не единственный клиент. Да и вообще пора бы обновиться»

На что получаю ответ «У нас все хорошо, а у вашей системы нет признаков взлома. изменение размера файлов и чексум — не показатель».

Этот разговор длился с разной степенью активиности около 10 дней. Есть логи :)

Сейчас вроде бы и особого смысла переустанавливать систему нет. Если взломан хост — я думаю в 0:00 он проверят нет ли свежих незараженных контейнеров и исправляет ситуацию (по времени вышло примерно так).

Даже если взломан не хост — версия ядра тоже печалит. Это отлично позволит повторитьвзлом (что и произошло почти сразу после первой переустановки).

Собственно вопросы:

1. Может ли быть так, что системные файлы поменялись сами собой?
2. Является ли такое изменение, подтвержденное 4 разными способами, доказательством взлома?
3. Если взломана хост-машина — как правильно поступить? Кроме моих проблем есть ведь еще и проблема с тем, что другие пользователи не в курсе.
4. Возможно я где-то ошибся и не прав и зря поднимаю панику, обвиняю ребят.

Для объективности — www.habrastorage.com/images/colobrchc.png

P.S. Если вдруг так совпало, что у нас с вами один хостер — проверьте систему… мало ли что :)
  • Вопрос задан
  • 6648 просмотров
Пригласить эксперта
Ответы на вопрос 6
ProstoTyoma
@ProstoTyoma
Можно попробовать отправить подозрительные файлы на virustotal. У меня порченные руткитом файлы определялись как зараженные.
Ответ написан
dgeliko
@dgeliko
А lsattr на измененные файлы что показывает? Обычно после замены файлов, которые призваны скрывать руткиты, на них навешиваются аттрибуты, чтоб при обновлении/переустановки пакетов эти файлы не менялись.
Ответ написан
z0rc
@z0rc
Кстати, у вас там часом prelink не стоит? Это скорее всего он по бинарным файлам прошёлся.
Ответ написан
Комментировать
sherbacov
@sherbacov
Почему вы не хотите перейти на хардварную виртуализацию? Экономия? Зато сколько времени потеряно.

У Вас сейчас хостер может перейти к вам в контейнер командой vzctl enter и ваши ключи ему не нужны, данный вход даже записан не будет.

1. Может ли быть так, что системные файлы поменялись сами собой?
Системные файлы сами поменяется не могли, если у вас в кроне не было yum -y update.
Смотрите логи /var/log/yum.log

2. Является ли такое изменение, подтвержденное 4 разными способами, доказательством взлома?
Нет не является.

3. Если взломана хост-машина — как правильно поступить? Кроме моих проблем есть ведь еще и проблема с тем, что другие пользователи не в курсе.
Менять систему виртуализации, а не экономить.
Ответ написан
z0rc
@z0rc
lkml.org/lkml/2011/9/30/425 Там про проверку не только целостности установленных пакетов, но и их подписей. Ну, и ещё немного всякого.
Ответ написан
Комментировать
@ggagnidze Автор вопроса
Prelink стоит
Хэши в интнете не нашлись :(

Накатил систему заново. Поставил растяжки, сделал снимок системы. Ждем.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы