Tripwire で改竄を監視しよう

システムに侵入されないことがもちろん第一ですが, 万が一侵入された場合に素早く発見することも重要です.
不定期に chkrootkit などはかけていますが,なにぶん不定期なので侵入の検知が遅れるかも知れません.
という訳で,ローカルのファイルの整合性をチェックする Tripwireで 改竄を検知できるようにします.

gcc3 で動かすにはパッチを当てる必要があります.
が,当ててもコンパイルは通りませんでした.
さらに,libc を上げたら gcc 2.95.3 でも通らなくなりました.

1. インストール

とりあえずインストールします.下のような感じでちょっとごにょごにょしてます.

で,ごにょごにょしたのが悪いのか 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 を聞かれるので, ちゃんと設定しましょう.
パスフレーズを忘れると,悲しいことになります.

2. 設定する

まず,tripwire 全般の設定をします.
設定ファイルは /etc/tripwire/twcfg.txt ですが,とりあえずデフォルトのまま使ってます.

3. データベースを作ってみる

デフォルトのポリシーファイル (/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.

みたいなメッセージが出たら,データベースの構築は成功です.

4. ポリシーファイルの修正と署名

デフォルトはエラーを吐きまくるので,ちゃんとポリシーファイルを調整しましょう.
とりあえず,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

5. チェックする

実際にチェックしてみましょう.チェックも,けっこう時間がかかります :-(

    # tripwire --check -c /etc/tripwire/tw.cfg

Error Report: が「No Errors」になっているはずです.
これで整合性の確認ができるようになりましたので,あとは cron で回すなり,好きなように使いましょう.

参考文献

このドキュメントの内容は,ZDNet の Security How-to 「Tripwire によるファイル改ざんの検知」を参考にしています.


PREV RETURN NEXT