Настройка rkhunter

Применимость: Linux

Слова для поиска: антивирус, руткит rootkit


Задача:

Чем защитить систему от взлома? Чем проверить факт взлома защиты?

Решение:

rkhunter - скрипт для проверки на локальной системе попыток взома и обнаружения известных ему rootkits и malware. Он также производит проверки и выявления изменений в установленных программах, в системных файлах запуска и различные проверки для приложений, которые “слушают” на сетевых интерфейсах сервера.

Установка на Centos, Fedora, RHEL

yum install rkhunter

Для Centos скорее всего потребуется установка дополнительных репозиториев epel, rpmforge

Установка на Debian / Ubuntu

apt-get install rkhunter

Применение

Нужно обновить базы уязвимостей:

rkhunter --update

После каждого изменения файла /etc/rkhunter.conf нужно выполнить команду:

  rkhunter --propupd

сканирование можно провести с помощью команды:

rkhunter --check

или в режиме вывода только предупреждений:

rkhunter -c --rwo  

В идеальном случае эта команда не должна выдать никаких сообщений, но даже на чистой системе вывод на экран консоли скорее всего будет похоже на это:

rkhunter -c --rwo
Warning: Checking for prerequisites               [ Warning ]
         The file of stored file properties (rkhunter.dat) does not exist, and should be created. To do this type in 'rkhunter --propupd'.
Warning: WARNING! It is the users responsibility to ensure that when the '--propupd' option
         is used, all the files on their system are known to be genuine, and installed from a
         reliable source. The rkhunter '--check' option will compare the current file properties
         against previously stored values, and report if any values differ. However, rkhunter
         cannot determine what has caused the change, that is for the user to do.
Warning: The command '/usr/bin/groups' has been replaced by a script: /usr/bin/groups: Bourne shell script text executable
Warning: The command '/usr/bin/ldd' has been replaced by a script: /usr/bin/ldd: Bourne shell script text executable
Warning: The command '/usr/bin/whatis' has been replaced by a script: /usr/bin/whatis: Bourne shell script text executable
Warning: The command '/sbin/ifdown' has been replaced by a script: /sbin/ifdown: Bourne-Again shell script text executable
Warning: The command '/sbin/ifup' has been replaced by a script: /sbin/ifup: Bourne-Again shell script text executable
Warning: No output found from the lsmod command or the /proc/modules file:
         /proc/modules output: 
         lsmod output: 
Warning: The kernel modules directory '/lib/modules' is missing or empty.
Warning: The SSH configuration option 'PermitRootLogin' has not been set.
         The default value may be 'yes', to allow root access.
Warning: Hidden directory found: /dev/.udev
Warning: Hidden file found: /usr/share/man/man1/..1.gz: gzip compressed data, from Unix, max compression
Warning: Hidden file found: /usr/bin/.fipscheck.hmac: ASCII text
Warning: Hidden file found: /usr/sbin/.sshd.hmac: ASCII text
Warning: Application 'httpd', version '2.2.3', is out of date, and possibly a security risk.
Warning: Application 'openssl', version '0.9.8e', is out of date, and possibly a security risk.
Warning: Application 'php', version '5.1.6', is out of date, and possibly a security risk.
Warning: Application 'sshd', version '4.3p2', is out of date, and possibly a security risk.

Ложные срабатывания

При запуске утилиты rkhunter возможно ложное срабатывание на некоторых системах и требуется настройка параметров в файле /etc/rkhunter.conf

Чтобы убрать предупреждения о файлах замененных скриптами (Warning: The command '/usr/bin/ldd' has been replaced) внесите их в перечень параметра SCRIPTWHITELIST

SCRIPTWHITELIST="/sbin/ifup /sbin/ifdown /usr/bin/groups /usr/bin/ldd /usr/bin/whatis"

Чтобы убрать предупреждение о разрешении подключения по ssh с именем root (Warning: The SSH configuration option… )добавьте параметр:

ALLOW_SSH_ROOT_USER=yes

И добавьте параметр PermitRootLogin yes в /etc/ssh/sshd_config командой.

echo "PermitRootLogin yes" >> /etc/ssh/sshd_config

Обычно этот параметр там есть, но он закомментирован.

Иначе будет предупреждение: Warning: The SSH configuration option 'PermitRootLogin' has not been set.

Предупреждения - Warning: Hidden file found: убираются параметрами:

ALLOWHIDDENDIR="/etc/.java"
ALLOWHIDDENDIR="/dev/.udev /dev/.udevdb /dev/.udev.tdb"
ALLOWHIDDENDIR="/dev/.static"
ALLOWHIDDENDIR="/dev/.initramfs"
ALLOWHIDDENDIR="/dev/.SRC-unix"
ALLOWHIDDENDIR="/dev/.mdadm

ALLOWHIDDENFILE="/etc/.java"
ALLOWHIDDENFILE="/usr/share/man/man1/..1.gz"
ALLOWHIDDENFILE="/usr/bin/.fipscheck.hmac"
ALLOWHIDDENFILE="/usr/bin/.ssh.hmac"
ALLOWHIDDENFILE="/usr/sbin/.sshd.hmac"

В файле /etc/rkhunter.conf есть и другие примеры.

Чтобы скрипт не ругался на старые версии программ добавьте параметр с разрешенными версиями программ:

APP_WHITELIST="openssl:0.9.8e gpg httpd:2.2.3 php:5.1.6 sshd:4.3p2"

Если вы используете виртуальный сервер под OpenVZ, то rkhunter будет ругаться на отсутствие модулей ядра: Исправляем так - надо отключить лишний тест добавлением его в список DISABLE_TESTS:

DISABLE_TESTS=«avail_modules loaded_modules suspscan hidden_procs deleted_files packet_cap_apps apps»

В приведенных выше примерах использовались типовые настройки для centos-5.6

Вызывающие ложные срабатывания факторы в Debian описаны в файле /usr/share/doc/rkhunter/README.Debian.gz

Уведомления

Для отправки сообщений на почту при обнаружении руткитов в файле нужно раскомментировать и изменить строку:

MAIL-ON-WARNING=mymail@mydomain

Можно поменять команду отправки, чтобы письмо отправлялось средствами sendEmail:

  MAIL_CMD=sendEmail -q -o message-charset=utf-8 -s mail.nic.ru:25 -u "[rkhunter] Warnings found for ${HOST_NAME}" -xu server@goldeni.com -xp {ПАРОЛЬ} -f {my@mail.com} -m "Проверьте сервер ${HOST_NAME} на руткиты!" -t

Так как в конфиге указывается пароль к почте, рекомендуется сменить права на файл /etc/rkhunter.conf на 600.

chmod 600 /etc/rkhunter.conf

Автоматизация

Для автоматического обновления и сканирования добавьте в /etc/crontab следующие строки:

# Обновляет базу rkhunter раз в неделю в 00:00
0 0 * * 1 root rkhunter --update --cronjob
# Сканирует на руткиты каждый день в 00:30
30 0 * * * root rkhunter --check --cronjob

Не забудьте перезапустить cron!

# sudo /etc/init.d/cron restart

Смотрите также: