さてセキュリティ向上の第3回目 最終回です。
今回はrootkit検出ツールを導入します。
rootkitはクラッカーがサーバに侵入した後、管理者に見つからないように侵入の痕跡を隠匿するツールやコマンドです。同時にバックドアやデータ傍受の機能も持ってたりもします。
いったん仕込まれてしまうと検出ツールが使用するコマンド群自体が汚染されるので検出出来なくなります。なので安全なコマンド群を確保できる初期段階で検出ツール(chkrootkit)を導入しておくのが望ましいです。
導入の流れは以下です。前回のtripwireよりは楽そうです。
1.インストール
2.chkrootキットの実行
3.定期実行スクリプトの作成とスケジューラ登録
4.汚染前の安全なコマンド群を確保
参考URL
sa-sa-ki.jpのblog
centOSで自宅サーバー構築
mk-mode BLOG
【導入前の注意(おやくそく)】
・chkrootkitが検出できるのは既知のrootkitのみなので過信しない。
・rootkitが無いのに誤検知することもわりと多いらしいので検出結果は参考程度とし、最後は自分で判断する。
【1.インストール】
インストールします。
sudo apt-get install chkrootkit
特に問題なく終了
【2.chkrootキットの実行】
まず実行します。
インストール時点ではrootkitに感染していないことが前提なので、ここで誤検知を洗い出して修正します。
“INFECTED”でソートして問題のある場合のみ出力するようにしてます。
sudo chkrootkit | grep INFECTED
何も出力されず終了。幸い誤検知はしなかったようです。
【3.実行スクリプトの作成と定期実行のスケジューラ登録】
実行スクリプトを作成して定期的にチェックするようスケジューラに登録します。
実行スクリプトの作成
su –
vi /root/chkrootkit.sh
viが起動したら以下のスクリプトを入力
——- ここから ———-
#!/bin/bash
PATH=/usr/bin:/bin:/sbin:/usr/sbin
TMPLOG=`mktemp`
# Exec chkrootkit
chkrootkit > $TMPLOG
# Output log
cat $TMPLOG | logger -t chkrootkit
# SMTPS bindshell false positive counter measure
if [ ! -z “$(grep 465 $TMPLOG)” ] && \
[ -z $(/usr/sbin/lsof -i:465|grep bindshell) ]; then
sed -i ‘/465/d’ $TMPLOG
fi
# Send mail to root if positive
[ ! -z “$(grep INFECTED $TMPLOG)” ] && \
grep INFECTED $TMPLOG | mail -s “chkrootkit report in `hostname`” root
rm -f $TMPLOG
——- ここまで ———-
スクリプトに実行権限をつけます。
chmod 700 chkrootkit.sh
毎日自動実行されるディレクトリへ移動
mv chkrootkit.sh /etc/
【4.汚染前の安全なコマンド群を確保】
汚染される前の安全なコマンド群を保存しておいて、もしコマンドが改竄された場合はこれらを使用してchkrootkitを実行します。
chkrootで使用するコマンド退避先ディレクトリ作成
mkdir chkrootkitcmd
コマンド群を退避ディレクトリへコピー
cp `which chkrootkit awk cut echo egrep find head id ls netstat ps strings sed uname` chkrootkitcmd/
退避したコマンドを使用してchkrootkitを実行
chkrootkit -p /root/chkrootkitcmd | grep INFECTED
退避ディレクトリの圧縮
zip -r chkrootkitcmd.zip chkrootkitcmd/
退避ディレクトリの削除
rm -rf chkrootkitcmd
安全なコマンドをメールでルートへ送付
uuencode chkrootkitcmd.zip chkrootkitcmd.zip | mail -s “clean commands for chkrootkit” root
コマンドの圧縮ファイルを削除
rm -f chkrootkitcmd.zip
ルートからログアウト
exit
rootkit検出ツールの導入は以上です。
セキュリティ向上は今回でひと段落。いったん終了します。
疲れたよパトラッシュ。。。
セキュリティ向上の項目は他にも以下のようなものなど、まだまだいっぱいあります。
・ファイアーウォールの導入 (ルーターのポートを遮断で対応するので割愛)
・ウィルス対策の導入(Raspberry Piは非力なので割愛)
・SSHへの攻撃対策 (だいぶ安全になってるのであとは公開してからでもいいかな)
・ログの常時監視 (そのうちやるかも。興味があればswatchで検索)
・ファイルの暗号化(これはどこかでやりたい)
まあ、きりがないのであとは必要に応じて適宜対応していこうと思います。
次回からWEBサーバー構築に入ります。やっとここまできたよ。わーい。
2014年4月27日作成
2014年5月5日草稿公開