rootkit検出ツール(CentOS7)

提供:あわ自由帳

メインページ > CentOS 7 で自宅サーバー構築  > rootkit検出ツール(CentOS7)

chkrootkitというrootkit検知ツールを導入して、rootkitがLinuxサーバーにインストールされてしまっていないかチェックする。既知のものしか検出できない上に、誤検知もたまにあるので、検出結果は参考程度に留めておいてよいでしょう。

chkrootkitインストール

[root@host3 ~]# wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz ← chkrootkitダウンロード

[root@host3 ~]# tar zxvf chkrootkit.tar.gz ← chkrootkit展開

[root@host3 ~]# mkdir -p ~/bin && mv chkrootkit-0.50/chkrootkit ~/bin ← chkrootkitを移動

[root@host3 ~]# rm -rf chkrootkit-0.50/ ← chkrootkit展開先ディレクトリを削除

[root@host3 ~]# rm -f chkrootkit.tar.gz ← ダウンロードしたchkrootkitを削除

実行

[root@host3 ~]# chkrootkit
ROOTDIR is `/'
 ・
 ・
 ・
Checking `chkutmp'... => possibly 1 deletion(s) detected in /var/run/utmp !
chkutmp: nothing deleted
Checking `OSX_RSPLUG'... not infected

chkrootkit確認

[root@host3 ~]# chkrootkit | grep INFECTED ← chkrootkit実行
上記chkrootkit実行結果として"INFECTED"という行が表示されなければ問題なし

chkrootkit定期自動実行設定

[root@host3 ~]# 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@host3 ~]# chmod 700 chkrootkit 
← chkrootkit実行スクリプトへ実行権限付加

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