連載
» 2004年06月18日 00時00分 公開

止められないUNIXサーバのセキュリティ対策(11):Tripwireでファイルの改ざんを検出せよ〜Tripwireのインストールと初期設定 〜 (2/2)

[木村靖,三井物産GTI]
前のページへ 1|2       

Tripwireのインストール

Tripwireの入手

 Tripwireのオープンソース版は、下記URLより入手可能となっている。ソースコード版またはRPM版のいずれかをダウンロードする。

 FreeBSDの場合は、portsのsecurity/tripwireが提供されている。NetBSD の場合は、pkgsrcのsecurity/tripwireが存在するが、バージョンが1.2となる。

Tripwireのインストール

 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の初期設定

Tripwireの初期設定

 最初にTripwireを使える状態にセッティングする。次の4つの手順を行う必要がある。

  1. 暗号化・署名鍵の生成
  2. 設定ファイルの生成
  3. ポリシーファイルの生成
  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コマンド

 生成が完了したら、設定ファイルの内容を確認しておく。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オプションを指定

 生成が完了したら、ポリシーファイルの内容を確認しておく。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 uでデータベースの更新を行う。

# 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のカスタマイズや運用上の注意点について説明する。

筆者紹介

三井物産GTI (現:三井物産セキュアディレクション株式会社

木村靖



前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。