■ ツボ!その16(資料編)
Tripwire で改ざんをチェック!!(資料編)
Tripwire で改ざんをチェック!!(資料編)
| ROOT | Tripwire の保存場所 |
| POLFILE | ポリシーファイルの指定 |
| DBFILE | ベースラインデータベースファイルの指定 |
| REPORTFILE | チェックの結果をレポートするファイル名の指定 |
| SITEKEYFILE | サイトキーの指定 |
| LOCALKEYFILE | ローカルキーの指定 |
| EDITOR | 使用するエディタの指定 |
| LATEPROMPTING | パスフレーズのプロンプト表示の表示速度の指定。"true"とすると メモリ上にパスワードが保管されている時間を短くするため、遅く表示される |
| LOOSEDIRECTORYCHECKING | チェック対象にしているディレクトリ内のファイルが追加や削除された時に、 そのディレクトリとファイルの両方をレポートとして報告するかどうかの指定。 "true"にすると報告しない |
| MAILNOVIOLATIONS | 違反が無くてもリポートをメールで送信する。 "false"にすると違反が無い場合にはメールで送信しない |
| EMAILREPORTLEVEL | メールで通知するレポートのレベル指定(0〜4) |
| REPORTLEVEL | レポートの内容を表示する際のレベル指定(デフォルトは3) |
| MAILMETHOD | メールを送信するプロトコルの指定 |
| SMTPHOST | メール送信に利用するSMTPサーバ名またはIPアドレス |
| SMTPPORT | SMTPサーバのポート番号、通常は25 |
| SYSLOGREPORTING | SYSLOG に tripwire の動作状態などを記録するかしないか の設定。"true"にすると記録する |
{ }でくくられた部分は、「どんなファイルに対して どういうチェックをするか」というルール部分です。 Tripwire では、ファイル等のオブジェクト (チェック対象)に対してどのようなチェックを行うかを プロパティという値で指示します。例えば・・・
/tmp/test -> $(ReadOnly); ↑ ↑ オブジェクト プロパティ
これは、/tmp/test ファイルに対して、$(ReadOnly)という プロパティでチェックしますよ という意味です。
以下にプロパティをまとめてみました。
| p | ファイルアクセス権 |
| i | iノード番号 |
| n | リンクの数(iノードリファレンス数) |
| u | 所有者のユーザーID |
| g | 所有者のグループID |
| t | ファイルの種類 |
| s | ファイルのサイズ |
| d | ファイルに関連付けられているiノードが 保存されているディスクのデバイス番号 |
| r | iノードが指し示しているデバイスのデバイス番号。 (デバイスオブジェクトに対してのみ有効) |
| b | 割り当てられているブロック数 |
| m | 変更タイムスタンプ |
| c | iノード作成/変更タイムスタンプ |
| l | ファイルサイズの増加。前回チェックした時よりも ファイルサイズが小さくなっているとエラーとして通知する。 ログファイルに最適 ※ |
| a | アクセスのタイムスタンプ ※※ |
| C | CRC-32ハッシュ値。セキュリティレベル低向け |
| M | MD5ハッシュ値。セキュリティレベル中向け |
| S | SHAハッシュ値。セキュリティレベル高向け |
| H | HAVALハッシュ値。セキュリティレベル高向け |
※ 前回チェックした時よりもファイルサイズが 大きくなった場合には、報告されませんし、 データベースも更新されません。 このような場合にはデータベースを任意に 更新する必要があります。
※※ CMSHチェックとは互換性がないので、一緒にチェックすると エラーとして報告されてしまいます。これを避けるには 属性(後述)で recurse = false を使用し、 設定ファイルで LOOSEDIRECTORYCHECKING = true を 設定するか、-a を追加します。
例えば、
ファイルのアクセス権と所有者のユーザーIDと
MD5のハッシュについてチェックする場合は・・・
/tmp/test -> +puM ;
ほぼ全てのプロパティをチェックする場合は・・・ (成長型ファイルではない)
/tmp/test -> +pinugtsdrbamcCMSH ;
ファイルの存在のみをチェックする場合は・・・
/tmp/test -> -pinugtsdrlbamcCMSH ;
と、このように、プロパティに「+」 「−」を付けてチェックする/しない を指定します。が、全てのオブジェクトに対して 18種類のプロパティを指定するのは大変です。 そこで、目的に応じたプロパティの組み合わせが 分かりやすい名前で指定できる方法が用意されています。
| $(ReadOnly) | 読み取り専用ファイル +pinugtsdbmCM-rlacSH と同じ |
| $(Dynamic) | たびたび変更のあるファイル +pinugtd-srlbamcCMSH と同じ |
| $(Growing) | サイズが大きくなるが、小さくはならないファイル +pinugtdl-srbamcCMSH と同じ |
| $(IngnoreAll) | ファイルの存在のみをチェック -pinugtsdrlbamcCMSH と同じ |
| $(IgnoreNone) | 全ての属性を監査する(成長型ファイル以外) +pinugtsdrbamcCMSH-l と同じ |
| $(Device) | デバイスファイル +pugsdr-intlbamcCMSH と同じ |
ポリシーファイルの中に( )でくくられたところがありますね。 それは、属性と呼ばれていて、4種類あります。
ルールブロックの名前を指定することができます。 ここで指定した名前で整合性チェックやレポートの作成が 行われるので、分かりやすい名前にしましょう。
今回のポリシーファイルの場合、
/usr/sbin/tripwire -m c -R "etc"
とすると、/etc 以下のみチェックすることができます。 特に何も指定しなかった場合はポリシーファイルで 記述したルールでチェックします。
severity属性を利用すると、個々のルールに対して重要度を 0〜1,000,000の範囲で指定することができます。 特に指定しない場合は 0 になっています。 この属性は利用しなくても問題ありません。 しかし、チェック対象とする重要度レベルを指定してチェックを することができます。例えば、重要度が100以上のものをチェックする 場合は
/usr/sbin/tripwire -m c -l 100
とすれば良いのです。
整合性チェックで違反があった場合に通知する メールアドレスを指定することができます。 sample.txt のようにルールブロックに指定した場合は どのルールに違反が発生していても メールで通知されます。また、ルールごとに 個別にメールでの通知を指定することもできます。
「true」、「false」または-1〜1,000,000の値で ディレクトリに対する再帰の階層を指定します。 デフォルトでは true (-1) で設定されているので 指定したディレクトリ以下の全てのファイルやディレクトリを チェックします。
false (0) にした場合は、ディレクトリに対応する iノードはスキャンしますが、そのディレクトリに含まれる ファイルやディレクトリはスキャンしません。 recurse 属性が0より大きい値を指定した時は、 指定した値のレベルまでのすべてのオブジェクトが チェックされます。
また、マウントポイントが異なると再帰的なチェックは しません。例えば、/usr と /usr/local というディレクトリが あるとして、これらのマウントポイントが異なっていると /usr ディレクトリ配下全てをチェックしようとしても /usr/local はチェックされません。このような場合には、
/usr -> $(ReadOnly) ; /usr/local -> $(ReadOnly) ;とルール指定するとチェックが行われます。
特定のファイルやディレクトリを チェックから外す時には、 「!」(ストップポイント)を使います。
!/home/user1/test.txt;
ファイル名にスペースや記号がある場合は ダブルクォーテーションを使います。
"/home/user2/test file" -> +p ; "/home/user1/\sample.txt" -> $(ReadOnly) ;
照合が完了すれば、下記のようなレポートが表示されます。
Parsing policy file: /etc/tripwire/tw.pol *** Processing Unix File System *** Performing integrity check... The object: "/home" is on a different file system...ignoring. The object: "/proc" is on a different file system...ignoring. The object: "/usr" is on a different file system...ignoring. The object: "/var" is on a different file system...ignoring. Wrote report file: /var/lib/tripwire/report/xxxx-2003xxxx-121153.twr Tripwire(R) 2.3.0 Integrity Check Report Report generated by: root Report created on: 2003年xx月xx日 xx時xx分xx秒 Database last updated on: Never =============================================================================== Report Summary: =============================================================================== Host name: localhost.localdomain Host IP address: 127.0.0.1 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg Database file used: /var/lib/tripwire/xxxx.twd Command line used: /usr/sbin/tripwire -m c =============================================================================== Rule Summary: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- root 0 0 0 0 (/) * etc 0 0 1 0 (/etc) bin 0 0 0 0 (/bin) boot 0 0 0 0 (/boot) lib 0 0 0 0 (/lib) sbin 0 0 0 0 (/sbin) Total objects scanned: 2778 Total violations found: 1 =============================================================================== Object Summary: =============================================================================== ------------------------------------------------------------------------------- # Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: etc (/etc) Severity Level: 0 ------------------------------------------------------------------------------- Removed: "/etc/tripwire/sample.txt" =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report *** Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved. Integrity check complete.
「*」がついている所が改ざんを検知した所を示しています。 また、今回は青字の所のように詳細にレポートされています。
Tripwire(R) 2.3.0 Integrity Check Report Report generated by: root Report created on: 2003年xx月xx日 xx時xx分xx秒 Database last updated on: 2003年xx月xx日 xx時xx分xx秒 =============================================================================== Report Summary: =============================================================================== Host name: xxxx Host IP address: 127.0.0.1 Host ID: None Policy file used: /etc/tripwire/tw.pol Configuration file used: /etc/tripwire/tw.cfg Database file used: /var/lib/tripwire/sabrina.twd Command line used: /usr/sbin/tripwire -m c -M =============================================================================== Rule Summary: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- Rule Name Severity Level Added Removed Modified --------- -------------- ----- ------- -------- root 0 0 0 0 (/) * etc 0 0 0 1 (/etc) bin 0 0 0 0 (/bin) boot 0 0 0 0 (/boot) lib 0 0 0 0 (/lib) sbin 0 0 0 0 (/sbin) Total objects scanned: 2778 Total violations found: 1 =============================================================================== Object Detail: =============================================================================== ------------------------------------------------------------------------------- Section: Unix File System ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- Rule Name: etc (/etc) Severity Level: 0 ------------------------------------------------------------------------------- ---------------------------------------- Modified Objects: 1 ---------------------------------------- Modified object name: /etc/group Property: Expected Observed ------------- ----------- ----------- Object Type Regular File Regular File Device Number 771 771 Inode Number 28351 28351 Mode -rw-r--r-- -rw-r--r-- Num Links 1 1 UID root (0) root (0) GID root (0) root (0) Size 624 624 * Modify Time 2003年xx月xx日 xx時xx分xx秒 2003年xx月xx日 xx時xx分xx秒 Blocks 2 2 * CRC32 ASfwCh DaleCr * MD5 D2CVLyVUcgGP5uR/YG+lIY BA43aKeAS+R/NWyYYLjF6o =============================================================================== Error Report: =============================================================================== No Errors ------------------------------------------------------------------------------- *** End of report *** Tripwire 2.3 Portions copyright 2000 Tripwire, Inc. Tripwire is a registered trademark of Tripwire, Inc. This software comes with ABSOLUTELY NO WARRANTY; for details use --version. This is free software which may be redistributed or modified only under certain conditions; see COPYING for details. All rights reserved.
tripwire -m c -M ↑ ↑ ↑ コマンド モード オプション
| オプション | 意味 | -L ローカルキーのパス | 指定されたファイルにローカルキーを作成 |
|---|---|
| -S サイトキーのパス | 指定されたファイルにサイトキーを作成 |
| オプション | 意味 | -S サイトキーのパス | 新しい設定ファイルのバイナリ変換するために 指定されたサイトキーファイルを利用 |
|---|---|
| -c 設定ファイルのパス | 作成先の設定ファイルを指定 |
| オプション | 意味 | -c 設定ファイルのパス | 使用する設定ファイルを指定する |
|---|---|
| -S サイトキーのパス | 新規ポリシーファイルのバイナリ化するために サイトキーファイルを指定する |
| -p ポリシーファイルのパス | 作成先のポリシーファイルを指定する |
| オプション | 意味 | -p ポリシーファイルのパス | 使用するポリシーファイルを指定する |
|---|---|
| -c 設定ファイルのパス | 使用する設定ファイルを指定する |
| -d データベースのパス | 指定したファイルへデータベースを書き込む |
| -S サイトキーのパス | 設定ファイルとポリシーファイルの読み込みに 使用するサイトキーファイルを指定する |
| -L ローカルキーのパス | データベースの書き込みに使用する ローカルキーファイルを指定する |
| オプション | 意味 | -c 設定ファイルのパス | 使用する設定ファイルを指定する |
|---|---|
| -p ポリシーファイルのパス | 指定されたポリシーファイルを出力する |
| -S サイトキーのパス | 使用するサイトキーファイルを指定する |
| オプション | 意味 | -I | 整合性チェック後、結果のレポートが データベース更新のためエディタ(デフォルトではvi)で開かれる |
|---|---|
| -c 設定ファイルのパス | 使用する設定ファイルを指定する |
| -p ポリシーファイルのパス | 使用するポリシーファイルを指定する |
| -S サイトキーのパス | 設定ファイルとポリシーファイルの読み込みに 指定するサイトキーファイルを使用する |
| -L ローカルキーのパス | データベースの読み込みに使用する ローカルキーファイルを指定する |
| -r レポートのパス | 指定したファイルにレポートを書き込む |
| -M | 設定ファイルのオプションを使ってポリシーファイルで 指定した受信者にレポートを送付する |
| -t 0〜4を指定 | 電子メールレポートの詳細度を指定する (0が最も簡易) |
| -R ルール名 | 指定されたポリシールールのみ実行 |
| -l 重要度 | 指定した重要度以上のポリシールールのみ実行 |
| オプション | 意味 | -c 設定ファイルのパス | 使用する設定ファイルを指定する |
|---|---|
| -p ポリシーファイルのパス | 使用するポリシーファイルを指定する |
| -d データベースのパス | 使用するデータベースファイルを指定する |
| -S サイトキーのパス | 設定ファイルとポリシーファイルの読み込みに 指定するサイトキーファイルを使用する |
| -L ローカルキーのパス | データベースの読み込み/書き込みと レポートファイルの読み込みに指定された ローカルキーファイルを使用する |
| -Z lowもしくは highを指定 | データベースの更新に使用される.twrファイルの情報と 現在のデータベースとの間に不一致がある場合のTripwireの 動作を指定。デフォルトでは high |
| -r レポートファイルのパス | 指定されたファイルを読み込む |
| オプション | 意味 | -p ポリシーファイルのパス | 指定されたポリシーファイルを更新する |
|---|---|
| -d データベースのパス | 指定されたデータベースファイルを更新する |
| -c 設定ファイルのパス | 指定された設定ファイルを更新する |
| -S サイトキーのパス | 設定ファイルとポリシーファイルの読み込み/書き込みに 指定したサイトキーファイルを使用する |
| -L ローカルキーのパス | データベースの読み込み/書き込みに指定された ローカルキーファイルを使用する |
| -Z lowもしくは highを指定 | セキュリティレベルを指定する。 旧ポリシーの違反がある場合にポリシーファイルと データベースファイルを保存するかどうかが決定される。 デフォルトは high |
| オプション | 意味 | -c 設定ファイルのパス | 指定された設定ファイルを使用 |
|---|---|
| -r レポートファイルのパス | 指定されたレポートファイルを表示 |
| -L ローカルキーのパス | 指定したローカルキーファイルを使ってレポート ファイルを検証する |
| -t 0〜4を指定 | 指定されたレポートレベルを表示する。 0が最も簡易 |