ツボ!その16(資料編)

Tripwire で改ざんをチェック!!(資料編)


設定ファイルの内容( twcfg.txt )

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"にすると記録する

ポリシーファイルの内容

  1. ルール

    { }でくくられた部分は、「どんなファイルに対して どういうチェックをするか」というルール部分です。 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 と同じ

  2. 属性

    ポリシーファイルの中に( )でくくられたところがありますね。 それは、属性と呼ばれていて、4種類あります。

    • rulename

      ルールブロックの名前を指定することができます。 ここで指定した名前で整合性チェックやレポートの作成が 行われるので、分かりやすい名前にしましょう。

      今回のポリシーファイルの場合、

      /usr/sbin/tripwire -m c -R "etc"
      

      とすると、/etc 以下のみチェックすることができます。 特に何も指定しなかった場合はポリシーファイルで 記述したルールでチェックします。

    • severity

      severity属性を利用すると、個々のルールに対して重要度を 0〜1,000,000の範囲で指定することができます。 特に指定しない場合は 0 になっています。 この属性は利用しなくても問題ありません。 しかし、チェック対象とする重要度レベルを指定してチェックを することができます。例えば、重要度が100以上のものをチェックする 場合は

      /usr/sbin/tripwire -m c -l 100
      

      とすれば良いのです。

    • emailto

      整合性チェックで違反があった場合に通知する メールアドレスを指定することができます。 sample.txt のようにルールブロックに指定した場合は どのルールに違反が発生していても メールで通知されます。また、ルールごとに 個別にメールでの通知を指定することもできます。

    • recurse

      「true」、「false」または-1〜1,000,000の値で ディレクトリに対する再帰の階層を指定します。 デフォルトでは true (-1) で設定されているので 指定したディレクトリ以下の全てのファイルやディレクトリを チェックします。

      false (0) にした場合は、ディレクトリに対応する iノードはスキャンしますが、そのディレクトリに含まれる ファイルやディレクトリはスキャンしません。 recurse 属性が0より大きい値を指定した時は、 指定した値のレベルまでのすべてのオブジェクトが チェックされます。

      また、マウントポイントが異なると再帰的なチェックは しません。例えば、/usr と /usr/local というディレクトリが あるとして、これらのマウントポイントが異なっていると /usr ディレクトリ配下全てをチェックしようとしても /usr/local はチェックされません。このような場合には、

      /usr		-> $(ReadOnly) ;
      /usr/local	-> $(ReadOnly) ;
      
      とルール指定するとチェックが行われます。

  3. その他

    特定のファイルやディレクトリを チェックから外す時には、 「!」(ストップポイント)を使います。

    !/home/user1/test.txt;
    

    ファイル名にスペースや記号がある場合は ダブルクォーテーションを使います。

    "/home/user2/test file" -> +p ;
    "/home/user1/\sample.txt" -> $(ReadOnly) ;
    

レポート

照合が完了すれば、下記のようなレポートが表示されます。

  1. 初回のレポート

    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.
    

  2. /etc/group に手を加えた後のレポート

    「*」がついている所が改ざんを検知した所を示しています。 また、今回は青字の所のように詳細にレポートされています。

    
    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
   ↑	   ↑   	↑
 コマンド モード オプション
  1. キー作成モード
    • コマンド:twadmin
    • モード :-m G
    オプション 意味
    -L ローカルキーのパス 指定されたファイルにローカルキーを作成
    -S サイトキーのパス 指定されたファイルにサイトキーを作成

  2. 設定ファイル作成モード
    • コマンド:twadmin
    • モード :-m F
    オプション 意味
    -S サイトキーのパス 新しい設定ファイルのバイナリ変換するために 指定されたサイトキーファイルを利用
    -c 設定ファイルのパス 作成先の設定ファイルを指定

  3. ポリシーファイルの作成モード
    • コマンド:twadmin
    • モード :-m P
    オプション 意味
    -c 設定ファイルのパス 使用する設定ファイルを指定する
    -S サイトキーのパス 新規ポリシーファイルのバイナリ化するために サイトキーファイルを指定する
    -p ポリシーファイルのパス 作成先のポリシーファイルを指定する

  4. データベースの作成モード
    • コマンド:tripwire
    • モード :-m i
    オプション 意味
    -p ポリシーファイルのパス 使用するポリシーファイルを指定する
    -c 設定ファイルのパス 使用する設定ファイルを指定する
    -d データベースのパス 指定したファイルへデータベースを書き込む
    -S サイトキーのパス 設定ファイルとポリシーファイルの読み込みに 使用するサイトキーファイルを指定する
    -L ローカルキーのパス データベースの書き込みに使用する ローカルキーファイルを指定する

  5. ポリシーファイルの表示モード
    • コマンド:twadmin
    • モード :-m p
    オプション 意味
    -c 設定ファイルのパス 使用する設定ファイルを指定する
    -p ポリシーファイルのパス 指定されたポリシーファイルを出力する
    -S サイトキーのパス 使用するサイトキーファイルを指定する

  6. 整合性チェックモード
    • コマンド:tripwire
    • モード :-m c
    オプション 意味
    -I 整合性チェック後、結果のレポートが データベース更新のためエディタ(デフォルトではvi)で開かれる
    -c 設定ファイルのパス 使用する設定ファイルを指定する
    -p ポリシーファイルのパス 使用するポリシーファイルを指定する
    -S サイトキーのパス 設定ファイルとポリシーファイルの読み込みに 指定するサイトキーファイルを使用する
    -L ローカルキーのパス データベースの読み込みに使用する ローカルキーファイルを指定する
    -r レポートのパス 指定したファイルにレポートを書き込む
    -M 設定ファイルのオプションを使ってポリシーファイルで 指定した受信者にレポートを送付する
    -t 0〜4を指定 電子メールレポートの詳細度を指定する (0が最も簡易)
    -R ルール名 指定されたポリシールールのみ実行
    -l 重要度 指定した重要度以上のポリシールールのみ実行

  7. データベースのアップデートモード
    • コマンド:tripwire
    • モード :-m u
    オプション 意味
    -c 設定ファイルのパス 使用する設定ファイルを指定する
    -p ポリシーファイルのパス 使用するポリシーファイルを指定する
    -d データベースのパス 使用するデータベースファイルを指定する
    -S サイトキーのパス 設定ファイルとポリシーファイルの読み込みに 指定するサイトキーファイルを使用する
    -L ローカルキーのパス データベースの読み込み/書き込みと レポートファイルの読み込みに指定された ローカルキーファイルを使用する
    -Z lowもしくは highを指定 データベースの更新に使用される.twrファイルの情報と 現在のデータベースとの間に不一致がある場合のTripwireの 動作を指定。デフォルトでは high
    -r レポートファイルのパス 指定されたファイルを読み込む

  8. ポリシーのアップデートモード
    • コマンド:tripwire
    • モード :-m p
    オプション 意味
    -p ポリシーファイルのパス 指定されたポリシーファイルを更新する
    -d データベースのパス 指定されたデータベースファイルを更新する
    -c 設定ファイルのパス 指定された設定ファイルを更新する
    -S サイトキーのパス 設定ファイルとポリシーファイルの読み込み/書き込みに 指定したサイトキーファイルを使用する
    -L ローカルキーのパス データベースの読み込み/書き込みに指定された ローカルキーファイルを使用する
    -Z lowもしくは highを指定 セキュリティレベルを指定する。 旧ポリシーの違反がある場合にポリシーファイルと データベースファイルを保存するかどうかが決定される。 デフォルトは high

  9. レポートの表示モード
    • コマンド:twprint
    • モード :-m r
    オプション 意味
    -c 設定ファイルのパス 指定された設定ファイルを使用
    -r レポートファイルのパス 指定されたレポートファイルを表示
    -L ローカルキーのパス 指定したローカルキーファイルを使ってレポート ファイルを検証する
    -t 0〜4を指定 指定されたレポートレベルを表示する。 0が最も簡易