Tripwire は、ファイルの監査を行うホスト型IDSで、システムの改ざんを検知し、いち早くネットワーク管理者にする通達してくれます。導入しておいて損はないので、是非、勉強しておきましょう。
|
|
■Tripwire のダウンロード
RPMからインストールする場合は、RPM 3.0 (Red Hat 5.x-6.2.x) とRPM 4.0
(Red Hat 7.x)があるのでOSのバージョンにあったものをダウンロードしてきてください。
■Tripwireが不可能なこと
まず、Tripwireをインストールする前に概要を説明しておきます。Tripwireはホスト型のIDSのひとつとして紹介されますが、厳密にはファイルやディレクトリの整合性をチェックするのみです。Tripwireが検知可能なことはファイル/ディレクトリの追加、削除、アクセス権の変更などです。以下にTripwireでは不可能なことを列挙しておきます。
・不正アクセスの検知・遮断機能はない
・リアルタイムでのファイルの変更は検知しない
・誰がファイルを変更したかはわからない
・変更箇所を特定することはできない
・変更されたファイルを復旧することはできない
■Tripwire のインストール
ここでは、RPMパッケージからTripwireをインストールします。上記URLからダウンロードしておいてください。
# rpm -q tripwire
パッケージ tripwire はインストールされていません
# rpm -ivh tripwire-2.3-47.i386.rpm |
|
なお、RPMをインストールしただけで完了するわけではなく、その後、用意されたスクリプト(/etc/tripwire/twinstall.sh)を実行し、Tripwireの設定ファイルであるサイトキーとデータベースファイルのローカルキーを作成する必要があります。
まず、サイトキーのパスフレーズとローカルキーのパスフレーズを異なるパスフレーズで用意しておきます。パスフレーズは、root
のパスワードとも異なるものを使用するようにしてください。なお、パスフレーズには空白を用いることができ、8文字以上(最大1023文字)の長さのものを設定します。ここで入力するパスフレーズは、サイトキーやローカルキーを暗号化するために必要になります。
# ./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. |
|
ここまでの操作を終えると、/etc/tripwire 以下に サイトキーであるsite.key とローカルキーであるns1.kororo.jp-local.keyが作成されています。同時に、tw.pol
とtw.cfg が作成され、バイナリデータに変換されています。以上でインストールは完了です。
■/etc/tripwire/tw.cfg.txt
ここで一度、tw.cfg.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/ns1.kororo.jp-local.key
EDITOR =/bin/vi
LATEPROMPTING =false
LOOSEDIRECTORYCHECKING =false
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SENDMAIL
SYSLOGREPORTING =false
MAILPROGRAM =/usr/lib/sendmail -oi -t |
|
■データベースの初期化
データベースの初期化を行います。Tripwireにはデフォルトでtwpol.txtというサンプルのポリシーファイルが用意されています。本来はこのポリシーファイルを各自のサイトの環境に合わせて編集していくことになりますが、ここでは敢えてサンプルファイルを利用することにします。最初はtwpol.txt
に記述はされているけれども、実際には存在しないファイルのエラーが数多く出力されますので、これらの存在しないファイル名をログに出力するなどして控えておきます。
# 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/scsi
### そのようなファイルやディレクトリはありません
### Continuing...
### Warning: File system error.
### Filename: /usr/sbin/fixrmtab
省略
### Warning: File system error.
### Filename: /root/.Xauthority
### そのようなファイルやディレクトリはありません
### Continuing...
Wrote database file: /var/lib/tripwire/ns1.kororo.jp.twd
The database was successfully generated. |
|
■ポリシーファイルの修正
存在しなかったファイルについてポリシーファイルを修正していく作業が必要となります。twpol.txtを開いて存在しなかったファイルの先頭に"#
"をつけてコメントアウトしていきます。おそらく膨大な量をコメントアウトすることになるので非常に面倒くさいですヾ(;´▽`A 途中で挫折すること間違いなしですが、説明のため、筆者は頑張りました(笑)。おそらく編集しているうちに気が付くと思いますが、前もってサイトのポリシーをある程度考えておかないと(サービスを起動するか否か)、コメントアウトをつける際にいちいち悩むことになるかもしれません。
# vi tw.pol.txt
# /proc/scsi -> $(Device) ;
# /usr/sbin/fixrmtab -> $(SEC_BIN) ;
# /usr/bin/vimtutor -> $(SEC_CRIT) ; |
|
■データベースの再作成
ポリシーファイルを修正したら、このファイルを基に暗号署名したファイルを生成する必要があります(tw.cfg
)。以下コマンドのtwpol.txtが修正したポリシーファイルです。
# cd /etc/tripwire
# twadmin -m P -c tw.cfg -p tw.pol -S site.key
twpol.txt
Please enter your site passphrase:
Wrote policy file: /etc/tripwire/tw.pol
|
|
ここで再度データベースを初期化します。以下のようにエラーが発生しなくなったら、正常にデータベースが作成されたことになります。
# tripwire --init
Please enter your local passphrase:
Parsing policy file: /etc/tripwire/tw.pol
Generating the database...
*** Processing Unix File System ***
Wrote database file: /var/lib/tripwire/ns1.kororo.jp.twd
The database was successfully generated. |
|
■ファイル/ディレクトリの整合性チェック
以下コマンドによりファイルやディレクトリの整合性チェックが行えます。エラーが出力されなければ完了です。もしも改竄が確認された場合には、そのファイルの変更に問題があるかどうか確認しておいてください。
# tripwire --check
Parsing policy file: /etc/tripwire/tw.pol
*** Processing Unix File System ***
Performing integrity check...
省略
=========================================================
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の運用
Tripwireを運用するに当たって、メールにそのレポートを送信するように設定を行います。編集するファイルは、/etc/tripwire/twcfg.txt
です。
# vi /etc/tripwire/twcfg.txt
MAILNOVIOLATIONS =true
EMAILREPORTLEVEL =3
REPORTLEVEL =3
MAILMETHOD =SMTP
SYSLOGREPORTING =false
MAILPROGRAM =/usr/sbin/postfix |
|
⇒MAILNOVIOLATIONS
違反が無くてもリポートをメールで送信します。違反が無い場合に、メールで送信しないようにするにはfalseを指定します。
⇒EMAILREPORTLEVEL
メールでのレポートレベルを0~4の間で指定します。数字が大きいほど詳細度があがります。
⇒REPORTLEVEL
レポートのレベルを0~4の間で指定します。数字が大きいほど詳細度があがります。
⇒MAILMETHOD
メールでのレポート送信に使用するプロトコルを指定します。SENDMAIL と SMTPが選択できます。
⇒SYSLOGREPORTING
データベース初期化時や整合性チェック時、データベース更新時、ポリシーファイルの更新時等の記録をsyslogデーモンにuser.noticeレベルで出力します。true
あるいは、falseのどちらかを指定します。
⇒MAILPROGRAM
メール送信プログラムのパスを指定します。
編集し終えたら、twadminコマンドでtw.cfgに反映させます。
# cd /etc/tripwire
# twadmin -m F -c tw.cfg -S site.key twcfg.txt
Please enter your site passphrase:
Wrote configuration file: /etc/tripwire/tw.cfg |
|
次に、twpol.txtを開いて実際にメールを送信する宛先を記述します。以下の場合は、ネットワークプログラムが変更された際に2人の管理者にメールを送信するように設定した例です。
(
rulename = "Networking Programs",
severity = $(SIG_HI)
emailto = root@kororo.jp;foo@kororo.jp
) |
|
■テストメールの送信
以下のコマンドを実行して、テストメールを送信してみます。
# tripwire --test
--email root@kororo.jp
Sending a test message to: root@kororo.jp |
|
メーラーを起動して、
If you receive this message, email notification
from tripwire is working correctly.というメールが届いていればTripwireのメール通知機能は正常に稼動しています。
■レポートメールの送信
レポートメールを送信する場合は、チェック時に-Mオプションを付けます。