連載 /UNIX Communication Notes—O というものである。ます、この仕組みをしつかりと憶えて おこフ。 以降刎列では、 /etc を尉見する。この場合、 tw. config は図 4-a のようになる。設定ファイルとデータベース・ ファイルは、どちらも /usr/local/tripwire に置く。し データベースのキ薦化 である。 /usr/local/tripwire/tw. config たがって、この場合の言殳定ファイルは、 UNIX MAGAZINE 1999.3 象のファイルやディレクトリの改竄をチェックする。 trip- tripwire の運用にあたっては、定期的に実行し、監視対 実際の運用 ている ) 。 定ファイルて調整できる ( この例では設定セット R を使っ こで表示される情報は、設 変更内容が表示される。 ると、変更されたファイルやディレクトリの一覧カ咄力さ ル、、 /etc/xx" を作成する。そのうえで tripwire を実行す は、図 4 ー d のように touch コマンドでサイズ 0 のファイ 次に、ファイルが追加された場合をみてみよう。たとえ 表示するだけである。 何も変更を加えていないので、対象となったファイル数を のようにして tripwire を実行する。この段階では / etc に 準備か整ったら、 tripwire を動かしてみよう。図 4-c 乍 ディアに保存して安全な場所に保管しておく。 的容量の大きな MO や ZIP 、 CD-R などのリムー / ワル・メ ファイルや設定ファイルととしンヾックアップを作成し、上交 作成されたデータベース・ファイルは、 tripwire の夫行 注意 1 の例では /usr/local/tripwire) に移動させる。 ルを DATABASE-PATH で指定したディレクトリに tw. db-myhost が作られる。このデータベース・ファイ ホストで実験したため、データベース・ファイルとして ルが生成される。図 4 の例では、ホスト名 myhost の なかに、、 tw. db-hostname" というデータベース・ファイ クトリに databases というディレクトリカ非らその ( 図 4-b) 。初期化処理をおこなうと、カレント・ディレ tripwire の実行では、ますデータベースを初期化する wire を cron を用いて実行し、出力結果をメールて管理者 に送るようにしてもよい。 意 2 繰り返すが、システムに不正侵入されて侵入者が root の 権限を得ると、 tripwire の本体はもとより、データベース・フ ァイルや設定ファイルかで好竄されるおそオ功ゞある。このような 状況での tripwire の出力は信用できない。そこで、 cron によ る定期的な実行に加え、ディスク上の tripwire や成疋ファイ ル、データベース・ファイルを監視するための設定を安全なメ ディア上に用意しておき、定期的に検査を実施すべきである。 たんに tripwire を実行しただけでは、データベース・ ファイルは更新されない。更新する場合には、 # tripwire —update /etc/xx として、明示的にデータベースの更新処理をおこなう必要 がある。ファイルの検査とデータベースの更新を同時にお こなう場合には、インタラクテイプ・モードを利用すると よい。 # tripwlre —interactive のように tripwire を起動すると、ファイルの検査だけで なく、データベースとの差異がみつかった場合にデータベ ースを更新づーるかどうかを問い合わせてくる。、、 y " と答え ればデータベースが更新さ n と答えれは更新されな い。インタラクテイプ・モードでデータベースを更新する と、ファイルの変更に輓になるので、管理者にとっては 使いやすいのではないだろうか。 ☆ 今回は、セキュリティ保全の立場からみたファイル管 理の基礎とファイルの検査方法、さらにイ甦リなツールとし て tripwire を紹介した。次回は、バックアップの作成方 法とプロセス管理について角見する。 ( やまぐち・すぐる奈良先立斗学オ支術大判完大学 ) [ 赭文献 ] [ 1 ] R. Rivest, The イ D5 Message-Digest ス 0 t ん m , RFC1321 , April 1992 21
連載 /UNIX Communication Notes を実行する。 3. テストの準備 べて、、 /usr/local/tripwire" に成正した。そのうえで、 と DATABASE-PATH 、 Makefile の DESTDIR をす 私の場合は、 include/config. h の CONFIG-PATH でプログラムを再コンパイルし、インストールする。 % make % make clean これら刎直を決めたら、 6. インストール 決めてからインストール先を設定する。 合には、リム→ワフレ・メディアをマウントする場所を し、そこにインストールすることも考えられる。その場 リムーバブル・メディア上にファイルシステムを構成 る。これらの点をよく考えて設定しなけれはならない。 ス・ファイルをこ好莨されると、正しい判断か不可能にな イルや、ファイルの情報かオ翻タされているデータベー のを改造されたり、 tripwire の動作を決める設定ファ ある。したがって、コンパイルした tripwire そのも ステム上のファイルの整合性を不忍するためのツールで この値の設定には、かなり悩まされる。 tripwire は、シ を設定する。 tripwire をオ内するディレクトリを示す DESTDIR の 2 カ所を変更する。 MakefiIe については、生成した ・ DATABASE-PATH ・ CONFIG-PATH file を編集する。 include/config. h では、 運用する環境に合わせて、 include/config. h と Make- 5. 工竟に合わせた設定 なわれていれば次のステップにいく。 とする。このテストで、 tripwire の処理が正しくおこ % make % cd tests 4. テストの実行 のは数カ所なので、それほど手間はかからないはすだ。 い場合は、手竹ミ業でソースコードを変更する。変更する ファイルに含まれているパッチを当てる。うまくいかな ロ・い する。 Perl 5 を使っている場合、 README-third テストする前に、使用している Perl のバージョンを確 20 % make clean % make % su Password: * * * * * * * # mkdir /usr/local/tripwire # make install としてインストールした。 /usr/local/tripwire について はバックアップを作成し、前節で述べたような別のガ去で 改竄を監視することにした。 運用の準備 tripwire を運用するには、設定ファイルを用意する必 要がある。設定ファイルの書式は、 % man t . config て参照できる。 設定ファイルの各行に する。 = ] entry 佖 gs 、以下の書式で監視対象を記述 監視するディレクトリやファイルを、 entry として指定 する。監ネ寸象から外したいディレクトリやファイルは、 行頭に ! を付けて言当する。 entry がディレクトリの場 " を付けるとディレクトリを監視するだけ 合、行頭に で、そのディレクトリのなかに置かれているファイルは監 視しない。 ガ s には、何を監視対象とするかを記述する。 trip- wire では、監視対象についての細かな設定ができる ( 詳 細は付属のマニュアルページを参照 ) 。しかし、たいてい は細かく設するのではなく、 tripwire の監視対象セット を利用する。たとえは、ガ s に、、 R " と指定すると、一イ殳 的な読出し専用ファイル (read-only file) を監視する。あ るいは、、、 L " を指定してログファイルを監視してもよい。 これらの監視対象セットをうまく利用すれは、設定ファイ ルが簡単に作成できる。 設疋ファイルを複数のホストで共用するための設定もあ るが、これも言岩田はマニュアルページを参照してはしい。 tripwire の実行 設定ファイル tw. config の用意ができたら、 tripwire コマンドを実行する。 tripwire の基本的な動作は、監視 対象のファイルについて、データベースにオ内されたファ イル情報と現在の情報とを上は交し、差異があれは報告する UNIX MAGAZINE 1999.3
連載 UNIX Communication N0tes 図 4 tripwire の実行 (a) tw ・ config 」 /etc # . /tripwire —initialize # cd /usr/local/tripwire (b) データベース築 Warning : # # # Phase 1 : # # # Phase 2 : # # # Phase 3 : # # # Warning : creating . /databases directory ! Reading configuration file Generating file list Creating file information database Database file placed in . /databases/tw. db—myhost . Make sure tO move this file file and the configuration tO secure media! (Tripwire expects tO find it in ' /usr/local/tripwire ' . ) # mv databases/tw. db—myhost # . /tripwire # # # Phase 1 : # # # Phase 2 : # # # Phase 3 : # # # Phase 4 : Reading configuration file Generating file list Creating f i1e information database Searching for inconsistencies Tota1 After files scanned: Fi1es added: Fi1es deleted: Fi1es changed : applying rules : Changes discarded : Changes remaining : 252 0 0 252 252 0 (d) 新たなファイルの自加 # touch /etc/xx # . /tripwire # # # Phase # # # Phase # # # Phase 3 : # # # Phase 4 : After 2 : 1 : Reading configuration file Generating file list Creating file information database Searching for inconsistencies # # # Tota1 files scanned: 253 Fi1es added: 1 Fi1es deleted: 0 Fi1es changed: 252 applying rules : Changes discarded : 252 Changes remaining : 2 —rw—r——r—— root added : 0 ( Ⅱ u11 ) /etc/xx 2560 ( Ⅱ u11 ) /etc changed : drwxr—xr—x root # # # Phase 5 : Generating observed/expected pairs for changed files # # # Attr /etc st_mtime : st_ctime: 22 Observed (what it is) Sun Jan 31 Sun Jan 31 05 : 44 : 01 05 : 44 : 01 1999 1999 Expected (what it should be) Sun Jan 31 05 : 42 : 52 1999 Sun Jan 31 05 : 42 : 52 1999 UNIX MAGAZINE 1999.3
連載 UNIX Communication Notes 図 3 ファイルごとの MD5 の計算 % find —type f —exec md5 { } \ ; eC480e6a905Ce10ffC0434d037b25C67 101339f1028af76e7b5321fd8723C0f1 4282ea2daC5f7f4e426eC74e11e91be1 1f35a6a15aC9Cd96219f951321e166b4 6a2b3185C224C15d910093990C82ad9b 7004d7907d826C2e66628eef469bb70C eC480e6a905Ce10ffC0434d037b25C67 4319fCfC507b4be57288a04b68f4d62b . /memo . txt . /report . tex . /report ・ 10g . /report . aux . /report . dvi ・ /report ・ ps . /f00. txt . /rfC1321. txt 改竄が発見しやすくなる。たとえば、図 3 のように升 nd コマンドと組み合わせて実行すれば、現在のディレクトリ 以下の普通のファイルについて MD5 の値を引算、出力し てくれる。 尉見対象のファイルやディレクトリのリスト作成と同時 に、 MD5 の値を計算したリストも作っておく。そして、 ファイルリストを上交する際に各ファイルの MD5 の値 を再言 t. 算して比較すれば、 - 信己のような巧妙な手法を用い て改竄されたファイルも発見しやすくなる。 ノート 10 もちろん、上交のもとになる MD5 値のリストと MD5 プ ログラムはリムーノワ・ル・メディアに保管しておく。手の込ん た不正侵入では、システム上の MD5 プログラムを匿し、改 竄したファイルについては MD5 刎直を言 1 算せす、もとのファ イルの値を出力するといったガ去も考えられる。ファイルを検 査する際には、信頼できるプログラムと信頼できるファイルリ ストが必頭である。 tripwire tripwire は、 Purdue 大学の COAST (Computer Operations, Audit and Security Technology) グル ープか開発した、ファイルの改竄発見にイリなツールであ る。 COAST グループからは、フリー・ソフトウェアと して配布されていた。職斤版は 1.2 で、 ftp://coast.cs.purdue.edu/pub/COAST/Tripwire から入手できる。 ところが、 Purdue 大学は、 Tripwire Security Sys- tems に tripwire の商用利用を許諾するライセンスを与 えたため、商用ソフトウェアになってしまった。 Trip- wire Security Systems の Web ページ (http://www. tripwiresecurity.com/) を見ると、商用の最新版は 2.0 UNIX MAGAZINE 1999.3 で、 Red Hat Linux 5.1 / 5.2 用と、 Solaris 2.5.1 / 2.6 用のパッケージが 495 ドルで販売されている ( オンライ ンで購入できる ) 。 大学などのアカデミック・サイトに対しては、 tripwire ASR 1.3 (Academic Source Release) カ甘是供されてい る。このバージョンは、事前に登録してアカデミック・サ イトであることを示せは無償でダウンロードできる。 以降では、フリー・ソフトウェアの最終版である 1.2 に ついて簡単に説明する。最新版でないとはいえ、システム 管理者にとっては十分有益なソフトウェアである。 ノート 11 大学などのアカデミック・サイトであれば、 ASR 1.3 の 入手をお勧めする。すくなくとも、 1.2 とくらべてバグは減っ ている。 入手方法 ソフトウェアは、一己の URL から FTP で入手する。 その際、ディレクトリに置かれているすべてのファイルを 転送することをお勧めする。そうすれば、里する論文な ども同時に入手できる。ソフトウェアのソースコードは、 tripwire-l. 2. tar. z である。このパッケージを伸長す ると、 ・ TI. 2. tar ・ TI. 2. tar. asc の 2 つのファイルか彳られるので、 TI. 2. tar を展開する。 コンパイルとテスト タされている。このディレクトリ ( ソースコードのト クトリが作成さそのなかにすべてのソースコードが ソースコードを展開すると tripwire-l. 2 というディレ 2. コンノヾイノレ パイルできる。 ルじ、 訒調整する。 BSD 系のシステムでは変更せずにコン 使用するシステムに合わせて、各種マクロの設定を確 1. include/config. h の編集 コンパイルとテストは上如勺簡単で、次の手順でおこな % make ップ・ディレクトリ ) に移動し、 19