Обнаружение руткитов в Linux: Инструменты и методы
10 мин чтения - 16 мая 2026 г.

Как обнаружить и предотвратить руткиты Linux с помощью chkrootkit, rkhunter, Auditd, AIDE и поведенческого мониторинга на ваших серверах.
Обнаружение руткитов в Linux: Инструменты и методы для обеспечения безопасности серверов
Руткиты предоставляют злоумышленникам постоянный, скрытый доступ к системам Linux. Они манипулируют операциями ядра, скрывают файлы и процессы и обходят стандартные средства защиты. Некоторые из них остаются незамеченными годами. Для их обнаружения требуется многоуровневый подход, потому что ни один инструмент не улавливает все.
В этой статье мы рассмотрим основные типы руткитов Linux, способы их обнаружения, а также передовые методы мониторинга, которые позволяют выявить то, что не замечают базовые сканеры.
Типы руткитов для Linux
Руткиты работают на разных уровнях привилегий, и чем глубже они сидят, тем сложнее их обнаружить.
Руткиты пользовательского режима работают на уровне приложений (кольцо 3). Они перехватывают динамическую компоновку с помощью LD_PRELOAD для внедрения вредоносных библиотек, которые перехватывают стандартные функции библиотеки C, такие как readdir или fopen, скрывая файлы и процессы от пользовательских инструментов.
Руткиты в режиме ядра работают в кольце 0, загружаясь как загружаемые модули ядра (Loadable Kernel Modules, LKMs). Они перехватывают системные вызовы, манипулируют памятью ядра и скрывают свое присутствие. Поскольку они привязаны к определенным версиям ядра, неправильно настроенный руткит может вызвать панику ядра, что, по иронии судьбы, приведет к его раскрытию.
руткиты на основе eBPF используют подсистему Extended Berkeley Packet Filter для работы в пространстве ядра без загрузки традиционного модуля. Они прикрепляются к крючкам системных вызовов, точкам трассировки или событиям LSM. Стандартные LKM-сканеры их не видят. Boopkit - известный пример концепции, создающей скрытый канал C2 с помощью этого подхода.
руткиты на основе io_uring - самый новый вариант. Они используют асинхронный интерфейс ввода-вывода io_uring для пакетных операций, генерируя меньше наблюдаемых событий системных вызовов. RingReaper, экспериментальный руткит, продемонстрировал, как он может бесшумно заменять такие вызовы, как чтение, запись и подключение, избегая при этом средств EDR.
| Тип руткита | Уровень привилегий | Метод перехвата | Сложность обнаружения |
|---|---|---|---|
| Пользовательский режим | Кольцо 3 (Пользователь) | LD_PRELOAD, перехват библиотеки | Умеренный |
| Режим ядра | Кольцо 0 (ядро) | Таблица системных вызовов, LKM, встроенный хукинг | Высокий |
| на основе eBPF | Кольцо 0 (ядро) | вложение программы eBPF | Очень высокая |
| на основе io_uring | Пользователь/ядро | Асинхронный пакетный ввод/вывод | Очень высокий |
Сканирование с помощью chkrootkit и rkhunter
Два инструмента составляют основу для обнаружения руткитов на серверах Linux: chkrootkit для быстрого сканирования и rkhunter для более глубокой проверки.
chkrootkit
chkrootkit - это сценарий оболочки, который проверяет критические системные двоичные файлы(ls, ps, netstat, sshd, ifconfig) на наличие признаков взлома. Он также обнаруживает неразборчивые сетевые интерфейсы и удаленные журналы. Начиная с версии 0.59 (январь 2026 г.), он может выявить более 75 руткитов, червей и LKM, включая такие новые угрозы, как Linux BPFDoor, Syslogk и XZ Backdoor.
Запускайте ее после любой подозрительной активности. Обращайте внимание на предупреждения от компонента ifpromisc и оповещения об удаленных файлах lastlog или wtmp.
rkhunter
rkhunter идет дальше. Он сравнивает SHA-1-хэши системных двоичных файлов с известными значениями, следит за разрешениями файлов и скрытыми файлами, проверяет конфигурации запуска, а также выполняет анализ ядра и сети.
Настройте его правильно с самого начала:
# Establish a baseline after a clean install or update
rkhunter --propupd
# Update rootkit definitions
rkhunter --update
# Run a full scan (use --novl on production servers to reduce I/O)
rkhunter --check --enable all
Для автоматического ежедневного сканирования установите CRON_DAILY_RUN="true" в файле /etc/rkhunter.conf и используйте параметры --skip-keypress и --report-warnings-only для чистого вывода. Просмотрите журналы в /var/log/rkhunter.log и внесите в белый список подтвержденные ложные срабатывания.
Обнаружение руткитов LKM
Руткиты LKM особенно опасны, поскольку они работают как расширения ядра, перехватывая системные вызовы и скрывая процессы на уровне ядра. Стандартные инструменты вроде lsmod их не видят, но есть способы их обнаружить.
Сравните вывод lsmod со списком /sys/module/. Проверьте системные журналы на наличие подозрительных сообщений ядра:
# Look for out-of-tree module warnings
sudo dmesg | grep "loading out-of-tree module taints kernel"
# Check for module verification failures
grep "module verification failed" /var/log/syslog
# Run chkrootkit's LKM-specific check
sudo chkrootkit lkm
Даже руткиты, которые скрываются от lsmod и /proc/modules (например, Diamorphine), все равно можно найти, проверив /sys/module/diamorphine/coresize или просмотрев предупреждения syslog.
Расширенное обнаружение: Мониторинг поведения и проверка целостности
У статических сканеров есть фундаментальная слабость. В эксперименте 2026 года добавление одного нулевого байта в двоичный файл руткита - изменение, не влияющее на функциональность, - резко снизило количество обнаружений. Обнаружение Diamorphine упало с 33/66 до 8/64 только за счет удаления таблиц символов. Полагаться только на сигнатуры недостаточно.
Анализ поведения
Вместо того чтобы спрашивать "соответствует ли этот файл известному руткиту?", анализ поведения спрашивает "делает ли этот процесс что-то необычное?" Отслеживайте эти сигналы:
- Используйте Auditd для наблюдения за системными вызовами
init_module()иfinit_module(), которые загружают модули ядра независимо от метода. - Отслеживайте вызовы
kill()с сигналами выше 31, которые могут указывать на скрытую связь с руткитом. - Проверьте
/proc/sys/kernel/taintedна предмет несанкционированной активности модулей ядра. - Следите за неожиданными файлами
.soв/tmpили/dev/shm. - Отслеживайте активность eBPF, особенно вызовы
bpf_probe_write_user. Такие инструменты, как BCC, могут отслеживать операции io_uring через такие точки трассировки, какsys_enter_io_uring_enter.
Для руткитов eBPF и io_uring инструменты мониторинга времени выполнения, такие как Tetragon, Falco и Tracee, могут наблюдать за активностью в ядре в режиме реального времени.
Мониторинг целостности файлов
AIDE (Advanced Intrusion Detection Environment) создает базовую линию доверенных системных файлов и проверяет их на наличие изменений. Инициализируйте ее с помощью aide --init, а затем запланируйте aide --check через cron. Она отслеживает контрольные суммы, разрешения, права собственности и временные метки таких важных двоичных файлов, как /bin/login и /usr/bin/sshd.
Для проверки на уровне пакетов можно использовать debsums (Debian/Ubuntu) или rpm -Va (RHEL/CentOS) для подтверждения целостности системных файлов. Для получения наиболее надежных результатов загрузитесь с надежного загрузочного носителя и проверьте файловую систему в автономном режиме, поскольку руткиты могут подделать отчетность запущенного ядра.
Также следите за механизмами сохранения. Руткиты часто изменяют файл /etc/ld.so.preload, чтобы внедрить общие объекты, или изменяют файлы .bashrc и .profile. Легитимные изменения в этих файлах происходят редко, поэтому предупреждения здесь имеют высокое соотношение сигнал/шум.
Автоматизированный мониторинг с помощью Auditd
Добавьте эти правила в /etc/audit/rules.d/rootkit.rules для обнаружения подозрительной активности ядра в режиме реального времени:
# Detect unauthorized kernel module loading
-a always,exit -F arch=b64 -S finit_module -S init_module
# Catch unusual high-range kill signals
-a always,exit -F arch=b64 -S kill -F a1>=32
Объедините их с автоматическими обновлениями rkhunter. Установите UPDATE_MIRRORS=1 и MIRRORS_MODE=0 в конфигурации и запускайте rkhunter --propupd после легитимных обновлений системы, чтобы обновить базовую линию.
Защита сервера от руткитов
Обнаружение важно, но предотвращение лучше. Для установки большинства руткитов требуются повышенные привилегии, поэтому сокращение поверхности атаки имеет реальное значение.
Постоянно обновляйте ядро и пакеты. Злоумышленники используют непропатченные уязвимости для повышения привилегий и развертывания руткитов на основе LKM или eBPF. После обновления обновляйте базовые линии обнаружения с помощью rkhunter --propupd.
Обеспечьте соблюдение наименьших привилегий. Не давайте пользователям или процессам больше доступа, чем им нужно. Используйте SELinux или AppArmor для обязательного контроля доступа, который блокирует несанкционированные действия, даже если процесс скомпрометирован.
Отключите загрузку модулей ядра после загрузки. На выделенных серверах вы можете полностью предотвратить руткиты LKM, заблокировав загрузку модулей после запуска системы. На виртуальном хостинге это невозможно, что является одной из причин, по которой выделенные или VPS-среды обеспечивают более высокий уровень безопасности.
Сегментируйте свою сеть. Изолирование частей инфраструктуры ограничивает боковое движение, если одна машина скомпрометирована.
Регулярно проводите аудит. Такие инструменты, как Lynis, позволяют выявить ошибки в разрешениях и неправильную конфигурацию до того, как ими воспользуются злоумышленники.
Заключение
Руткиты созданы для того, чтобы прятаться у всех на виду. К моменту появления симптомов система может быть уже скомпрометирована и не подлежит восстановлению. Ни один сканер не улавливает все, а базовое обнаружение на основе сигнатур легко обойти.
Практичная защита включает в себя несколько уровней:
- Регулярное сканирование с помощью chkrootkit и rkhunter на предмет известных угроз
- Правила Auditd и мониторинг поведения для выявления подозрительной активности ядра
- Мониторинг целостности файлов с помощью AIDE для выявления несанкционированных изменений
- Инструменты времени выполнения, такие как Tetragon или Falco, для выявления угроз eBPF и io_uring
- Усиленный контроль доступа, исправления и сегментация сети для уменьшения поверхности атаки
Автоматизируйте все, что можно, поддерживайте базовые линии в актуальном состоянии и начинайте с чистой установки ОС, которой вы доверяете.
FDC Servers предлагает выделенный и VPS-хостинг с полным root-доступом и настраиваемыми конфигурациями ядра. Изучите варианты выделенных серверов для создания защищенной среды Linux.

Устали от медленного развертывания или ограничений пропускной способности? FDC Servers предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб.
Обновление сейчас
Контрольный список по укреплению серверов Linux
Пошаговый контрольный список для защиты сервера Linux. Охватывает SSH, брандмауэры, исправления, разрешения на файлы, SELinux/AppArmor и ведение журнала аудита
15 мин чтения - 8 мая 2026 г.
самоучитель iperf3: Тест скорости сети в Linux и Windows
10 мин чтения - 7 мая 2026 г.

У вас есть вопросы или вам нужно индивидуальное решение?
Гибкие варианты
Глобальный охват
Мгновенное развертывание
Гибкие варианты
Глобальный охват
Мгновенное развертывание