RKHunter - поиск руткитов в Linux
Я уже делал статью про обнаружение руткитов в Linux с помощью chkrootkit. В этой статье мы продолжим тему руткитов и ознакомимся с rkhunter.
Rkhunter - это сканер, написанный на bash и perl, который предназначен для обнаружения руткитов, уязвимостей и эксплойтов в системе. Он проверяет изменения контрольных сумм SHA256 системных файлов, ищет файлы, которые обычно создаются руткитами, выявляет необычные права доступа бинарных файлов, ищет подозрительные строки в модулях ядра, скрытые файлы в системных каталогах и анализирует текстовые и бинарные файлы.
Установка
В Arch Linux:sudo pacman -S rkhunter
В Debian (на примере KALI Linux):sudo apt install rkhunter
Проверьте установленную версию:
Rootkit Hunter 1.4.6 Это программное обеспечение было разработано командой проекта Rootkit Hunter. Пожалуйста, перед использованием проверьте файлы конфигурации rkhunter. Перед публикацией отчетов об ошибках или вопросов ознакомьтесь с документацией. Чтобы сообщить об ошибках, предоставить исправления или комментарии, перейдите по адресу: http://rkhunter.sourceforge.net Чтобы задать вопросы об rkhunter, используйте список рассылки rkhunter-users. Обратите внимание, что это модерируемый список: подпишитесь перед публикацией. Rootkit Hunter поставляется БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. Это бесплатное программное обеспечение, и вы можете распространять его в соответствии с условиями GNU General Public License. Подробности см. в файле LICENSE.
Настройка
Перед использованием rkhunter его необходимо настроить. Конфигурационный файл расположен по пути /etc/rkhunter.conf. Откроем его в текстовом редакторе и выполним редактирование:sudo vim /etc/rkhunter.conf
Это главный конфигурационный файл. Вы можете изменить этот файл или создать собственный под названием rkhunter.conf.local, который должен находиться в той же директории. Либо вы можете создать каталог rkhunter.d в той же директории и поместить в него дополнительные файлы конфигурации. Ограничений в использовании имен файлов нет, за тем исключением, что они должны заканчиваться на .conf.
MAIL-ON-WARNING отвечает за отправку отчета на электронную почту, в случае если были найдены предупреждения. Команду для отправки можно настроить в MAIL_CMD:
Так как в конфиге иногда нужно указать пароль к почте, рекомендуется сменить права на файл /etc/rkhunter.conf:chmod 600 /etc/rkhunter.conf
Если вы не хотите отправлять какие-либо отчеты на эл. почту, то оставьте эти строки закомментированными. Любые закомментированные строки игнорируются и их значения устанавливаются по дефолту.
Чтобы rkhunter меньше сталкивался с проблемами обновления БД, можно указать использование как локальных, так и онлайн-зеркал:MIRRORS_MODE=0
Некоторые срабатывания бывают ложными. Чтобы исключить файлы, которые не следует проверять, их нужно поместить в SCRIPTWHITELIST. Например вот так:SCRIPTWHITELIST="/usr/sbin/adduser"SCRIPTWHITELIST="/bin/which
Перед первым сканированием советую не помещать ничего в SCRIPTWHITELIST. После сканирования можно будет провести анализ и уже на его основе решить, что помещать в SCRIPTWHITELIST, а что нет.
Предупреждения о найденных скрытых директориях и файлах отключаются следующими параметрами: ALLOWHIDENDIR и ALLOWHIDDENFILE. Например:ALLOWHIDDENDIR="/etc/.java"ALLOWHIDDENFILE="/etc/.java"
Чтобы убрать предупреждение о разрешении подключения по ssh с именем root:ALLOW_SSH_ROOT_USER=yes
Укажите менеджер пакетов, используемый в вашей системе. Вы можете использовать DPKG, BSD, BSDng, SOLARIS, RPM, NONE. Например:PKGMGR=DPKG
Если вы используете менеджер Pacman или любой другой, которого нет в списке поддерживаемых rkhunter, оставьте значение NONE:PKGMGR=NONE
DISABLE_TESTS отвечает за тесты, которые НЕ нужно проводить во время сканирования. ENABLE_TESTS наоборот, включает в себя тесты, которые нужно проводить во время тестирования. Если хотите, чтобы rkhunter сканировал вашу систему полностью, то включите все тесты с помощью ENABLE_TESTS=ALL и закомментируйте строку DISABLE_TESTS (либо удалите все из DISABLE_TESTS).
После внесения любых изменений в конфигурационный файл рекомендуется запускать rkhunter с опцией -C для проверки ошибок в файле:rkhunter -C
Если команда rkhunter -C не вывела никакой информации об ошибках в конфиге, то все хорошо и мы можем приступать к использованию программы.
Использование
Далее буду показывать на примере KALI Linux.
Вывести справку можно следующей командой:rkhunter --help
Перед началом сканирования советую обновить базу сигнатур:rkhunter --update
И базу свойств файлов:rkhunter --propupd
Если вы столкнулись с ошибками обновления как на скрине:
То необходимо отредактировать конфиг:
- Проверьте
MIRRORS_MODE. Попробуйте установить значение0, чтобы rkhunter использовал как локальные, так и онлайн-зеркала; - Проверьте
WEB_CMD. Это способ скачивания файлов, используемый rkhunter. Попробуйте закомментировать данную строку или установить другое, подходящее для вашей системы значение. НапримерWEB_CMD=curl.
Далее запускаем сканирование системы:rkhunter --check
Чтобы во время сканирования не нажимать ENTER по запросу программы, используйте --sk (skip keypress):rkhunter --check --sk
Зачастую бывает полезно выводить только предупреждения:rkhunter --check --rwo
Даже если у вас чистая, только что установленная система, rkhunter все равно будет выводить некоторые предупреждения. Некоторые из них могут быть полезными, например как вот это:
Оно означает, что в конфиге SSH разрешен доступ от имени root, что является небезопасным решением. Мы можем добавить игнор данной проблемы через конфиг rkhunter:ALLOW_SSH_ROOT_USER=yes
Либо избавиться от проблемы, отредактировав конфиг SSH:
Если какие-то скрипты, скрытые файлы и директории нужно игнорировать, добавьте их в SCRIPTWHITELIST, ALLOWHIDDENDIR и ALLOWHIDDENFILE.
Предупреждение об lwp-request можно отключить, указав в конфиге rkhunter пакетный менеджер, используемый в системе:PKGMGR=DPKG
Rkhunter предупреждает, что /usr/bin/xfdesktop использует больше памяти, чем предпологалось. Избавиться от этого предупреждения можно несколькими способами:
- Увеличить допустимый объем использования памяти с помощью
IPC_SEG_SIZE; - Добавить строку
ALLOWIPCPROC=/usr/bin/xfdesktop.
Регулярная проверка системы
Вы можете использовать --cronjob для регулярной проверки системы. --cronjob это альтернатива использования --check, --sk и --no-color одновременно. Просто добавьте @daily /usr/bin/rkhunter --update --cronjob в список задач cron для ежедневного обновления баз сигнатур и проверки системы. Отчеты будут отправляться на почту (если вы это явно настроили в конфиге), либо вы можете просматривать лог-файл /var/log/rkhunter.log.