TripWireの設定メモ

ファイル改ざん検知ツールのTripWireをインストールした際のメモ。

インストールが終わってtripwire --initでDBを作成しようとしたら、以下のようなエラーが発生。

### Error: File seek failed.
### Filename: /foo/bar/os.img
### Success
### Exiting...

※"Filename"のパスは変更して載せてます。

調べてみたら容量の大きいファイルがあるため、読み込みに失敗したというエラーらしいです。DBも作成されていません。
("Success"って書いてあるのに。。。)
Filenameに表示されているファイルを確認したところ、どうやら以前KVMに入れた仮想OSのイメージの容量が大きすぎてエラーになった模様。

該当のファイルをチェックの対象から外すにはtwpol.txtのMonitor Filesystemsの項目を編集します。

################################################ #
# # #
# Monitor Filesystems # #
# ##
################################################
(
rulename = "Monitor Filesystems",
)
{
/ -> $(ReadOnly) ;
/home -> $(ReadOnly) ; # Modify as needed
/usr -> $(ReadOnly) ;
/var -> $(ReadOnly) ;
!"/foo/bar/os.img"; <=こんな感じでチェック対象外のファイルを追加
}

編集後、もう一度tripwire --initを実行したら今度は上手くいきました。
次にTripWireからメールを送信できるか試してみたら、またしてもエラーが。。。

tripwire --test --email test@mail.com
Sending a test message to: test@mail.com
### Error: Execution of mail program failed.

sendmailの起動に失敗している模様。
確認したら、hosts.allowファイルの設定で弾かれていたので、修正。んで、もう一度テストメールを送信したらエラーは出なかったのでうまく行ったと思ったのですが。。。
送信先のメールボックスにはメールは届いてませんでした。。。

wiresharkでパケットをキャプチャしてみたら、どうもSMTPのパケットがキチンと届いてないみたいです。
メールキューにも、しっかりメールが残ってます。
sendmail -qでキューに溜まっているメールを送信しようとしても"Connection timed out"で送信されません。

確認したら、ルータのACL設定で弾かれてました。ので、こちらも修正。これでメールが無事送信されるようになりました。

次にレポートを指定のメールアドレスに送信するための設定ですが、これには2つ方法があるみたいです。
1つはポリシーファイル(twpol)に"emailto"属性を定義する方法、もう一つは設定ファイル(twcfg)に"GLOBALEMAIL"変数を定義する方法です。

1つ目の方法はポリシーファイル内の各ルールディレクティブの"severity"という属性の後に"emailto"属性を追加しないといけないようなのですが、何故か私のポリシーファイルには"severity"という属性がありませんでした。
ので、2つ目の方法を選択。下記のようにtwcfg.txtを編集しました。

MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/sendmail -oi -t
GLOBALEMAIL =test@mail.com <=この行を追加

twadminコマンドで設定ファイルを更新して、以下のコマンドでファイルチェックを行いレポートを送信。
tripwire --check --email-report
無事、レポートメールが送信されました。

最後にTripWireによるファイルチェック&レポート送信を自動化するようにcrontabに登録。
00 01 * * 6 /usr/local/sbin/tripwire --check --email-report
※毎週土曜にチェックを実行


TripWireの簡単なメモ
設定の編集に関連するファイルは以下の通り。

・tw.cfg : 暗号化された設定ファイル
・twcfg.txt : クリアテキストの設定ファイル
・tw.pol : 暗号化されたポリシーファイル
・twpol.txt : クリアテキストのポリシーファイル

ポリシーファイルや設定ファイルの編集は.txt形式のファイルを編集して行う。
編集が終わったらtwadminコマンドでテキストファイルをもとに暗号化ファイルを作成、更新する。

セキュリティの観点からポリシーファイルと設定ファイルのテキストファイルは削除したほうがいいでしょう。
編集が必要な場合は後述のコマンドで暗号化された各ファイルをテキストファイルに出力できます。

以下はコマンドメモ
※各ファイルのパスは環境に合わせて読み替えること
※コマンドをバックグラウンドで動作させたいときは"-s""--silent"オプションを付けます。

■DBの初期化

tripwire --init

■DBの更新
DBの状態を最新のシステム状態に同期させます。これをやらないと、古いDBをもとにチェックを実行するので、現在のシステムの状態と食い違いが発生する可能性があります。

tripwire -m u
または
tripwire --update
※DBの更新を引数なし実行すると、存在しないレポートファイルをもとに更新しようとするのでエラーになる。なので引数に作成済みのレポートファイルを指定して更新する必要がある。
レポートファイルを指定して更新する場合
tripwire -m u -r [reportfile]
または
tripwire --update --twrfile [reportfile]

■整合性チェック

tripwire --check

■暗号化ポリシーファイル(tw.pol)の作成

twadmin --create-polfile -S /usr/local/etc/site.key /usr/local/etc/twpol.txt
または
twadmin -m P -c /usr/local/etc/tw.cfg -p /usr/local/etc/tw.pol -S /usr/local/etc/site.key /usr/local/etc/twpol.txt

■暗号化設定ファイル(tw.cfg)の作成

twadmin --create-cfgfile -S /usr/local/etc/site.key /usr/local/etc/twcfg.txt
または
twadmin -m F -c /usr/local/etc/tw.cfg -S /usr/local/etc/site.key /usr/local/etc/twcfg.txt

■設定ファイル(tw.cfg)の内容の表示

twadmin -m f -c /usr/local/etc/tw.cfg

■ポリシーファイル(tw.pol)の内容の表示

twadmin -m p -p /usr/local/etc/tw.pol

■設定ファイル(tw.cfg)の内容をtwcfg.txtファイルに出力

twadmin -m f > /usr/local/etc/twcfg.txt

■ポリシーファイル(tw.pol)の内容を twpol.txt ファイルに出力

twadmin -m p > /usr/local/etc/twpol.txt

■レポートメールの送信

tripwire --check --email-report

■テストメールの送信

tripwire --test --email test@mail.com

■レポートの内容を表示する

twprint -m r -r [report].twr

参考URL
http://d.hatena.ne.jp/rougeref/20130814
http://www.asahi-net.or.jp/~wv7y-kmr/memo/tripwire.html
http://ohwhsmm7.blog28.fc2.com/blog-entry-196.html
http://evilblade.blog24.fc2.com/blog-entry-790.html
http://linux.m2osw.com/tripwire-init-not-saving-database
レポートファイルのアップデートについて↓
https://www.tripwire.co.jp/products/data/guide/guide08.html

Leave a Reply

Your email address will not be published. Required fields are marked *