■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"という行が表示されなくなった