ИБ (Информационная Безопасность)
October 13

RKHunter - поиск руткитов в Linux

Я уже делал статью про обнаружение руткитов в Linux с помощью chkrootkit. В этой статье мы продолжим тему руткитов и ознакомимся с rkhunter.

Rkhunter - это сканер, написанный на bash и perl, который предназначен для обнаружения руткитов, уязвимостей и эксплойтов в системе. Он проверяет изменения контрольных сумм SHA256 системных файлов, ищет файлы, которые обычно создаются руткитами, выявляет необычные права доступа бинарных файлов, ищет подозрительные строки в модулях ядра, скрытые файлы в системных каталогах и анализирует текстовые и бинарные файлы.

Установка

В Arch Linux:
sudo pacman -S rkhunter

В Debian (на примере KALI Linux):
sudo apt install rkhunter

Проверьте установленную версию:

rkhunter -V

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

Если вы столкнулись с ошибками обновления как на скрине:

То необходимо отредактировать конфиг:

  1. Проверьте MIRRORS_MODE. Попробуйте установить значение 0, чтобы rkhunter использовал как локальные, так и онлайн-зеркала;
  2. Проверьте 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 использует больше памяти, чем предпологалось. Избавиться от этого предупреждения можно несколькими способами:

  1. Увеличить допустимый объем использования памяти с помощью IPC_SEG_SIZE;
  2. Добавить строку ALLOWIPCPROC=/usr/bin/xfdesktop.

Регулярная проверка системы

Вы можете использовать --cronjob для регулярной проверки системы. --cronjob это альтернатива использования --check, --sk и --no-color одновременно. Просто добавьте @daily /usr/bin/rkhunter --update --cronjob в список задач cron для ежедневного обновления баз сигнатур и проверки системы. Отчеты будут отправляться на почту (если вы это явно настроили в конфиге), либо вы можете просматривать лог-файл /var/log/rkhunter.log.


Мой Telegram

Мой GitHub

Поддержать автора донатом