Rootkit検知ツール「chkrootkit」を導入してみた

Rootkit ってのは、ファイルやプロセス、レジストリキー、ネットワーク接続を隠してしまうステルスプログラムで、Rootkitに感染してしまうと他のマルウェアの検出や駆除がより困難になってしまう厄介なものだ。
そのヤバい Rootkit に感染していないか検出してくれるツール chkrootkit の導入手順をまとめただけ。
これはサーバーインストール初期に入れておいた方がいいです。

1. chkrootkit をインストール

# yum --enablerepo=epel install chkrootkit

※もし「Error getting repository data for epel, repository not found」とでたら、「# yum -y install epel-release」で、Fedora プロジェクトが提供する RHEL 用にビルドされたスペシャルパッケージを配布する EPEL を追加する。

2. chkrootkit 実行して、Rootkit に感染していないか調査

# chkrootkit | grep INFECTED

実行結果に "INFECTED" という表示されなければ検知されなかったということなので、問題ない。

3. cron で毎日チェックするように設定する

# vi /etc/cron.daily/chkrootkit
#!/bin/bash

PATH=/usr/bin:/bin

TMPLOG=`mktemp`

# chkrootkit実行
chkrootkit > $TMPLOG

# ログ出力
cat $TMPLOG | logger -t chkrootkit

# SMTPSのbindshell誤検知対応
if [ ! -z "$(grep 465 $TMPLOG)" ] && \
   [ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
        sed -i '/465/d' $TMPLOG
fi

# upstartパッケージ更新時のSuckit誤検知対応
if [ ! -z "$(grep Suckit $TMPLOG)" ] && \
   [ -z $(rpm -V `rpm -qf /sbin/init`) ]; then
        sed -i '/Suckit/d' $TMPLOG
fi

# rootkit検知時のみroot宛メール送信
[ ! -z "$(grep INFECTED $TMPLOG)" ] && \
grep INFECTED $TMPLOG | mail -s "chkrootkit report in `hostname`" root

rm -f $TMPLOG

4. chkrootkit に実行権限を付与する

# chmod 700 /etc/cron.daily/chkrootkit