システムに侵入されないことがもちろん第一ですが,
万が一侵入された場合に素早く発見することも重要です.
不定期に chkrootkit などはかけていますが,なにぶん不定期なので侵入の検知が遅れるかも知れません.
という訳で,ローカルのファイルの整合性をチェックする Tripwireで
改竄を検知できるようにします.
gcc3 で動かすにはパッチを当てる必要があります.
が,当ててもコンパイルは通りませんでした.
さらに,libc を上げたら gcc 2.95.3 でも通らなくなりました.
とりあえずインストールします.下のような感じでちょっとごにょごにょしてます.
で,ごにょごにょしたのが悪いのか libc 入れかえたら segmentation fault で動かなくなりました.
native header をごまかして突っこんだのがやっぱり悪かったんでしょうか…
% tar zxvf tripwire-2.3.1-2.tar.gz
% cd tripwire-2.3.1/src
% vi Makefile
% cd STLport-4.0
% ln -s stlport g++-include
% vi stlport/exception
--- stlport/exception.orig Thu Dec 19 13:42:08 2002
+++ stlport/exception Thu Dec 19 13:43:12 2002
@@ -44,8 +44,8 @@
# if defined (__GNUC__) && (__GNUC_MINOR__ >= 8 )
# include <../include/exception>
-# else
-# include __STL_NATIVE_HEADER(exception)
+//# else
+//# include __STL_NATIVE_HEADER(exception)
# endif
// dwa 02/04/00 - here I'm assuming that __ICL uses the same library headers as vc6.
// the header which ships with vc6 and is included by its native
% cd ../
% make all CXX=g++-gcc-2.95.3
% cd ../
% ln -s install/install.cfg
% ln -s install/install.sh
% vi install.cfg
# ./install.sh
install.sh を実行すると,site-passphrase と local-passphrase を聞かれるので,
ちゃんと設定しましょう.
パスフレーズを忘れると,悲しいことになります.
まず,tripwire 全般の設定をします.
設定ファイルは /etc/tripwire/twcfg.txt ですが,とりあえずデフォルトのまま使ってます.
デフォルトのポリシーファイル (/etc/tripwire/twpol.txt)を使って,ちゃんとデータベースができるか確認してみましょう.
ちなみに,データベースの構築は結構時間がかかります.
# tripwire --init -c /etc/tripwire/tw.cfg
ポリシーファイルがデフォルトのままだと,山のようにエラー(No such file or directory)を吐きます.
まぁこれは後でポリシーファイルをちゃんと設定しましょう.
Wrote database file: /var/lib/tripwire/hostname.twd
The database was successfully generated.
みたいなメッセージが出たら,データベースの構築は成功です.
デフォルトはエラーを吐きまくるので,ちゃんとポリシーファイルを調整しましょう.
とりあえず,No such file になったものを修正するか,コメントアウトします.
tripwire は暗号署名された設定ファイルを読みますので,修正が終わったら署名します.
ポリシーファイルだけでなく,設定ファイルを変えたときも同様に署名が必要です.
# twadmin --create-polfile -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twpol.txt
ポリシーファイルを修正したら,データベースを初期化しておきましょう.
# tripwire --init -c /etc/tripwire/tw.cfg
実際にチェックしてみましょう.チェックも,けっこう時間がかかります :-(
# tripwire --check -c /etc/tripwire/tw.cfg
Error Report: が「No Errors」になっているはずです.
これで整合性の確認ができるようになりましたので,あとは cron で回すなり,好きなように使いましょう.
このドキュメントの内容は,ZDNet の Security How-to 「Tripwire によるファイル改ざんの検知」を参考にしています.