■Tripwireによるファイル改ざんの検知
第2回:ポリシーファイルの作成と編集
Tripwireを使用するには、監視したいファイルやディレクトリ、そしてそれらをどのように監視するかを決める「ポリシーファイルの作成や編集」が重要な要素となる。今回はポリシーファイルの記述方法について解説する

ポリシーファイルのルール記述例

 Tripwireを利用するには、ポリシーファイルの作成、編集が重要な要素となる。前回の「Tripwireを導入する−その1」では、ポリシーファイルとしてTripwireに付属しているサンプルポリシーファイルを利用し、単純に「整合性のチェックを行った際にエラーとなるもの」をコメントアウトして利用したが、第1回 図1のフローチャートを見てもわかるように、Tripwireを導入する際には、使用しているシステムや利用方法に合わせて、ポリシーファイルを編集しておく必要がある。

 もちろん、無理をして1から作成するわけではなく、サンプルポリシーファイルをうまく流用したり参考にしながら、システムに合わせたポリシーファイルとしていけばよいだろう。

ポリシーファイルの記述例

 まず、はじめにポリシーファイルの簡単なルール記述例を見てみよう。

例)

(
 rulename =sample
)
{
 /tmp/test.txt -> +p ;
 
}

上記のルールには、

ルール名:sample
検査対象ファイル:/tmp/test.txt
検査チェック内容:ファイルのアクセス権

という内容が記述されている。これを一般化すると、

(
 [ルールの名前、重要度レベル、電子メールを利用した通知、などを指定]
)
{
 検査対象ファイル(オブジェクト) -> 検査する内容(プロパティマスク)
}

となる。

 ( )でくくられた部分に記述されている項目には、ルールの名前や重要度レベルなどを指定する。これらは「属性」と呼ばれている。今回の記述例では、ルールの名前として「sample」を指定している。

 { }でくくられた部分が、「どのようなファイルに対しどういったチェックを行うか」というルール部分になる。「/tmp/test.txt -> +p」の/tmp/test.txtは検査の対象となるファイル、+pはどういった検査をするかを指定している。

 また、+pの「+」は、検査内容「p」をチェックを行うという事を指定をしており、検査内容「p」のチェックを行わない場合は「-」をつけて「-p」とする。

○プロパティの指定

 検査内容は「プロパティ」と呼ばれ、Tripwireには下記のような項目がある。

・プロパティの指定

表1■プロパティ(検査内容)の一覧
+ チェックを行う
- チェックを行わない
p ファイルのアクセス権
i iノード番号
n リンク数
u 所有者のユーザーID
g 所有者のグループID
t ファイルの種類
s ファイルのサイズ
l 成長するファイル(大きくなるが、小さくならないファイル/例::ログファイル)
d iノードが格納されるディスクのデバイス番号
r iノードによって示されているデバイスのデバイス番号
b 割り当てられているブロックの数
a アクセスタイムスタンプ(ファイルが読まれたことを示す)
m 修正時刻スタンプ
c iノード作成/修正時刻スタンプ(iノードが修正された最後の時刻)
C CRC-32ハッシュ値
M MD5ハッシュ値
S SHAハッシュ値
H Havalハッシュ値

 さきほどの例は「+p」だったため、「ファイルのアクセス権のチェックを行う」という指定をしたことになるが、実際にはいくつかの項目を複数組み合わせて指定することになる。たとえば、アクセス時間やファイルのサイズ、アクセス権など、チェックしたい内容、チェックしない内容を続けてルールに記述する。

 例を挙げてみよう。

例1)/etc/passwdのアクセス時間、アクセス権、ファイルサイズをチェックする

/etc/passwd -> +aps;

例2)/tmp/test.txtの存在のみをチェックする

/tmp/test.txt -> -pinugtsdrlbamcCMSH;

 ただし、実際に記述する際には、いちいちこういったプロパティを記入する必要はない。Tripwireでは、あらかじめ定義されている変数でプロパティマスクを記述することができるためだ。記述方法は下記のようになる。

/tmp/test.txt -> $(変数);

表2■定義されている変数
変数 チェック内容 用いられるファイル、ディレクトリなど
ReadOnly +pinugtsdbmCM-rlacSH リードオンリーのファイル
Dynamic +pinugtd-srlbancCMSH たびたび変更のあるディレクトリ
Growing +pinugtdl-srbamcCMSH 時間とともにより大きくなるファイル
Device +pubsdr-intlbamcCMSH デバイスファイル
IgnoreAll -pinugtsdrlbamcCMSH ファイルの存在のみをチェック
IgnoreNone +pinugtsdrlbamcCMSH-l 成長型ファイル以外は全てのプロパティをチェックする

例)

/tmp/test.txt -> $(IgnoreAll);

  ↓変数を利用した場合は下記と同じことを意味する

/tmp/test.txt -> -pinugtsdrlbamcCMSH;

 ファイル名にスペースや「$」マーク、バックスラッシュなどがある場合は、ダブルクォーテーションを使用する

例)
"/home/hoge/sample file" -> +pingus;
"/home/hoge/$1000.txt" -> +s;
"/home/hoge/el\0q" -> +aps;

 特定のファイルをスキャンの対象から外す場合には、「!」(ストップポイント)を利用する。

例)

!/etc/netmasks
(etc/netmasksはTripwireのスキャン対象から外される)

1/3 NEXT


Special

- PR -

Special

- PR -