Как использовать RKHunter для защиты от руткитов на Ubuntu VPS
Статус: устарело
В этой статье рассматривается версия Ubuntu, которая больше не поддерживается. Если вы в настоящее время используете сервер под управлением Ubuntu 12.04, мы настоятельно рекомендуем обновить или перейти на поддерживаемую версию Ubuntu:
- Обновите Ubuntu до версии 14.04.
- Обновление Ubuntu 14.04 до Ubuntu 16.04
- Перенесите данные сервера в поддерживаемую версию.
Причина:
Смотрите вместо этого:
Введение
Подключать любой компьютер к Интернету в некотором смысле рискованно. Существует множество способов, которыми ваш сервер может быть скомпрометирован или атакован удаленными системами и вредоносным программным обеспечением, и это непрерывный и упреждающий процесс защиты от потенциальных угроз.
Одной из потенциальных проблем являются руткиты. Руткиты — это программное обеспечение, тайно устанавливаемое злоумышленником, позволяющее этому пользователю продолжать доступ к серверу после нарушения безопасности. Это чрезвычайно опасная проблема, потому что даже после того, как вектор входа, который пользователь изначально использовал для получения доступа, исправлен, он может продолжать входить на сервер, используя установленный им руткит.
Одним из инструментов, который может помочь вам защитить вашу систему от подобных проблем, является 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
Вам будет задано несколько вопросов о настройке почтового сервера. Вы можете настроить это, если хотите, но для краткости мы не будем настраивать почтовый сервер с выходом в Интернет. Выберите «Только локальные», чтобы последовать нашему примеру.
Если вы устанавливаете локально, вы можете назвать системную почту как угодно. В противном случае обязательно используйте полное доменное имя.
Теперь наше программное обеспечение установлено и готово к тестированию и настройке.
Первоначальные тестовые прогоны
Прежде чем мы начнем настройку, мы сделаем несколько тестовых прогонов с настройками по умолчанию, чтобы получить представление о том, как работает программное обеспечение, и установить базовый уровень, на основе которого мы будем ориентироваться в наших модификациях.
Первое, что мы должны сделать, это убедиться, что наша версия 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 в некоторых местах отличается от ожидаемых значений по умолчанию. О них мы расскажем rkhunter позже:
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
Настроить почтовые уведомления
Первое, что вы можете сделать, это настроить уведомления по электронной почте, если вы хотите получать их, когда rkhunter выдает предупреждение. Вы можете сделать это здесь:
<пред>
Если вы настроили локальную почту, вы можете поставить это на получение почты при входе в систему как root:
MAIL-ON-WARNING="root@localhost"
Обратите внимание, что почтовые программы были настроены при их установке, поэтому правильность их работы зависит от вашего выбора.
Связанный параметр конфигурации определяет программу и параметры для отправки почты:
MAIL_CMD=mail -s "[rkhunter] Warnings found for ${HOST_NAME}"
Белый список известных файлов сценариев
Далее мы исправим предупреждения, сообщавшие нам о том, что некоторые бинарные пакеты в системе заменены сценариями. Некоторые дистрибутивы (включая Ubuntu) используют скриптовые версии файлов вместо их бинарных аналогов.
Все четыре предупреждения, которые я получил, были примерами этого. Мы можем установить параметр 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"
Разрешить корневой вход SSH
Следующим шагом является просто проверка утверждений. Когда вы запускаете rkhunter, он проверяет параметр в своем файле конфигурации и сравнивает его со значением в файле конфигурации SSHD.
Этот параметр указывает, может ли пользователь root войти в систему с помощью SSH. Многие методы обеспечения безопасности рекомендуют отключать вход в систему root. Если вы отключили вход в систему root, вы должны оставить этот параметр как «нет».
Если вам нужен вход root через SSH, вы должны изменить этот параметр на «yes», чтобы rkhunter мог проверить это и пометить этот параметр как действительный:
ALLOW_SSH_ROOT_USER=yes
Сохраните и закройте файл, когда закончите.
Проверьте конфигурацию
Теперь, когда мы настроили rkhunter, вам нужно проверить конфигурацию и убедиться, что теперь все работает должным образом.
Первым шагом в этом является проверка правильности самого файла конфигурации. Вы можете запустить на нем тест, чтобы увидеть, примет ли 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
После его завершения вы можете снова запустить команду проверки и убедиться, что ошибок не возникает.
Если вы забудете обновить свойства файла, вы сможете проверить почтовые уведомления, если вы это настроили. Поскольку мы настроили локальную почту, мы можем получить доступ к сообщениям, проверив корневой почтовый ящик:
sudo mail
Вы должны увидеть сообщение, к которому вы можете получить доступ по номеру во втором столбце.
Вы можете выйти из экрана почты, набрав:
quit
Если вы настроили удаленную электронную почту, вы также можете проверить это. Оно может быть в папке спам, так что загляните туда, если вы не получили его в свой обычный почтовый ящик.
Настройте задание Cron для автоматизации проверок
Теперь, когда вы настроили rkhunter и убедились, что он работает правильно, возможно, стоит автоматизировать систему. Мы можем настроить rkhunter на ежедневные проверки, чтобы иметь актуальную информацию о вторжениях.
Это наиболее полезно, если вы можете отправить его по электронной почте на свой обычный адрес электронной почты, чтобы вы с большей вероятностью его проверили. Измените параметр MAIL-ON-WARNING
в файле /etc/rkhunter.conf
на свой обычный адрес электронной почты, если вы еще этого не сделали.
Мы хотим запустить rkhunter с привилегиями root, как мы это делали, поэтому мы должны добавить его в crontab пользователя root. Важно помнить, что нельзя добавлять его в системный crontab, потому что он может быть заменен при обновлении и стереть ваши изменения.
Во-первых, мы можем увидеть, есть ли у пользователя root уже crontab, набрав:
sudo crontab -l
Если это возвращает crontab, то лучше сделать резервную копию файла на случай, если мы совершим ошибку. Вы можете сделать это, набрав:
sudo crontab -l > crontab.bak
После этого мы можем отредактировать crontab пользователя root, введя эту команду:
sudo crontab -e
Если вы запускаете эту команду впервые, она попросит вас выбрать редактор, который вы хотели бы использовать. Безопасным выбором будет nano, если вы не предпочитаете какой-либо другой редактор.
После этого вы попадете в свой редактор, и ваш файл будет предварительно заполнен некоторыми комментариями, объясняющими, как написать crontab.
Существует много сложных способов написания спецификаций cron, которые могут запускать команды через множество интервалов. Для наших целей нам просто нужно решить, в какое время каждый день запускать команду. Как и в случае с большинством сервисов, его запуск в ночное время обычно оптимален:
Мы будем использовать формат минуты часы * * * команда
. Часы должны быть указаны в 24-часовом формате (например, 15 для 15:00). Мы хотим использовать команду /usr/bin/rkhunter --cronjob --update --quiet
.
Поэтому, если мы хотим запустить эту команду в 4:15 утра, мы можем ввести внизу файла:
15 04 * * * /usr/bin/rkhunter --cronjob --update --quiet
Опция --cronjob указывает rkhunter не выводить в цветном формате и не требовать интерактивных нажатий клавиш. Опция обновления обеспечивает актуальность наших определений. Тихая опция подавляет весь вывод.
Утилита cron выполнит эту команду в 4:15 утра, и если будет какой-либо вывод, сама команда rkhunter отправит электронное письмо нашему пользователю, чтобы предупредить его. Если проблем не обнаружено, электронное письмо не будет получено.
Заключение
Теперь, когда вы установили, настроили и автоматизировали rkhunter, большую часть работы он должен делать за вас. Если вы полагаетесь на оповещения по электронной почте, убедитесь, что вы регулярно проверяете их и отвечаете на любые предупреждения.
Также полезно помнить, что когда вы вносите изменения в программное обеспечение на своем компьютере, rkhunter может сообщать о различиях при следующем запуске. После внесения изменений рекомендуется хотя бы запустить sudo rkhunter --propupd
, чтобы обновить rkhunter до новых свойств файла.
Поскольку это программное обеспечение ссылается на заведомо правильные значения и состояния системы, которые вы разрешили, лучше всего установить и настроить его сразу после того, как вы настроите большую часть программного обеспечения для своей установки. Если вы сделаете это до настройки вашего программного обеспечения, это приведет к большому количеству ложных срабатываний, а слишком долгое ожидание может привести к вторжению и незнанию того, заносите ли вы в белый список плохие файлы.