-->

2010-01-17

chkrootkitのインストール

この記事は chkrootkit のワーニングに関する参考です。

インストールをする。
$ sudo emerge -av chkrootkit

実行するとエラーが沢山出ます。
Searching for suspect PHP files... /usr/bin/find: head terminated by signal 13
/usr/bin/find: head terminated by signal 13
...

対処法を探して試したら出なくなりました。
http://bugs.gentoo.org/265478
$ sudo chkroot
$ wget "http://bugs.gentoo.org/attachment.cgi?id=212985&action=view"
$ cd /usr/portage/app-forensics/chkrootkit/
$ sudo ebuild chkrootkit-0.48-r1.ebuild digest
$ sudo emerge -av chkrootkit

対処の内容が元々のパッチ無しのchkrootkit-0.48をインストールしているので戻しました。
$ sudo emerge --sync && sudo layman -S && sudo eix-update
$ sudo emerge -av chkrootkit

すると戻してからsudo chkrootkitを実行してもfindのエラーは出なくなりました。
バイナリの表示のようなものが出るようになりました。
chrootkit内部の実際に出るコマンドを単独で実行しても出ます。
/usr/bin/find /tmp /var/tmp  -type f -exec head -n1 {} \; | grep php 2> /dev/null

ccacheのファイルに反応しています。
find /var/tmp/ccache/ -type f -exec head -n1 {} \;|grep php

ccacheのファイルを消すとエラーが出なくなります。
$ sudo CCACHE_DIR="/var/tmp/ccache" CCACHE_SIZE="2G" /usr/bin/nice /usr/bin/ccache -C

エラーが消えました。
... 
Searching for suspect PHP files... nothing found
Searching for anomalies in shell history files... nothing found
...

結論は chrootkit の内部の find コマンドの動作によってエラーが変わります。
(1) findに引っかかる最初のファイルがバイナリの場合、その後のマッチしたデータの代わりにfindのエラーが表示され続けます。
(2) findに引っかかる最初のファイルがテキストの場合、その後に引っかかるテキストやバイナリが表示されます。
findのマッチするファイルの順番は/var/tmp/ccacheの中身が最初にマッチする場合emergeでccacheを使っているとemergeの後に(1)(2)が変化することがあります。
/tmp/にphpという文字列を含むテキストファイルやバイナリファイルを置くと確認できます。

/usr/sbin/chkrootkit のfindでスペースを出力すると、バイナリファイルの先頭行が最初のマッチでもテキストとして認識されます。
(-exec echo -n " " を追加します。)
(chkrootkitを再インストールすると戻ります。)
###
   ### Suspect PHP files
   ###
...
      fileshead="`${find} ${ROOTDIR}tmp ${ROOTDIR}var/tmp ${findargs} -type f -exec echo -n " " -exec head -n1 {} \; | grep php 2> /dev/null`"

オプションを追加すれば出力が減ります。
chkrootkit -q

0 件のコメント: