RkHunter как защита от руткитов на сервере Ubuntu

Что такое RkHunter?

Любой компьютер, имеющий выход в интернет, подвержен некоторому риску. Существует множество способов атаки на сервер и взлома системы, потому очень важно постоянно и активно работать над повышением уровня безопасности машины.

Одной из потенциальных опасностей являются руткиты (rootkits)- тайно установленное ​​злоумышленником программное обеспечение, открывающее ему доступ к серверу и скрывающее последствия взлома. Это чрезвычайно актуальная проблема, поскольку руткит позволяет злоумышленнику входить на сервер даже после фиксации вектора входа пользователя в систему.

rkhunter – инструмент, разработанный для защиты системы от подобных проблем. Данное программное обеспечение проверяет систему на наличие в ней баз данных известных руткитов. Кроме того, эта программа может проверить другие системные файлы, чтобы убедиться, что их свойства и значения в порядке.

Данное руководство описывает установку и настройку rkhunter для защиты Ubuntu 12.04 VPS.

Установка rkhunter из исходного кода

Репозитории Ubuntu содержат устаревшую версию rkhunter с неисправленной уязвимостью. Потому устанавливать данную программу лучше из исходного кода.

Перейдите в домашний каталог и скачайте файлы. На данный момент последней доступной версией программы является 1.4.0 (чтобы уточнить эту информацию, посетите страницу проекта)

cd
wget http://downloads.sourceforge.net/project/rkhunter/rkhunter/1.4.0/rkhunter-1.4.0.tar.gz

После завершения загрузки файлов извлеките их и перейдите в итоговый каталог:

tar xzvf rkhunter*
cd rkhunter*

Здесь нужно найти каталог files и скрипт установки. В схеме размещения установки укажите каталог /usr, далее он будет использоваться как путь по умолчанию.

sudo ./installer.sh --layout /usr --install

Это установит программу и конфигурационные файлы.

Теперь нужно установить некоторые утилиты, позволяющие использовать полный функционал rkhunter. Их можно получить из репозиториев Ubuntu:

sudo apt-get update
sudo apt-get install binutils libreadline5 libruby1.8 ruby ruby1.8 ssl-cert unhide.rb mailutils

Появятся вопросы о настройках почтового сервера. При желании можете настроить его, но для краткости руководства настройка почтового сервера, доступного в интернете, не охвачена. Выберите “Local only”, чтобы последовать примеру статьи.

При локальной установке почтового сервера ему можно дать любое имя. В противном случае не забудьте использовать полное доменное имя.

Теперь программное обеспечение установлено и готово к настройке и тестированию.

Тестовый запуск rkhunter

Прежде чем перейти к настройке rkhunter, выполните несколько тестовых запусков с настройками по умолчанию, чтобы получить представление о том, как работает данная программа, и определить базовое направление изменений настроек.

Для начала нужно убедиться, что установленная версия rkhunter достаточно современна. Если архив был получен с сайта проекта, этого делать не нужно; в противном случае лучше проверить:

sudo rkhunter --versioncheck
[ Rootkit Hunter version 1.4.0 ] Checking rkhunter version...
This version  : 1.4.0
Latest version: 1.4.0

Затем необходимо выполнить подобную операцию и обновить файлы баз данных. Эти файлы содержат информацию, с которой RkHunter проводит сравнение, чтобы определить, является ли поведение системы подозрительным или нет. Их нужно своевременно обновлять, чтобы иметь точную оценку системы:

sudo rkhunter --update

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

sudo rkhunter --propupd
File created: searched for 167 files, found 136

Теперь можно выполнить первый запуск программы, что выведет некоторые предупреждения. Это поведение предсказуемо, поскольку универсальные настройки rkhunter немного расходятся с ожидаемыми настройками по умолчанию для Ubuntu.

sudo rkhunter -c --enable all --disable none

Это действие запустит часть проверок, а затем попросит нажать enter для продолжения. Предупреждения можно просмотреть еще в ходе проверки, но впоследствии можно будет получить более подробную информацию. Нажимайте enter, пока все проверки не запустятся.

Теперь нужно просмотреть журналы и проверить все предупреждения, выведенные в результате проверок.

sudo nano /var/log/rkhunter.log

Ищите файлы по слову “Warning”. Появится ряд различных предупреждений, которые вызваны определенными факторами файловой системы. Нужно сказать rkhunter игнорировать те, которые заведомо безвредны, о чем речь пойдет в следующем разделе.

Некоторые изменения (как, например, в файле passwd) выведены только потому, что они были внесены вспомогательными утилитами, загруженными ранее с помощью apt. Эти файлы имеют более поздние метки времени, чем базы данных rkhunter (они исчезнут при следующем запуске).

Альтернативный способ проверить результаты тестового запуска rkhunter – вывести предупреждения на экран.

sudo rkhunter -c --enable all --disable none --rwo

Затем можно скопировать информацию и вставить ее в какой-нибудь файл, чтобы с ее помощью отредактировать конфигурационный файл.

Настройка rkhunter (основанная на заведомо исправный значениях)

Получив некоторое представление о том, как rkhunter просматривает систему, можно указать файлы и приложения, которые нужно игнорировать или обрабатывать иначе во избежание ложных срабатываний.

Откройте конфигурационный файл rkhunter с привилегиями root:

sudo nano /etc/rkhunter.conf

Настройка уведомлений

Первое, что можно сделать – это настроить email-уведомления, которые rkhunter сможет отправить в случае обнаружения нарушений.

MAIL-ON-WARNING="имя_пользователя@домен.com"

Если почтовый сервер установлен локально, можно получать почту, войдя в систему как root:

MAIL-ON-WARNING="root@localhost"

Имейте в виду, почтовые программы настраиваются сразу при установке, потому их инсталляции нужно уделять особое внимание.

Данная строка определяет программу и параметры отправки почты:

MAIL_CMD=mail -s "[rkhunter] Warnings found for ${ИМЯ_ХОСТА}"

Белый список известных файлов

Теперь нужно устранить предупреждения, сообщающие о том, что некоторые бинарные пакеты системы были заменены скриптами. Некоторые дистрибутивы (в том числе и Ubuntu) используют скриптовые версии файлов вместо их двоичных аналогов.

Приведенные ниже четыре файла были выведены в результате проверки rkhunter; их нужно внести в белый список с помощью параметра SCRIPTWHITELIST, чтобы rkhunter знал, что эти файлы безвредны:

SCRIPTWHITELIST="/usr/sbin/adduser"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/unhide.rb"
SCRIPTWHITELIST="/bin/which"

Это позволит предотвратить ложные срабатывания при всех последующих проверках. Обратите внимание: эти белые списки необходимы только для определенных тестов; потому нужно отметить, что эти файлы не должны быть двоичными. Другие же изменения могут вызвать предупреждения (что является правильной работой программы).

Белый список файлов каталога /dev

Определенные файлы каталога /dev вызывают предупреждения rkhunter. Эти файлы содержат детали реализации, которые фактически не указывают на какие-либо нарушения. Они необходимы и поддерживаются дистрибутивом.

Итак, существует три предупреждения, которые нужно устранить. Первое предупреждение связано с обнаружением “подозрительного файла” в каталоге. Разместите в конфигурациях следующую строку, чтобы снять подозрения с данного файла:

ALLOWDEVFILE="/dev/.udev/rules.d/root.rules"

Следующее предупреждение связано с тем, что в каталоге /dev обнаружен скрытый каталог. В этом каталоге находится предыдущий файл.

ALLOWHIDDENDIR="/dev/.udev"

Последнее предупреждение вызвано скрытыми файлами. Это основные конфигурационные файлы, которые хранятся в этом каталоге, чтобы программы могли получать к ним доступ независимо от схемы разбиения и состояния монтирования.

Добавьте эти строки, чтобы внести эти файлы в белый список

ALLOWHIDDENFILE="/dev/.blkid.tab"
ALLOWHIDDENFILE="/dev/.blkid.tab.old"
ALLOWHIDDENFILE="/dev/.initramfs"

Разрешение Root SSH-подключения

Следующий шаг – просто проверка утверждения. При запуске rkhunter проверяет этот параметр в конфигурационном файле и сравнивает его со значением в файле конфигурации SSHD.

Данная опция указывает, может ли root-пользователь устанавливать SSH-подключение. Многие методы обеспечения безопасности рекомендуют отключить root-логин. Если root-логин отключен, нужно установить значение “no”.

При необходимости подключаться по SSH нужно изменить значение на “yes”, чтобы rkhunter подтверждал такое соединение:

ALLOW_SSH_ROOT_USER=yes

Сохраните изменения и закройте файл.

Проверка настроек

Теперь необходимо проверить правильность настройки и убедиться, что все работает должным образом.

Для начала нужно убедиться, что сам конфигурационный файл является действительным. Для этого запустите rkhunter, чтобы увидеть, принял ли он заданные значения.

sudo rkhunter -C

Если были выведены какие-либо предупреждения, вернитесь в конфигурационный файл и устраните их.

Отредактировав конфигурационный файл должным образом, снова запустите тест, чтобы убедиться, что больше предупреждений нет.

sudo rkhunter -c --enable all --disable none --rwo

При этом должно появиться одно предупреждение (поскольку был изменен сам конфигурационный файл rkhunter):

Warning: The file properties have changed:
File: /etc/rkhunter.conf
Current hash: fa8ad80a18100e669be507e69d0cbb88348fc07d
Stored hash : f9015108a2f6d8044126351cf16235c55993ff7a
Current inode: 2098189    Stored inode: 2100424
Current size: 37607    Stored size: 37359
Current file modification time: 1388443781 (30-Dec-2013 17:49:41)
Stored file modification time : 1388442019 (30-Dec-2013 17:20:19)

Свойства файла должны были быть обновлены после внесения в него изменений. Сделайте это сейчас, набрав:

sudo rkhunter --propupd

Завершив, снова запустите проверку; на этот раз предупреждений быть не должно.

Кроме того,  можете проверить почтовые уведомления (если они настроены). Поскольку в данном руководстве используется локальная почта, можно получить доступ к сообщениям, открыв почтовый ящик root:

sudo mail

Закрыть почту можно при помощи:

quit

При наличии нескольких настроенных почтовых ящиков можно проверить каждый из них. Данное сообщение может быть помещено в папку со спамом, потому проверьте ее, если не обнаружите сообщения на почте.

Автоматизация проверок с помощью Cron

Настроив rkhunter и убедившись в том, что он работает должным образом, автоматизируйте его работу. Данное руководство показывает, как настроить ежедневный автоматический запуск rkhunter.

Лучше указать свой постоянный почтовый адрес, чтобы иметь возможность своевременно проверять отчеты rkhunter. Для этого измените значение параметра MAIL-ON-WARNING в файле /etc/rkhunter.conf.

Запустите rkhunter с привилегиями root, чтобы иметь возможность внести его в crontab пользователя root. Обратите внимание: внеся rkhunter в системный crontab, вы рискуете потерять данные настройки при обновлении системы.

Для начала нужно убедиться, что у root-пользователя уже есть crontab, набрав:

sudo crontab -l

Если при этом был выведен crontab, создайте его резервную копию на случай необходимости восстановить его:

sudo crontab -l > crontab.bak

Затем отредактируйте crontab root-пользователя, выполнив команду:

sudo crontab -e

Если эта команда запущена впервые, она спросит, какой редактор нужно использовать; в данном руководстве используется надежный nano.

Затем будет открыт текстовый редактор; файл будет предварительно заполнен некоторыми комментариями, объясняющими, как написать crontab.

Существует множество сложных способов спланировать запуск определенных команд через необходимый интервал времени. В данном же случае нужно только решить, в котором часу должна запускаться команда. Как обычно, ее лучше запускать ночью, когда сервер не перегружен.

Для автоматизации запуска команды используется формат:

минуты часы * * * команда

Часы должны указываться в 24-часовом формате. Команда, которую нужно автоматизировать, выглядит так:

/usr/bin/rkhunter --cronjob --update --quiet.

Чтобы запускать ее в 04: 15, внесите в конец файла:

15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet

Опция –cronjob говорит rkhunter не выводить результат в цветном формате и не запрашивать дополнительного нажатия клавиш. Опция — update регулярно обновляет определения. Опция –quiet подавляет весь вывод.

Итак, теперь cron будет запускать данную команду в 04.15, а при наличии каких-либо изменений rkhunter отправит извещение на почту.

Итоги

Теперь rkhunter установлен, настроен и автоматизирован. Своевременно проверяйте почту, чтобы иметь представление о текущем состоянии системы и быть в состоянии вовремя отреагировать на предупреждения.

Также важно помнить о том, что при внесении обновлений в программы необходимо вовремя обновлять их исходные свойства (для этого запустите sudo rkhunter –propupd); в противном случае rkhunter сообщит о данных изменениях в следующем отчете.

Как уже было сказано, rkhunter ссылается на заведомо исправные значения и состояния системы, установленные пользователем; потому эту программу рекомендуется установить и настроить сразу после настройки большей части программного обеспечения. Установка этой программы перед настройкой программного обеспечения приведет к большому количеству ложных срабатываний. Запомните также: слишком долгое откладывание установки rkhunter может привести к тайному вторжению на сервер.

Tags: , , , , ,

Добавить комментарий