CentOS6にchkrootkitをインストールしようと思ったものの、RPM forgeにもなかったので、代わりに「rkhunter」を導入する。
CentOS5でも、同様にインストール~設定ができる。
インストール
RPM forgeからインストールするので、yumにリポジトリを追加しておく。
# yum --enablerepo=rpmforge install rkhunter
バージョン確認
# rpm -qa | grep rkhunter
rkhunter-1.4.0-1.el6.rf.noarch
内容確認
# rpm -ql rkhunter
/etc/rkhunter.conf
/usr/bin/rkhunter
/usr/lib64/rkhunter
/usr/lib64/rkhunter/scripts
/usr/lib64/rkhunter/scripts/check_modules.pl
/usr/lib64/rkhunter/scripts/filehashsha.pl
/usr/lib64/rkhunter/scripts/readlink.sh
/usr/lib64/rkhunter/scripts/stat.pl
/usr/share/man/man8/rkhunter.8.gz
/var/lib/rkhunter
/var/lib/rkhunter/db
/var/lib/rkhunter/db/backdoorports.dat
/var/lib/rkhunter/db/i18n
/var/lib/rkhunter/db/i18n/cn
/var/lib/rkhunter/db/i18n/de
/var/lib/rkhunter/db/i18n/en
/var/lib/rkhunter/db/i18n/zh
/var/lib/rkhunter/db/i18n/zh.utf8
/var/lib/rkhunter/db/mirrors.dat
/var/lib/rkhunter/db/programs_bad.dat
/var/lib/rkhunter/db/suspscan.dat
/var/lib/rkhunter/tmp
使い方
最初に、定義を更新する。cron等で定期実行すると良い。
# rkhunter --update # rkhunter --propupd
チェック
# rkhunter --check
非対話モードでチェック(Enterを要求されない)
# rkhunter --check --skip-keypress
エラーのみ表示する場合は、オプションを付加
# rkhunter --check --skip-keypress --report-warnings-only
デフォルトでは、ログが /var/log/rkhunter.log に出力される。
※ -l オプションでファイルを指定すると、別ファイルにログを出力できる。
設定
khunterの設定ファイルは以下のもの。
/etc/rkhunter.conf
設定ファイルを編集したら、「rkhunter --propupd」を実行する。
これを実行しないと、設定ファイルが変更されている旨(ハッシュが異なる)の警告が出る。
Warning: The file properties have changed: File: /etc/rkhunter.conf Current hash: c050c57f9afa82356ac2f46ed6535e843c01904b Stored hash : ba8f7fa5eca1e95fa090a44e011ef14059c8fdb4 Current size: 38202 Stored size: 38201 Current file modification time: 1350520438 (18-10月-2012 09:33:58) Stored file modification time : 1350520324 (18-10月-2012 09:32:04)
警告の対処
初期設定では、色々な警告が出力されるので対処。
Warning: The command '/usr/bin/GET' has been replaced by a script: /usr/bin/GET: a /usr/bin/perl -w script text executable
↓
設定ファイルに「SCRIPTWHITELIST」を追記する。設定は、1行に1リストあるい
は半角スペース区切りで記載する。
↓
SCRIPTWHITELIST="/usr/bin/GET"
SCRIPTWHITELIST="/usr/bin/ldd"
SCRIPTWHITELIST="/usr/bin/whatis"
SCRIPTWHITELIST="/sbin/ifdown"
SCRIPTWHITELIST="/sbin/ifup"
=====
Warning: Hidden directory found: '/dev/.udev'
↓
「ALLOWHIDDENDIR」「ALLOWHIDDENFILE」にそれぞれ指定する。
↓
ALLOWHIDDENDIR="/dev/.mdadm"
ALLOWHIDDENDIR="/dev/.udev"
ALLOWHIDDENFILE="/usr/share/man/man5/.k5login.5.gz"
ALLOWHIDDENFILE="/usr/share/man/man1/..1.gz"
ALLOWHIDDENFILE="/usr/bin/.ssh.hmac"
ALLOWHIDDENFILE="/usr/bin/.fipscheck.hmac"
ALLOWHIDDENFILE="/usr/sbin/.sshd.hmac"
ALLOWHIDDENFILE="/sbin/.cryptsetup.hmac"
=====
Warning: Application 'httpd', version '2.2.15', is out of date, and possibly a security risk.
↓
「APP_WHITELIST」に指定する。
↓
APP_WHITELIST="httpd" APP_WHITELIST="openssl"
=====
Warning: Suspicious file types found in /dev: /dev/.udev/queue.bin: data /dev/.udev/db/block:sda5: ASCII text /dev/.udev/db/block:sda1: ASCII text /dev/.udev/db/block:sda2: ASCII text /dev/.udev/db/net:eth1: ASCII text /dev/.udev/db/net:eth0: ASCII text /dev/.udev/db/input:event0: ASCII text /dev/.udev/db/block:sda3: ASCII text /dev/.udev/db/block:sda4: ASCII text /dev/.udev/db/block:sda: ASCII text /dev/.udev/db/input:event1: ASCII text /dev/.udev/db/block:sr0: ASCII text /dev/.udev/db/input:event2: ASCII text /dev/.udev/db/input:mouse1: ASCII text /dev/.udev/db/input:event3: ASCII text /dev/.udev/db/block:ram10: ASCII text /dev/.udev/db/block:ram0: ASCII text /dev/.udev/db/block:ram14: ASCII text /dev/.udev/db/block:ram6: ASCII text /dev/.udev/db/block:ram7: ASCII text /dev/.udev/db/block:loop0: ASCII text /dev/.udev/db/block:ram15: ASCII text /dev/.udev/db/block:ram12: ASCII text /dev/.udev/db/block:loop7: ASCII text /dev/.udev/db/block:loop3: ASCII text /dev/.udev/db/block:ram8: ASCII text /dev/.udev/db/block:ram9: ASCII text /dev/.udev/db/block:loop5: ASCII text /dev/.udev/db/block:loop4: ASCII text /dev/.udev/db/block:loop1: ASCII text /dev/.udev/db/block:loop6: ASCII text /dev/.udev/db/block:ram13: ASCII text /dev/.udev/db/block:ram1: ASCII text /dev/.udev/db/block:ram5: ASCII text /dev/.udev/db/block:ram3: ASCII text /dev/.udev/db/block:ram4: ASCII text /dev/.udev/db/block:ram11: ASCII text /dev/.udev/db/block:ram2: ASCII text /dev/.udev/db/block:loop2: ASCII text /dev/.udev/db/serio:serio0: ASCII text /dev/.udev/rules.d/99-root.rules: ASCII text
↓
「ALLOWDEVFILE」に記載する。
↓
ALLOWDEVFILE="/dev/.udev/queue.bin" ALLOWDEVFILE="/dev/.udev/db/block:*" ALLOWDEVFILE="/dev/.udev/db/net:*" ALLOWDEVFILE="/dev/.udev/db/input:*" ALLOWDEVFILE="/dev/.udev/db/serio:*" ALLOWDEVFILE="/dev/.udev/rules.d/99-root.rules"
※SCAN_MODE_DEV=THOROUGH を LAZY に変更しても警告が出なくなるが、設定ファイルには「THOROUGH」を推奨と記載されている。
チェックの定期実行
非対話モードでスキャンを実行し、警告をファイルへ出力し、警告がある場合のみ、メールで通知するスクリプトを作成する。
$ cat rkhunter.sh #!/bin/bash MAIL_TO="root" MAIL_SUBJECT="rkhunter detected warning" MAIL_TEXT=/tmp/`mktemp temp.XXXXXX` rkhunter --update rkhunter --check --skip-keypress --report-warnings-only > $MAIL_TEXT if [ -s $MAIL_TEXT ]; then mail -s "$MAIL_SUBJECT" $MAIL_TO < $MAIL_TEXT fi rm -rf $MAIL_TEXT
※mail -s の引数は、"" で囲わないとスペースが入っている場合に引数と判断されるので注意。
cronに登録する。
# rkhunter check 30 0 * * * root /path-to/rkhunter.sh