Руткит — набор программ и модулей, который скрывает присутствие злоумышленника в системе: процессы, файлы, соединения, иногда целые модули ядра. chkrootkit и rkhunter ищут известные признаки таких наборов, подозрительные файлы и изменения атрибутов. Они не заменяют EDR и не гарантируют чистоту, но дают быстрый сигнал при условии регулярного запуска и понимания ложных срабатываний.

Что именно проверяют

chkrootkit — набор shell-скриптов и небольших утилит. Он сверяет бинарники с известными сигнатурами, ищет подозрительные скрытые каталоги, проверяет сетевые интерфейсы в режиме promiscuous, ищет следы конкретных семейств руткитов и аномалии в /proc. Запуск без аргументов выводит десятки строк, поэтому в норме используют тихий режим.

rkhunter написан на Perl и работает иначе: ведёт базу сигнатур, проверяет свойства файлов (хеши, права, владельца), ищет известные трояны и подозрительные элементы автозагрузки. Отдельный режим сверяет текущее состояние с эталоном, который вы зафиксировали командой —propupd. Оба инструмента работают на пользовательском уровне и плохо видят руткиты, внедрённые в ядро.

Установка

sudo apt update
sudo apt install chkrootkit rkhunter debsums
chkrootkit -V
rkhunter --version

В RHEL, Rocky Linux и AlmaLinux пакеты находятся в EPEL. Устанавливайте их только на свои серверы или на системы, где у вас есть письменное разрешение на проверку. Сканирование чужих хостов без согласия нарушает закон и правила провайдера.

Первый запуск и эталон

Сначала обновите базу rkhunter, затем выполните проверку. Не запускайте —propupd до того, как убедились в чистоте системы: иначе вы зафиксируете хеши уже изменённых файлов и скроете проблему от будущих проверок.

sudo rkhunter --update
sudo chkrootkit -q
sudo rkhunter --check --sk --rwo
sudo tail -n 50 /var/log/rkhunter.log

Ключ —sk пропускает ожидание нажатия Enter, —rwo выводит только предупреждения. chkrootkit с -q печатает лишь подозрительные строки. После разбора предупреждений и подтверждения чистоты зафиксируйте эталон:

sudo rkhunter --propupd
sudo /etc/cron.daily/chkrootkit
ls -l /var/log/rkhunter.log

Эталон придётся обновлять после каждого законного обновления пакетов, иначе rkhunter начнёт ругаться на изменившиеся бинарники. В Debian и Ubuntu это частично автоматизирует APT_AUTOGEN.

Настройка rkhunter

Основной файл — /etc/rkhunter.conf. В нём включают обновление зеркал, задают почту для отчётов и исключения. Исключения нужны для штатных файлов, которые эвристика принимает за подозрительные, но добавлять их нужно точечно и с комментарием, иначе можно скрыть реальную аномалию.

UPDATE_MIRRORS=1
MIRRORS_MODE=0
ALLOWHIDDENDIR=/dev/.udev
ALLOWHIDDENFILE=/etc/.pwd.lock
SCRIPTWHITELIST=/usr/bin/egrep

В Debian настройки cron лежат в /etc/default/rkhunter: CRON_DAILY_RUN, CRON_DB_UPDATE, APT_AUTOGEN и REPORT_EMAIL. Не включайте ежедневный отчёт на адрес, который никто не читает: предупреждения должны попадать к ответственному инженеру.

Если —update не может скачать базы, проверьте сетевой доступ и настройки зеркал: устаревшая база снижает ценность проверки. В закрытой сети разрешите выход к зеркалам или подготовьте локальное зеркало.

CRON_DAILY_RUN="true"
CRON_DB_UPDATE="true"
APT_AUTOGEN="true"
REPORT_EMAIL="root"

chkrootkit на практике

Тихий режим подходит для регулярной проверки, экспертный (-x) показывает, что именно проверяется, а ключ -r указывает альтернативный корень. Последнее важно при проверке с live-носителя: вы монтируете диск только для чтения и сканируете его, не доверяя работающей системе.

sudo chkrootkit -q
sudo chkrootkit -x | less
sudo mount -o ro /dev/sda2 /mnt/rescue
sudo chkrootkit -r /mnt/rescue

Типичные ложные срабатывания — скрытые каталоги Java, файлы в /dev/.udev, иногда символические ссылки в /usr/share. Прежде чем паниковать, проверьте владельца пакета командой dpkg -S и дату изменения файла. Если файл принадлежит пакету и хеш совпадает с эталоном, это не руткит.

Ручная проверка

Сканеры полезны, но не всевидящи. Дополните их проверкой целостности пакетов, прослушиваемых портов, автозагрузки и подозрительных прав. Эти команды не «лечат», а дают факты для разбора.

sudo dpkg -V
sudo debsums -c
sudo ss -tulpn
sudo find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print

dpkg -V покажет изменённые или пропавшие файлы пакетов, debsums -c — несовпадение контрольных сумм. ss перечисляет слушающие сокеты: незнакомый порт на внешнем интерфейсе — повод разобраться. Поиск SUID и SGID файлов полезен, но в обычной системе их много, поэтому сравнивайте с эталоном, а не с пустым списком.

Дополнительно проверьте /etc/ld.so.preload, пользовательские crontab, systemd-таймеры, ключи SSH и недавние входы. Пустой файл preload — норма; наличие незнакомой библиотеки — серьёзный сигнал.

cat /etc/ld.so.preload
sudo crontab -l
systemctl list-timers --all
last -a | head -20

Если предупреждение подтвердилось

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

При подтверждённом рутките исходите из того, что система недоверенная. Изолируйте её от сети, сохраните снимок диска для анализа, а восстанавливайте из проверенного образа. После переустановки смените пароли и ключи, проверьте cron, systemd-юниты, authorized_keys и учётные записи. Удаление файла вручную редко даёт гарантию: злоумышленник мог оставить несколько точек закрепления.

Ограничения метода

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

Регламент проверок

  • Еженедельно: обновление сигнатур, chkrootkit -q, rkhunter —check, разбор предупреждений.
  • После каждого обновления пакетов: rkhunter —propupd или проверка APT_AUTOGEN.
  • Ежемесячно: сверка списка SUID, портов и автозагрузки с эталоном.
  • Ежеквартально: проверка с live-носителя без запуска доверенной системы.
  • Постоянно: централизованный сбор журналов и оповещения о критических событиях.

Итог

chkrootkit и rkhunter — быстрый способ заметить известные руткиты и подмену системных файлов, но не полноценная защита. Их ценность определяется регулярностью, эталоном и готовностью разбирать ложные срабатывания. Сканируйте только свои системы, храните журналы вне хоста и помните: при подтверждённом вторжении безопаснее переустановить систему, чем надеяться на удаление находки.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте