rootkit検知ツール導入(chkrootkit)

最終更新日: 2022.12.15

■概要

chkrootkitというrootkit検知ツールを導入して、rootkitがLinuxサーバーにインストールされてしまっていないかチェックする。
chkrootkitは、以下のコマンドを使用してチェックするため、コマンド自体がrootkitを検知できないように改竄されてからでは意味がないので、Linuxインストール後の初期の段階で導入しておくのが望ましい。

【chkrootkitが使用するコマンド】
awk, cut, echo, egrep, find, head, id, ls, netstat, ps, strings, sed, uname

なお、chkrootkitが検知できるのは既知のrootkitのみであり、新たなrootkitの検知はできない。
また、rootkitが設置されていないにもかかわらず、chkrootkitが誤ってrootkitを検知したとアラームをあげる場合もあるので、chkrootkitによるrootkitの検知結果は参考程度としておく。



■chkrootkitインストール

[root@almalinux ~]# git clone https://github.com/Magentron/chkrootkit.git ← chkrootkitダウンロード

[root@almalinux ~]# cp chkrootkit/chkrootkit /usr/local/bin/ ← chkrootkitインストール

[root@almalinux ~]# rm -rf chkrootkit ← ダウンロードしたchkrootkitを削除

■chkrootkit確認

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

■chkrootkit定期自動実行設定

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

LOG=/tmp/$(basename ${0})

# chkrootkit実行
chkrootkit > $LOG 2>&1

# ログ出力
cat $LOG | logger -t $(basename ${0})

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

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

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

[root@almalinux ~]# chmod 700 /etc/cron.daily/chkrootkit ← chkrootkit実行スクリプトへ実行権限付加
これで毎日定期的にrootkitがインストールされていないかチェックされ、インストールされていた場合はroot宛にメールが届くようになる。また、chkrootkitの実行結果は/var/log/messagesに保存される。

■chkrootkitで使用する安全なコマンドの確保

chkrootkitが使用するコマンド群が既に改竄されていた場合、rootkitを正常に検出できなくなるので、chkrootkitが使用するコマンド群をコピーしておき、必要な場合にはそのコマンド群を使用してchkrootkitを実行する。
[root@almalinux ~]# mkdir chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリ作成

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

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

[root@almalinux ~]# zip -r chkrootkitcmd.zip chkrootkitcmd/ && rm -rf chkrootkitcmd ← chkrootkit使用コマンド退避先ディレクトリを圧縮して削除

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

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


■関連コンテンツ




▲このページのトップへ戻る

プライバシーポリシー