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

Как обнаружить и предотвратить руткиты Linux с помощью chkrootkit, rkhunter, Auditd, AIDE и поведенческого мониторинга на ваших серверах.
Обнаружение руткитов в Linux: инструменты и методы обеспечения безопасности серверов
Руткиты предоставляют злоумышленникам постоянный скрытый доступ к системам Linux. Они манипулируют операциями ядра, скрывают файлы и процессы и обходят стандартные инструменты безопасности. Некоторые из них остаются незамеченными в течение многих лет. Для их обнаружения требуется многоуровневый подход, поскольку ни один инструмент не способен обнаружить все.
В этой статье рассматриваются основные типы руткитов для Linux, способы их сканирования, а также передовые методы мониторинга, позволяющие обнаружить то, что упускают базовые сканеры.
Типы руткитов для Linux
Руткиты работают на разных уровнях привилегий, и чем глубже они расположены, тем сложнее их обнаружить.
Руткиты пользовательского режима работают на уровне приложений (Ring 3). Они захватывают динамическую компоновку, используя LD_PRELOAD для внедрения вредоносных библиотек, которые перехватывают стандартные функции библиотеки C, такие как readdir или fopen, скрывая файлы и процессы от пользовательских инструментов.
Руткиты ядра работают в кольце 0, загружаясь как загружаемые модули ядра (LKM). Они перехватывают системные вызовы, манипулируют памятью ядра и скрывают своё собственное присутствие. Поскольку они привязаны к конкретным версиям ядра, неправильно настроенный руткит может вызвать панику ядра, что, по иронии судьбы, раскрывает его.
Руткиты на основе eBPF используют подсистему Extended Berkeley Packet Filter для работы в пространстве ядра без загрузки традиционного модуля. Они присоединяются к хукам системных вызовов, точкам трассировки или событиям LSM. Стандартные сканеры LKM их не обнаружат. Boopkit — это хорошо известная концептуальная реализация, которая создает скрытый канал C2 с помощью этого подхода.
Руткиты на основе io_uring — это новейший вариант. Они используют io_uring асинхронный интерфейс ввода-вывода для пакетной обработки операций, генерируя меньше заметных событий системных вызовов. RingReaper, экспериментальный руткит, продемонстрировал, как это может незаметно заменить вызовы типа read, write, и connect , уклоняясь от инструментов 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 или просмотра предупреждений в системном журнале.
Расширенное обнаружение: мониторинг поведения и проверки целостности
Статические сканеры имеют фундаментальный недостаток. В эксперименте 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 предлагает мгновенную выделенную мощность, глобальный охват и гибкие планы, рассчитанные на любой масштаб.
Обновление сейчасПочему важно иметь мощный и не тарифицируемый VPS
Неизмеряемый VPS предоставляет пропускную способность по фиксированной ставке при фиксированной скорости порта. Чем он отличается от дозированных тарифных планов, когда он окупается и что нужно проверить перед покупкой.
7 мин чтения - 9 мая 2025 г.
Управление памятью в Linux: Подкачка, убийца OOM и Cgroups
12 мин чтения - 31 мая 2026 г.

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