トップ  > サーバ設定:運用  > サーバ公開前のセキュリティ対策  > rootkit検知ツール導入(chkrootkit)

rootkit検知ツール導入(chkrootkit)  (最終更新日:2011/07/31)

chkrootkitというrootkit検知ツールを使用して、rootkitがサーバにインストールされていないかチェックをします。

chkrootkitは、コマンド(awk, cut, echo, egrep, find, head, id, ls, netstat, ps, strings, sed, uname)を使用してチェックを実施する為、コマンド自体がrootkitを検知できないように改ざんされてからでは意味がないので、OSをインストールした直後の初期段階で導入しておくのが望ましいです。

chkrootkitが検知できるのは既知のrootkitのみであり、新たなrootkitの検知はできない。
また、chkrootkitがrootkitを誤検出する場合もあるので、検出結果は参考程度としておく。

chkrootkitインストール

RPMforge+EPELリポジトリが導入されいない場合こちらを参照してインストールします。

[root@sv ~]# yum install chkrootkit ← chkrootkitインストール

chkrootkit動作確認

[root@sv ~]# chkrootkit | grep INFECTED ← chkrootkit実行
実行後、"INFECTED"という結果が返ってこなければ現状問題ないことになります。

chkrootkit定期実行設定

毎日定期的なチェックをし、インストールされていた場合メールが届くようにします。また、chkrootkitの実行結果は/var/log/messagesに保存されます。

[root@sv ~]# vi chkrootkit ← 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

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

rm -f $TMPLOG
----------ここまで
[root@sv ~]# chmod 700 chkrootkit ← chkrootkit実行スクリプトへ実行権限付加

[root@sv ~]# mv chkrootkit /etc/cron.daily/ ← chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ移動

chkrootkitで使用するコマンドの確保

chkrootkitが使用するコマンド達が既に改竄されていた場合、rootkitを正常に検出できなくなるので、chkrootkitが使用するコマンド達をコピーしておき、必要な場合にはそのコマンド達を使用してchkrootkitを実行する。

[root@sv ~]# mkdir chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリ作成

[root@sv ~]# cp `which --skip-alias awk cut echo egrep find head id ls netstat ps strings sed uname` chkrootkitcmd/ ← chkrootkit使用コマンドを退避先ディレクトリへコピー

[root@sv ~]# chkrootkit -p /root/chkrootkitcmd|grep INFECTED ← 退避したchkrootkit使用コマンドを使用してchkrootkit実行

[root@sv ~]# zip -r chkrootkitcmd.zip chkrootkitcmd/ ← chkrootkit使用コマンド退避先ディレクトリ圧縮
  adding: chkrootkitcmd/ (stored 0%)
  adding: chkrootkitcmd/netstat (deflated 57%)
  adding: chkrootkitcmd/egrep (deflated 49%)
  adding: chkrootkitcmd/strings (deflated 57%)
  adding: chkrootkitcmd/ps (deflated 58%)
  adding: chkrootkitcmd/id (deflated 54%)
  adding: chkrootkitcmd/find (deflated 51%)
  adding: chkrootkitcmd/ls (deflated 55%)
  adding: chkrootkitcmd/uname (deflated 54%)
  adding: chkrootkitcmd/head (deflated 52%)
  adding: chkrootkitcmd/echo (deflated 53%)
  adding: chkrootkitcmd/awk (deflated 51%)
  adding: chkrootkitcmd/sed (deflated 54%)
  adding: chkrootkitcmd/cut (deflated 51%)

[root@sv ~]# rm -rf chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリ削除

[root@sv ~]# yum install sharutils ← mailコマンドでzipファイル添付メールを送信するのに必要なuuencodeコマンドインストール

[root@sv ~]# uuencode chkrootkitcmd.zip chkrootkitcmd.zip|mail root ← chkrootkit使用コマンド(圧縮版)をroot宛にメール送信

[root@sv ~]# rm -f chkrootkitcmd.zip ← chkrootkit使用コマンド(圧縮版)削除