当サイトをご利用頂き有難うございます。
当サイトは今月末日にモールタイプの総合検索サイトへリニューアルの予定です。
サイト名も変更となりますが、今後とも宜しくお願いいたします。

ファイル改竄検知 Tripwire

ファイルの改竄を検知するソフトの Tripwire を搭載します。
Tripwireは、導入時のファイル状態をデータベース化し、
そのデータベースとファイルの現状を比較することにより、
ファイルの追加/変更/削除を検知。

これは、サーバー立ち上げ初期から搭載するのが良いので早速実行。

①Tripwireのインストール

 GNOME端末より

   # su + 管理者権限パスワード

   # yum install tripwire  を入力

   # y

   #exit

    完了です。

②Tripwireの設定

   1. サイトキーを作成します

     続けて(GNOME端末)

      # tripwire-setup-keyfiles を入力

        * パスフレーズは入力しても画面には何も表示されません。

      Enter the site keyfile passphrase:  →  サイトパスフレーズ①を入力
      Verify the site keyfile passphrase:  →  サイトパスフレーズ①を再度入力

        * 設定ファイル、ポリシーファイルの署名及び、検証に使用されます。

      Enter the local keyfile passphrase:  →  ローカルパスフレーズ②を入力
      Verify the local keyfile passphrase:  →  ローカルパスフレーズ②を再度入力

        * ベースラインのデータベースファイルとレポートファイルの署名及び、検証に使用されます。

      Signing configuration file...
      Please enter your site passphrase:  →  サイトパスフレーズ①を入力
      Signing policy file...
      Please enter your site passphrase:  →  サイトパスフレーズ①を入力

        * パスフレーズを忘れるとTripwireが使用できなくなります。
          忘れた場合は初めから設定をもう一度実行しなければならず、
          Tripwireデータベースも再び初期化されてしまいます。

   2. 設定ファイル twcfg.txt の作成

     続けて(GNOME端末)

      # vi /etc/tripwire/twcfg.txt を入力

      ROOT =/usr/sbin
      POLFILE =/etc/tripwire/tw.pol
      DBFILE =/var/lib/tripwire/$(HOSTNAME).twd
      REPORTFILE =/var/lib/tripwire/report/$(HOSTNAME)-$(DATE).twr
      SITEKEYFILE =/etc/tripwire/site.key
      LOCALKEYFILE =/etc/tripwire/$(HOSTNAME)-local.key
      EDITOR =/bin/vi
      LATEPROMPTING =false
      LOOSEDIRECTORYCHECKING =false → true  (変更)
      MAILNOVIOLATIONS =true
      EMAILREPORTLEVEL =3
      REPORTLEVEL =3 → 4  (変更)
      MAILMETHOD =SENDMAIL
      SYSLOGREPORTING =false → true  (変更)
      MAILPROGRAM =/usr/sbin/sendmail -oi -t

      : w
      :q

      ----------- 設定ファイル 内容一覧-----------

       ROOT : tripwireへのパス
       POLFILE : デフォルトのポリシーファイルのパス
       DBFILE : デフォルトのデータベースファイルのパス
       REPORTFILE : デフォルトのレポートファイルのパス
       SITEKEYFILE : デフォルトのサイトキーファイルへのパス
       LOCALKEYFILE : デフォルトのローカルキーファイルへのパス
       EDITOR : デフォルトで使用するエディタのパス
       LATEPROMPTING : 
         メモリ上にパスワードが保存されている期間を短くする場合は「true」、
         違う場合は「false」
       LOOSEDIRECTORYCHECKING : 
         監査対象に何らかの変化があった際、
         そのファイルを格納しているディレクトリも報告の対象とする場合は「true」、
         違う場合は「false」
       MAILNOVIOLATIONS : 
         違反がない場合でもメールの送信をする場合は「true」
         違う場合は「false」
       EMAILREPORTLEVEL : 
         メールで送信されるレポートの詳細レベルを 0~4 の範囲で指定

          レベル0(本文なし、件名のみ)

           * 対象サーバのホスト名
           * 改ざんを検出した時刻
           * 改ざんを検出したファイル数
           * 改ざんのタイプ(追加,削除,変更)
           * 改ざんされたファイルのレベル(事前定義が必要です。)

          レベル2(レベル0 + 下記)

           * Tripwireが整合性チェックを行った際の設定ファイル情報
           * あらかじめ定義したチェック対象ファイルのグループごとの改ざん比率
           * Tripwireがチェックをおこなったファイルの総数、
             改ざんを検出したファイル数
           * 改ざんを検出したファイル,ディレクトリ

          レベル4(レベル2 + 下記)

           * 改ざんを検出したファイルの、
             基準となる属性値(TripwireのDBファイルに含まれる情報)
           * 改ざんを検出したファイルの、チェックを行った際の属性値

       REPORTLEVEL : 
         レポートの詳細レベルを 0~4 の範囲で指定
       MAILMETHOD : 
         メールを送信するプロトコル「SMTP」、もしくは「SENDMAIL」
       SYSLOGREPORTING : 
         TripwireのメッセージをSyslogにuser.noticeレベルで出力する場合は「true」
         違う場合は「false」
       MAILPROGRAM : 
         MAILMETHODで「SENDMAIL」と指定した場合、sendmailのパスを指定

   3. 署名ファイル(テキスト ⇒ 暗号化)の作成

       安全面を考えてrootにより署名、暗号化されたファイルのみを使用する為

     続けて(GNOME端末)

      # twadmin -m F -c /etc/tripwire/tw.cfg -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt を入力    

      ----------- twadmin コマンド オプション一覧-----------

        -m F
          設定ファイル作成時に指定

        -v、--verbose
          詳細表示モード

        -s、--silent、--quiet
          簡易出力モード

        -c 暗号署名された設定ファイル、--cfgfile 暗号署名された設定ファイル
          暗号署名された設定ファイル名を指定

        -S サイトキー、--sitekey-file サイトキー
          設定ファイルを暗号署名するときに使用するサイトキーを指定

        -Q、--site-passphrase
          設定ファイルの暗号署名に、サイトキーとともに使用するパスフレーズを指定

        -e、--no-encryption
          暗号署名せずに設定ファイルを作成する

        --help
          twadmin コマンドのヘルプを表示

      --------------------------------------------

      Please enter your site passphrase:  →  サイトパスフレーズ①を入力

      Wrote configuration file: /etc/tripwire/tw.cfg の表示で完了。

   4. 設定ファイル(twcfg.txt)を削除(セキュリティ確保)

     続けて(GNOME端末)

      # rm -f /etc/tripwire/twcfg.txt を入力

       * 暗号化されている設定ファイルからテキスト版に戻す場合

          # twadmin --print-cfgfile > /etc/tripwire/twcfg.txt

③ポリシーファイルの設定

   1. ポリシーファイルを作成

     続けて(GNOME端末)

      # vi /etc/tripwire/twpol.txt を入力 → 何も入力しません

       (省略)

      : w
      :q

   2. ポリシーファイル最適化スクリプトの作成(コピペ)

     続けて(GNOME端末)

      # vi /etc/tripwire/twpolmake.pl

----------- 下記を追加 -----------

#!/usr/bin/perl
# Tripwire Policy File customize tool
# ----------------------------------------------------------------------
# Copyright (C) 2003 Hiroaki Izumi
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# ----------------------------------------------------------------------
# Usage:
# perl twpolmake.pl {Pol file}
# ----------------------------------------------------------------------
#
$POLFILE=$ARGV[0];

open(POL,"$POLFILE") or die "open error: $POLFILE" ;
my($myhost,$thost) ;
my($sharp,$tpath,$cond) ;
my($INRULE) = 0 ;

while () {
chomp;
if (($thost) = /^HOSTNAME\s*=\s*(.*)\s*;/) {
$myhost = `hostname` ; chomp($myhost) ;
if ($thost ne $myhost) {
$_="HOSTNAME=\"$myhost\";" ;
}
}
elsif ( /^{/ ) {
$INRULE=1 ;
}
elsif ( /^}/ ) {
$INRULE=0 ;
}
elsif ($INRULE == 1 and ($sharp,$tpath,$cond) = /^(\s*\#?\s*)(\/\S+)\b(\s+->\s+.+)$/) {
$ret = ($sharp =~ s/\#//g) ;
if ($tpath eq '/sbin/e2fsadm' ) {
$cond =~ s/;\s+(tune2fs.*)$/; \#$1/ ;
}
if (! -s $tpath) {
$_ = "$sharp#$tpath$cond" if ($ret == 0) ;
}
else {
$_ = "$sharp$tpath$cond" ;
}
}
print "$_\n" ;
}
close(POL) ;

----------- 以上 -----------

   3. ポリシーファイルのファイル名変更

     続けて(GNOME端末)

      # perl /etc/tripwire/twpolmake.pl /etc/tripwire/twpol.txt > /etc/tripwire/twpol.txt.new を入力

   4. ポリシーファイル(テキスト ⇒ 暗号化)の作成

     続けて(GNOME端末)

      # twadmin -m P -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key /etc/tripwire/twpol.txt.new

      Please enter your site passphrase:  →  サイトパスフレーズ①を入力

      Wrote policy file: /etc/tripwire/tw.pol の表示で完了。

   5. 設定ファイル(twpol.txt)を削除(セキュリティ確保)

     続けて(GNOME端末)

      # rm -f /etc/tripwire/twpol.txt* を入力

       * 暗号化されている設定ファイルからテキスト版に戻す場合

          # twadmin -m p -c /etc/tripwire/tw.cfg -p /etc/tripwire/tw.pol -S /etc/tripwire/site.key > /etc/tripwire/twpol.txt

④Tripwireのデータベース作成

     続けて(GNOME端末)

      # tripwire -m i -s -c /etc/tripwire/tw.cfg  を入力

      Please enter your local passphrase:  →  ローカルパスフレーズ②を入力

        (ここでは暫く待つ)

      ----------- tripwire コマンド オプション一覧-----------

        -m c、--check
          整合性チェック時に指定

        -I、--interactive
          整合性チェック終了後、結果のレポートがデータベースのアップデートのためにエディタで開かれる

        -r レポートファイル、--twrfile レポートファイル
          指定されたファイルにレポートを出力する

        -n、--no-tty-output
          コンソールに表示されるレポートを抑制

        -V エディタ、--visual エディタ
          指定されたエディタでバロットボックスの編集を行う

        -E、--signed-report
          レポートに署名するように指定

        -i リスト、--ignore リスト
          リストに指定されたプロパティを処理・比較しない

        -l { レベル | 名前 }、severity { レベル | 名前 }
          指定されたレベル、名前以上のポリシールールのみをチェック

        -R ルール、--rule-name ルール
          指定されたポリシールールのみチェック

        -x セクション、--section セクション
          ポリシーファイルの指定されたセクションのルールのみチェック

        -M、--email-report
          ポリシーファイルで指定されたアドレスにレポートを送信する

        -t レベル、--email-report-level レベル
          メールレポートのレベルを指定(0~4)

⑤Tripwireの確認

    出来具合をチョット確認してみましょう。

     続けて(GNOME端末)

      # tripwire -m c -s -c /etc/tripwire/tw.cfg  を入力

         (ここでも暫く待つ)

    内容を確認して完了です。

⑥Tripwireの定期自動実行

   1. 定期実行設定

     続けて(GNOME端末)

      # crontab -e

     0 3 * * * root /usr/sbin/tripwire -m c -M  →  整合性を毎日午前3時からチェックします。

     :w
     :q

      ----------- tripwire コマンド オプション一覧-----------

        -m i、--init
          データベースの初期化時に指定

        -v、--verbose
          詳細表示モード

        -s、--silent、--quiet
          簡易出力モード

        -c 設定ファイル、--cfgfile 設定ファイル
          使用する設定ファイルを指定

        -p ポリシーファイル、--polfile ポリシーファイル
          使用するポリシーファイル名を指定

        -d データベースファイル、--dbfile データベースファイル
          データベースファイル名を指定

        -S サイトキー、--sitekey-file サイトキー
          設定ファイルとポリシーファイルを読み込むときに使用するサイトキーを指定

        -L ローカルキー、--local-keyfile ローカルキー
          新しいデータベースファイルを書き込むときに使用するローカルキーを指定

        -P パスフレーズ、--local-passphrase パスフレーズ
          新しいデータベースファイルの署名に指定したパスフレーズをローカルキーと一緒に指定

        -e、--no-encryption
          データベースファイルを暗号署名しない

        -m c --help、--check --help
          tripwire コマンドの整合性チェックモードのヘルプを表示

        -m c、--check
          システムの整合性チェックを行う

      --------------------------------------------


いやー終わりましたねー。cake