CentOS 7 rootkit検知ツールインストール

■chkrootkitインストール

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

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

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

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

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

■chkrootkit確認

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

■chkrootkit定期自動実行設定

[root@server1 ~]# vi /etc/cron.daily/chkrootkit ← chkrootkit実行スクリプトを毎日自動実行されるディレクトリへ作成
#!/bin/bash

PATH=/usr/bin:/bin:/root/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@server1 ~]# chmod 700 /etc/cron.daily/chkrootkit ← chkrootkit実行スクリプトへ実行権限付加

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

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

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

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

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

chkrootkit使用コマンド退避先ディレクトリ圧縮
[root@server1 ~]# zip -r chkrootkitcmd.zip chkrootkitcmd/

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

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

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

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

■Suckit誤検知の修正
Suckit による /sbin/init の改ざん誤検知対策

[root@server1 ~]# chkrootkit | grep INFECTED
Searching for Suckit rootkit... Warning: /sbin/init INFECTED

chkrootkitの修正

[root@server1 ~]# vi /root/bin/chkrootkit
   ### Suckit
   if [ -f ${ROOTDIR}sbin/init ]; then
      if [ "${QUIET}" != "t" ];then printn "Searching for Suckit rootkit... "; fi
      if [ ${SYSTEM} != "HP-UX" ] && ( ${strings} ${ROOTDIR}sbin/init | ${egrep} 'HOME='   || \
              cat ${ROOTDIR}/proc/1/maps | ${egrep} "init." ) >/dev/null 2>&1
        then
      if [ "`md5sum ${ROOTDIR}sbin/init | cut -d ' ' -f 1`" = "`grep 'sbin/init$' /sbin/init | cut -d ' ' -f 1`" ]
      then
        echo "Warning: ${ROOTDIR}sbin/init INFECTED"
      fi
      else
         if [ -d ${ROOTDIR}/dev/.golf ]; then
            echo "Warning: Suspect directory ${ROOTDIR}dev/.golf"
         else
            if [ "${QUIET}" != "t" ]; then echo "nothing found"; fi
         fi
      fi
   fi

chkrootkit確認

[root@server1 ~]# chkrootkit | grep INFECTED
 "INFECTED"という行が表示されなくなった