Tripwireのオープンソース版は、下記URLより入手可能となっている。ソースコード版またはRPM版のいずれかをダウンロードする。
FreeBSDの場合は、portsのsecurity/tripwireが提供されている。NetBSD の場合は、pkgsrcのsecurity/tripwireが存在するが、バージョンが1.2となる。
Tripwireのインストールは、ソースからコンパイルして行う方法と、FreeBSD portsやRPMなどのパッケージを利用する方法がある。ソースからコンパイルする場合は、環境に応じてファイルを編集するなど多少手間がかかるので*、特に理由がなければ、FreeBSD portsやRPMといったパッケージシステムを使うことをお勧めする。
Tripwireをソースからコンパイル、インストールする場合は、GNU make(gmake)とGNU cc(gcc)の2.95.2以上のバージョンが必要になる。gccは、gcc --versionでバージョンを確認しておく。確認できたら、ソースコードを展開しコンパイルを行う。ただし、最近主流のautoconf形式ではないため、環境に応じてファイルの編集を行う必要がある。
% gunzip -cd tripwire-2.3.1-2.tar.gz | tar xvf - % cd tripwire-2.3.1-2 % vi src/Makefile
OSによってMakefileのSYSPRE変数を変更する。デフォルトは、i686-pc-linuxとなっている。例えばFreeBSDにインストールする場合は、i386-unknown-freebsdに変更する必要がある。
SYSPRE = i386-unknown-freebsd
Makefileの編集が終わったら、あとはmake releaseを実行する。
% make release
コンパイルが正常に終了すると、展開先のbin/${SYSPRE}_rディレクトリにsiggen、tripwire、twadmin、twprintの4つのファイルが生成される。
あとは、生成したファイル群を手動でコピーする。展開先のinstall/install.shを実行するという手もあるが、この場合いくつか手直しする必要が生じるので、 手っ取り早く手動でコピーした方がよいだろう。
以下は、RedHat Linux 7.3における手動インストールの例だ。インストール先をRPM版と同じにしている。
# cp bin/i686-pc-linux_r/siggen /usr/sbin # cp bin/i686-pc-linux_r/tripwire /usr/sbin # cp bin/i686-pc-linux_r/twadmin /usr/sbin # cp bin/i686-pc-linux_rtwprint /usr/sbin # cp man/man4/*.4 /usr/man/man4/ # cp man/man5/*.5 /usr/man/man5/ # cp man/man8/*.8 /usr/man/man8/ # mkdir /etc/tripwire # cp policy/twpol.txt /etc/tripwire # mkdir -p /var/lib/tripwire/report # chmod 750 /var/lib/tripwire/report
最初にTripwireを使える状態にセッティングする。次の4つの手順を行う必要がある。
パッケージシステムの種類によっては、上記の手順が不要になる場合がある。例えば、FreeBSD portsの場合は、make installした際に、いくつかの質問に答えるだけで1〜4のすべてを実行してくれる。また、RPMの場合は、/etc/tripwire/twinstall.shを実行していくつかの質問に答えると、1〜3を実行してくれる。
1. 暗号・署名鍵の生成
設定ファイルなどの暗号化・署名を行うための暗号鍵(サイトキー、ローカルキー)を生成する。
【サイトキー】
設定ファイル、ポリシーファイルの暗号化・署名に使用
【 ローカルキー】
データベースの更新、レポートファイルの保護に使用
サイトキー、ローカルキーの生成は、Tripwireの管理コマンドのtwadminに-m G (or --generate-keys)オプションを指定する。-S(or --site-keyfile)でサイトキー、-L(or --local-keyfile)でローカルキーをそれぞれ生成する。
・サイトキーの生成
# twadmin -m G -S site.key (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:サイトキーのパスフレーズを入力(8文字以上) Verify the site keyfile passphrase:同じものをもう一度 Generating key (this may take several minutes)...Key generation complete.
/etc/tripwire/site.keyファイルが生成される。サイトキーのパスフレーズは、8 文字以上の推測しにくい、かつ rootパスワード以外のものを指定すること。
・ローカルキーの生成
# twadmin -m G -L atmarkit.example.co.jp-local.key (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:サイトキーのパスフレーズを入力(8文字以上) Verify the local keyfile passphrase:同じものをもう一度 Generating key (this may take several minutes)...
/etc/tripwire/atmarkit.example.co.jp-local.keyファイルが生成される。なお、ローカルキーのファイル名は、Tripwireの慣例に従い「ホスト名-local.key」とした。ローカルキーのパスフレーズは、8文字以上の推測しにくい、かつrootパスワード以外、かつサイトキー以外のものを指定すること。
2. 設定ファイルの生成
設定ファイルを必要に応じて編集し、先に生成したサイトキーを用いて、設定ファイルの暗号化と署名を行う。設定ファイルは、「キー=値」で指定する。以下はRPM版で提供の設定ファイル(/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/atmarkit.example.co.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
各キーの意味は以下の通りとなる。詳細は、man 4 twconfigで確認して欲しい。なお、twcfg.txtファイルがない場合は、twcfg.txtファイルを新規作成する必要がある。
必須となるキー | |
---|---|
ROOT | Tripwireプログラムの格納先 |
POLFILE | 暗号化・署名されたポリシーファイルの格納先 |
DBFILE | Tripwireデータベースの格納先 |
REPORTFILE | レポートファイルの格納先 |
SITEKEYFILE | サイトキーの格納先 |
LOCALKEYFILE | ローカルキーの格納先 |
その他のキー | |
---|---|
EDITOR | インタラクティブモードで使用するエディタを指定 初期値:/bin/vi |
LATEPROMPTING | パスフレーズプロンプトの表示速度。true(遅い)、false(速い) 初期値:false |
LOOSEDIRECTORYCHECKING | ディレクトリ内のファイルが追加・削除された場合、追加・削除されたファイルのみならずディレクトリの変更も報告するかを指定 初期値:false |
SYSLOGREPORTING | Tripwireで発生するイベントをsyslogに出力するかどうか。facility user, priority infoとして出力される。true(する)、false(しない) 初期値:true |
REPORTLEVEL | レポート詳細レベルのデフォルト値を指定 初期値:3 |
MAILMETHOD | メールの通知手段を指定。SENDMAIL(Sendmailプログラムによる通知)またはSMTP(メールサーバへの直接送信による通知)のいずれかを選択 初期値:SENDMAIL |
SMTPHOST | 送信先メールサーバのホスト名またはIPアドレスを指定。MAILMETHODでSMTPを指定した場合に有効 初期値:mail.domain.com |
SMTPPORT | 送信先メールサーバのポート番号を指定。MAILMETHODでSMTPを指定した場合に有効 初期値:25 |
MAILPROGRAM | Sendmailによるメール送信の際に実行するメールプログラムのパスとオプションを指定。MAILMETHODでSENDMAILを指定した場合に有効 初期値:/usr/lib/sendmail -oi -t |
EMAILREPORTLEVEL | レポート(メール)詳細レベルのデフォルト値を指定 初期値:3 |
MAILNOVIOLATIONS | 整合性チェックの結果、違反がない場合でもメールを送信するかどうか。true(送信する)、false(送信しない) 初期値:true |
上記のクリアテキスト形式の設定ファイルを、サイトキーを使って暗号化と署名をする。
twadminコマンドに-m F(or --create-cfgfile)オプションを指定する。-c(or --cfgfile)には生成する設定ファイル、-S(or --site-keyfile)にはサイトキーをそれぞれ指定している。
# twadmin -m F -c tw.cfg -S site.key twcfg.txt Please enter your site passphrase:サイトキーのパスフレーズを入力 Wrote configuration file: /etc/tripwire/tw.cfg
生成が完了したら、設定ファイルの内容を確認しておく。twadminコマンドに-m f(or --print-cfgfile)と-c(or --cfgfile)オプションを指定すればよい。
# twadmin -m f -c tw.cfg
3. ポリシーファイルの生成
ポリシーファイルには、Tripwireが監査を行ううえで必要となる条件や、整合性チェックの対象となるファイルのパスを指定する。取りあえずは、初期値のままポリシーファイルを生成してみる。
ポリシーファイルは、パッケージシステムによってはtwpol.txtというクリアテキストのファイルが提供される。ソースコードの場合は、展開先のpolicy/twpol.txtファイルを基にするとよいだろう。
クリアテキストファイル(twpol.txt)を準備したら、設定ファイルと同様、ポリシーファイルも暗号化・署名を行う。暗号化・署名には、先に生成したサイトキーを用いる。RPM版(Red Hat Linux)の例を以下に示す。
twadminコマンドに-m P(or --create-polfile)オプションを指定する。-c(or --cfgfile)には設定ファイル、-p(or --polfile)には生成するポリシーファイル、-S(or --site-keyfile)にはサイトキーファイルをそれぞれ指定している。
# 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 twadminコマンドに-m Pオプションを指定
生成が完了したら、ポリシーファイルの内容を確認しておく。twadminコマンドに-m p(or --print-polfile)、-c(or --cfgfile)、-p(or --polfile)、-S(or --site-keyfile)オプションを指定すればよい。
# twadmin -m p -c tw.cfg -p tw.pol -S site.key
4. データベースの新規作成
先に作成したポリシーファイルを基に、整合性チェック用のデータベースを作成(初期化)する。データベースの作成は、tripwireコマンドに-m i(or --init)オプションを指定する。
# tripwire -m i 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... (省略) ### Continuing... Wrote database file: /var/lib/tripwire/atmarkit.example.co.jp.twd The database was successfully generated.
実行すると、ポリシーで指定されたファイルが存在しない(No such file or directory)といった警告が出力される。存在しないファイルについては、ポリシーファイルから削り、更新する必要がある(更新方法については、次回説明する)。
正常に完了すると、「ホスト名.twd」というデータベースファイルが生成される(上記では/var/lib/tripwire/atmarkit.example.co.jp.twdとして生成)。
以上、Tripwireを実行するための最低限の準備は整った。これを基に、次回はTripwireのカスタマイズや運用上の注意点について説明する。
Copyright © ITmedia, Inc. All Rights Reserved.