Tripwire のインストールと設定についてのメモ

HOME | メモ一覧 | LastUpdate: 2003-05-18

説明と環境

Tripwire はシステムファイルやディレクトリに対する変更をすべて検出し、管理者に報告するツールです。特に、サーバがクラッカーに進入された場合、悪質なプログラムがインストールされたり、設定ファイルを書き換えられることがあります。Tripwire は、そのようなときに、書き換えられたファイルを全て検出することができる非常に強力なツールです。

このインストールメモは、RedHat 7.3 の環境で作成しました。RPMを使用していますので、Vine Linux、Kondara MNU/Linux などの、他の RedHat 系の Linux であれば、動作すると思います。RedHat 系以外の Linux でも、ソースからインストールすれば、ディレクトリの位置は違うかもしれませんが、後は同じように運用できるはずです。

Tripwire は、チェックしたファイルやディレクトリに対する変更を検出するだけですので、既に改竄が行われているコンピュータにインストールしても意味がありません。できる限り、OS のインストール、設定を行った後、ネットワークに接続する前に、Tripwire をインストールするのが良いと思われます。

このメモは個人的な備忘録ですので、分かりにくい点や間違いなどがあるかもしれません。何か気になった点などがありましたら、メールで指摘してください。


目次

Tripwire のインストールと設定についてのメモ 目次

  1. 説明と環境
  2. Tripwire のダウンロード
  3. Tripwire のインストール
  4. Tripwire の初期化
  5. Tripwire で整合性チェックを行う
  6. レポートの表示
  7. Tripwire の運用について
    1. メールでレポートを送信する
    2. データベースの更新
  8. セキュリティ問題について
  9. cron で自動的にチェックを行う方法
  10. Tripwire のチェックとデータベース更新を自動に行う方法
    1. 自動チェック、データベース更新用シェルスクリプトの作成
    2. Tripwire のメール機能について
  11. 参考サイト
  12. 更新履歴

Tripwire のダウンロード

ダウンロードは Tripwire.org の、Downloads から行ってください。RPM コマンドのバーションによって、ダウンロードするファイルが違います。注意してください。

$ rpm --version

を実行して、RPM のバージョンを表示させてから、RPM のバージョンによってダウンロードするファイルを選択します。

RedHat Linux などでは、インストール CD に Tripwire のパッケージが含まれているようです。こちらのバージョンの方が新しくなっていますので、このパッケージを利用した方が早いかもしれません。インストールCD がなくても rpmfind.net からダウンロードできます。手持ちのディストリビューションとバージョンから必要なパッケージを選択してダウンロードしてください。

▲ 目次へ戻る


Tripwire のインストール

インストールは、簡単です。Tripwire.org から tripwire-2.3-47.i386.tar.gz を取得した場合は、tar コマンドで展開後、rpm コマンドを使用してインストールします。

$ tar zxvf tripwire-2.3-47.i386.tar.gz
$ su -c 'rpm -ivh tripwire-2.3-47.i386.rpm'

rpmfind.net からパッケージをダウンロードした場合はそのまま rpm コマンドを実行します。

$ su -c 'rpm -ivh tripwire-2.3.*.i386.rpm'

以下のように表示されて、インストールが完了します。これは、Tripwire.org からダウンロードした tripwire-2.3-47.i386.rpm をインストールしたときのメッセージです。

Preparing...                ########################################### [100%]
   1:tripwire               ########################################### [100%]

----------------------------------------------
Generating Tripwire configuration file...

----------------------------------------------
Customizing default policy file...

A clear-text version of the Tripwire policy file
/etc/tripwire/twpol.txt
has been created for your inspection.  This implements
a minimal policy, intended only to test essential
Tripwire functionality.  You should edit the policy file
to describe your system, and then use twadmin to generate
a signed copy of the Tripwire policy.

IMPORTANT:  To complete the Tripwire 2.3 installation,
you must run the configuration script: 
/etc/tripwire/twinstall.sh

This script walks you through the processes of 
setting passphrases and encrypting the policy
and configuration files.  If you wish to change the
contents of your policy file, /etc/tripwire/twpol.txt
you may want to do so before running this script.

----------------------------------------------
The installation succeeded.

Please refer to /usr/doc/tripwire/README
for release information and to the printed user documentation for
further instructions on using Open Source Tripwire 2.3 for Linux.

▲ 目次へ戻る


Tripwire の初期化

Tripwire の初期化を行います。サイトとローカルのパスフレーズが必要になります。

サイトのパスフレーズは、Tripewire の設定、ポリシーファイルの暗号化に使用されます。また、ローカルのパスフレーズは、データベース、レポートファイルの暗号化に使用されます。

以下のことに注意してください。

以下のコマンドを実行します。

$ su -c '/etc/tripwire/twinstall.sh'

以下のように出力されます。途中でサイトのパスフレーズ、ローカルのパスフレーズの入力と確認入力を要求されますので、指示に従って入力します。

----------------------------------------------
The Tripwire site and local passphrases are used to
sign a variety of files, such as the configuration,
policy, and database files.

Passphrases should be at least 8 characters in length
and contain both letters and numbers.

See the Tripwire manual for more information.

----------------------------------------------
Creating key files...

(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the site keyfile passphrase:            ←サイトのパスフレーズ入力
Verify the site keyfile passphrase:           ←サイトのパスフレーズ確認入力
Generating key (this may take several minutes)...Key generation complete.

(When selecting a passphrase, keep in mind that good passphrases typically
have upper and lower case letters, digits and punctuation marks, and are
at least 8 characters in length.)

Enter the local keyfile passphrase:           ←ローカルのパスフレーズ入力
Verify the local keyfile passphrase:          ←ローカルのパスフレーズ確認入力
Generating key (this may take several minutes)...Key generation complete.

----------------------------------------------
Signing configuration file...
Please enter your site passphrase:            ←サイトのパスフレーズ入力
Wrote configuration file: /etc/tripwire/tw.cfg

A clear-text version of the Tripwire configuration file
/etc/tripwire/twcfg.txt
has been preserved for your inspection.  It is recommended
that you delete this file manually after you have examined it.


----------------------------------------------
Signing policy file...
Please enter your site passphrase:            ←サイトのパスフレーズ入力
Wrote policy file: /etc/tripwire/tw.pol

A clear-text version of the Tripwire policy file
/etc/tripwire/twpol.txt
has been preserved for your inspection.  This implements
a minimal policy, intended only to test essential
Tripwire functionality.  You should edit the policy file
to describe your system, and then use twadmin to generate
a new signed copy of the Tripwire policy.

Tripwireデータベースの初期化を行います。

$ su -c '/usr/sbin/tripwire --init'
Please enter your local passphrase:           ←ローカルのパスフレーズの入力

データベースの作成が始まります。(使用しているマシンの性能に依存しますが、かなり、時間がかかります)

ポリシファイルに誤りや存在しないファイル等があった場合、以下のようなエラーが表示されます。

Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
### Warning: File system error.
### Filename: /proc/rtc
### No such file or directory
### Continuing...
### Warning: File system error.
### Filename: /proc/scsi
### No such file or directory
### Continuing...

...(途中省略)...

### Warning: File system error.
### Filename: /root/.ICEauthority
### No such file or directory
### Continuing...

これらのエラーは無視しても問題ないのですが、Tripwire のチェック時に、毎回同じエラーを出力しますので、邪魔になります。今後、使用する予定のないファイルであれば、ポリシファイルを編集して、該当部分をコメントアウトし、チェックしないように設定します。

$ su -c 'vi /etc/tripwire/twpol.txt'

177行目以降に並んでいる監視対象ファイルで、存在しないファイルをコメントアウトします。

上の初期化時にエラーが発生したファイルを参考にコメントアウトします。

  ##############################################################################
 #                                                                            ##
############################################################################## #
#                                                                            # #
#                     Policy file for RedHat Linux 7.0                       # #
#                                V1.0.0                                      # #
#                            July 18, 2000                                   # #
#                                                                            ##
##############################################################################

...(省略)...

  ################################################
 #                                              ##
################################################ #
#                                              # #
# File System and Disk Administration Programs # #
#                                              ##
################################################

(
  rulename = "File System and Disk Administraton Programs"
  severity = $(SIG_HI)
)

  #/sbin/accton                         -> $(SEC_CRIT) ; #←コメントアウト
  /sbin/badblocks                      -> $(SEC_CRIT) ;
  #/sbin/dosfsck                        -> $(SEC_CRIT) ; #←コメントアウト

...(以下省略)...

変更が終了したら、ポリシファイルを再構築して、再度データベースを初期化して下さい。

$ su -c '/usr/sbin/twadmin --create-polfile /etc/tripwire/twpol.txt'
$ su -c '/usr/sbin/tripwire --init'

問題がなければ、エラーは出ません。

▲ 目次へ戻る


Tripwire で整合性チェックを行う

データベースの初期化が済んだ後、チェックを実行します。

$ su -c '/usr/sbin/tripwire --check'

以下のように、チェックが実行され、結果が表示されます。注意:ホスト名や IP アドレス、ファイル名は伏せています。

Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
Wrote report file: /var/lib/tripwire/report/client5-20011119-140927.twr


Tripwire(R) 2.3.0 Integrity Check Report

Report generated by:          root
Report created on:            Mon Nov 19 14:09:27 2001
Database last updated on:     Never

===============================================================================
Report Summary:
===============================================================================

Host name:                    xxxxxxx
Host IP address:              192.168.xxx.xxx
Host ID:                      None
Policy file used:             /etc/tripwire/tw.pol
Configuration file used:      /etc/tripwire/tw.cfg
Database file used:           /var/lib/tripwire/xxxxxxx.twd
Command line used:            tripwire --check 

===============================================================================
Rule Summary: 
===============================================================================

-------------------------------------------------------------------------------
Section: Unix File System
-------------------------------------------------------------------------------

Rule Name                       Severity Level    Added    Removed  Modified 
---------                       --------------    -----    -------  -------- 
Invariant Directories           66                0        0        0
Temporary directories           33                0        0        0
Tripwire Data Files             100               0        0        0
Critical devices                100               0        0        0
User binaries                   66                0        0        0
Tripwire Binaries               100               0        0        0
Libraries                       66                0        0        0
File System and Disk Administraton Programs
100               0        0        0
Kernel Administration Programs  100               0        0        0
Networking Programs             100               0        0        0
System Administration Programs  100               0        0        0
Hardware and Device Control Programs
100               0        0        0
System Information Programs     100               0        0        0
Application Information Programs
100               0        0        0
Shell Releated Programs         100               0        0        0
(/sbin/getkey)
Critical Utility Sym-Links      100               0        0        0
Critical system boot files      100               0        0        0
Critical configuration files    100               0        0        0
System boot changes             100               0        0        0
OS executables and libraries    100               0        0        0
Security Control                100               0        0        0
Login Scripts                   100               0        0        0
Operating System Utilities      100               0        0        0
Shell Binaries                  100               0        0        0
Root config files               100               0        0        0

Total objects scanned:  18650
Total violations found:  0

===============================================================================
Object Summary: 
===============================================================================

-------------------------------------------------------------------------------
# Section: Unix File System
-------------------------------------------------------------------------------

No violations.

===============================================================================
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.

▲ 目次へ戻る


レポートの表示

結果レポートを見たい場合は、以下のようにコマンドを入力します。ファイル名はホスト名、年、日付、時間になっています。

$ su -c '/usr/sbin/twprint --print-report --twrfile /var/lib/tripwire/report/xxxxxx-20011119-140927.twr'

チェックを実行した後、問題が無い場合は、データベースの更新を行います。

$ su -c '/usr/sbin/tripwire --update --twrfile /var/lib/tripwire/report/xxxxxx-20011119-140927.twr'
Please enter your local passphrase:                              #←ローカルのパスフレーズを入力

後は、定期的にレポートを作成・確認して、何も手を加えていないはずのファイルが改竄されていないかを チェックします。

▲ 目次へ戻る


Tripwire の運用について

1. メールでレポートを送信する

メールでレポートを送信するには、twcfg.txt で設定します。( 外部のメールサーバを使用する場合は MAILMETHODSMTPHOSTSMTPPORT を指定します。 )

外部のメールサーバを使用しない場合は変更する必要はありません。

$ su -c '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/client5-local.key
EDITOR        =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true    (*注)
EMAILREPORTLEVEL =3
REPORTLEVEL   =3
SYSLOGREPORTING =false

MAILMETHOD    =SMTP
SMTPHOST      =XXX.XXX.XXX.XXX
SMTPPORT      =25
MAILPROGRAM   =/usr/lib/sendmail -oi -t

(*注) エラーが無いときにメールを送信させないようにしたい場合は、MAILNOVIOLATIONS =false と設定します。

定期的にチェックが行われているかどうかを確認する方が良いと思われますので、MAILNOVIOLATIONS = true にしておいた方がよいと思われます。

twadmin コマンドで tw.cfg に反映させます。

$ su -c '/usr/sbin/twadmin --create-cfgfile -S /etc/tripwire/site.key /etc/tripwire/twcfg.txt'
Please enter your site passphrase:                              #←サイトのパスフレーズを入力

twpol.txt に送信内容と、送信先メールアドレスを設定します。

$ su -c 'vi /etc/tripwire/twpol.txt'

あるセクションのレポートをメールで受け取るには、以下のようにセクションの最初の rulename が書いている場所に、メールアドレスを入力します。

例えば、Tripwire Binaries セクションにあるレポートのみメールで受け取りたい場合は、以下のように設定します。

# 80 行目付近
# Tripwire Binaries
(
  rulename = "Tripwire Binaries",
  severity = $(SIG_HI),                        #←カンマを忘れないで下さい
  emailto = XXXXXX@XXXXXXX.XX.XX               #←送信先のメールアドレス
)

全てのセクションのレポートをメールで受け取りたい場合は、全てのセクションを {...} で入れ子にしてメールを設定して下さい。

以下のように設定すると、全てのレポートをメールで受け取ることができます。

#--ここから( 80行目付近 )
( emailto = XXXXXX@XXXXXXX.XX.XX )            #← 送信先メールアドレス 
{ 
#--ここまで

# Tripwire Binaries
(
  rulename = "Tripwire Binaries",
  severity = $(SIG_HI)
)

 #...(省略)...

# Rest of critical system binaries
(
  rulename = "OS executables and libraries",
  severity = $(SIG_HI)
)
{
 /bin        -> $(SEC_BIN) ;
 /lib        -> $(SEC_BIN) ;
}

#--ここから
}                                            #← 追加
#--ここまで( 1080 行目付近 )

設定が終了したら、ポリシファイルに設定を反映させます。

$ su -c '/usr/sbin/twadmin --create-polfile -S /etc/tripwire/site.key /etc/tripwire/twpol.txt'

実際にメッセージが正しく送信されるかどうか確認するには、次のコマンドを実行します。

$ su -c '/usr/sbin/tripwire --test --email XXXXXX@XXXXXXX.XX.XX'   #←メールアドレス

チェック後、メール送信する場合は、--email-report オプションを指定します。

$ su -c '/usr/sbin/tripwire --check --email-report'

2. データベースの更新

データベースを更新しない場合、Tripwire が変更を検出すると、毎回同じファイルがエラーとして検出されてしまいます。Tripwire が検出した変更に問題がなければ、データベースを更新する必要があります。

レポートからデータベースを更新する場合は以下のようにします。

$ su -c '/usr/sbin/tripwire --update -c tw.cfg -p tw.pol -S site.key -L local.key \
 -r /var/lib/tripwire/report/{$レポートファイル名}.twr'

または、データベースを初期化するという手段もあります。

$ su -c '/usr/sbin/tripwire --init'

▲ 目次へ戻る


セキュリティ問題について

セキュリティ上の問題ですが、いくつかの設定ファイルは、管理者以外のユーザに見られることを防ぐために削除しておいた方が安全だと考えられます。テキストで保存されている「/etc/tripwire/twpol.txt」と「/etc/tripwire/twcfg.txt」を削除します。

$ su -c 'rm /etc/tripwire/twpol.txt'
$ su -c 'rm /etc/tripwire/twcfg.txt'

これらのファイルが必要になった場合は、以下のコマンドで作成可能です。

$ su -c '/usr/sbin/twadmin --print-polfile > /etc/tripwire/twpol.txt'
$ su -c '/usr/sbin/twadmin --print-cfgfile > /etc/tripwire/twcfg.txt'

「twpol.txt」から「tw.pol」を、「twcfg.txt」から「tw.cfg」を作成するには、以下のようにします。

$ su -c 'cd /etc/tripwire && /usr/sbin/twadmin --create-polfile -S site.key /etc/tripwire/twpol.txt'
Please enter your site passphrase:    ← サイトのパスフレーズを入力
$ su -c 'cd /etc/tripwire && /usr/sbin/twadmin --create-cfgfile -S site.key /etc/tripwire/twcfg.txt'
Please enter your site passphrase:    ← サイトのパスフレーズを入力

▲ 目次へ戻る


cron で自動的にチェックを行う方法

cron で実行する場合の例です。自動的に確認するように設定し、メールを出すように設定しておくと便利です。

$ su -c 'vi /etc/crontab'

毎日深夜2時に整合性チェックを行い結果をメールで送信するように設定します。

0 2 * * * /usr/sbin/tripwire --check --email-report

rpmfind.net からダウンロードした RedHat Linux の RPM では、 /etc/cron.daily/tripwire-check に、cron で自動実行するための設定が保存されていました。メールを受け取りたい場合は、--email-report オプションを付けるなど、必要に応じて編集すると良いと思います。

#!/bin/sh
HOST_NAME=`uname -n`
if [ ! -e /var/lib/tripwire/${HOST_NAME}.twd ] ; then
echo "****    Error: Tripwire database for ${HOST_NAME} not found.    ****"
echo "**** Run "/etc/tripwire/twinstall.sh" and/or "tripwire --init". ****"
else
test -f /etc/tripwire/tw.cfg && /usr/sbin/tripwire --check
fi

▲ 目次へ戻る


Tripwire のチェックとデータベース更新を自動に行う方法

1. 自動チェック、データベース更新用シェルスクリプトの作成

チェック後、自動的にデータベースを作り直すようにしたい場合、シェルスクリプトを作成して、それを cron で実行するという方法をとります。

他人に見られるとローカルのパスフレーズが見えてしまうため、非常に危険です。Owner:rootGroup:root権限は 700 にしてファイルを作成して下さい。

ここでは、/root/bin ディレクトリに tripwire.sh というファイルを作成してます。別のディレクトリ、ファイル名にしても全く問題ありません。

$ su -c 'mkdir /root/bin/'
$ su -c 'touch /root/bin/tripwire.sh'
$ su -c 'chown root:root /root/bin/tripwire.sh'
$ su -c 'chmod 700 /root/bin/tripwire.sh'
$ su -c 'vi /root/bin/tripwire.sh'

スクリプトの内容は以下のようにします。--init の後ろの -P のオプションの後ろはローカルのパスフレーズです。そのまま入力してください。

#!/bin/sh
/usr/sbin/tripwire --check --email-report
/usr/sbin/tripwire --init -P xxxxxxx        #← ローカルのパスフレーズ

crontab に次のように登録します。

$ su -c 'vi /etc/crontab'

毎日深夜2時に上のシェルスクリプトを実行するように登録します。

0 2 * * * root /root/bin/tripwire.sh > /dev/null 2>&1

2. Tripwire のメール機能について

--email-report オプションが指定された場合、tripwire は、以下のような Subject でメールを送信します。

Subject: TWReport {$ホスト名}; {$年月日・時間} V:* S:* A:* R:* C:*

右側の V: S: A: R: C: は以下の数になります。

V: 追加、削除、変更されたファイルおよび、ディレクトリの合計
S: 違反されたルールの最重要度の値
A: 追加されたファイルおよび、ディレクトリ数
R: 削除されたファイルおよび、ディレクトリ数
C: 変更されたファイルおよび、ディレクトリ数

▲ 目次へ戻る


参考サイト

▲ 目次へ戻る


更新履歴

( 2003-05-18 )

誤字、脱字の修正。リンクの追加。

( 2002-12-23 )

docbook で書き直し。気になった部分の一部修正。

( 2002-11-25 )

初版作成。公開。

▲ 目次へ戻る

LastUpdate: 2003-05-18 | メモ一覧 | HOME