連載
» 2004年07月23日 00時00分 公開

止められないUNIXサーバのセキュリティ対策(最終回):Tripwireのポリシーを最適化する (3/3)

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

Tripwireの定期的な実行

 Tripwireを実際の運用で利用する場合、次の手順を日々行う必要がある。

  1. 整合性のチェック
  2. データベースの更新(必要に応じて)
  3. ポリシーの更新(必要に応じて)

 このうち、1はcron等で定期的に実行すればよい。残りの2、3については、更新の必要性が生じたら、その都度管理者が手動で行うことになる。

cronによる整合性チェックの実行

 cronを用いてTripwireの整合性チェック(前述のtripwire -m c)を定期的に実行する。

0 1 * * * root /usr/sbin/tripwire -m c -M
例:毎日1:00に実行する場合、crontabに以下の1行を追加する(Vixie Cronの場合)

 -M(or --email-report)でメール送信を行う。メールは、ポリシーファイルのemailto属性で指定したあて先に送信される。なお、cronに関する詳細は、man cronや man crontabで確認してほしい。

データベースとポリシーの手動更新

 整合性チェックを行った結果、監査対象のファイルやディレクトリに何らかの変更点があった場合、それらの内容をTripwireのデータベースにマージするために、Tripwireのデータベースを更新する作業が発生する(前述のtripwire -m u)。この場合、管理者が変更点のあった内容を1つずつチェックし、悪意的な改ざんではないことを確認する必要がある。

 また、監査対象のファイルやディレクトリの構成を追加・削除・更新した場合、ポリシーの更新も行う必要がある(前述のtripwire -m p)。これも管理者が手動で行う必要がある。

Tripwire運用上の注意点

テンプレートファイルの削除

 Tripwireの設定ファイル(tw.cfg)やポリシーファイル(tw.pol)の基となったテンプレートファイル(twcfg.txtやtwpol.txt)は、Tripwireの設定やポリシーの変更を終えたら削除するか管理者(root)のみが参照可能な状態にしておくこと。

 Tripwireの運用上必要となるのはtw.cfgやtw.polで、これらは暗号化・署名されており誰もが内容を見ることはできないが、クリアテキスト(平文)のファイルが存在し、それを誰もが読めるというのはセキュリティ上あまり好ましくない。

 もちろん、管理者がメンテナンスのためそれらのファイルを更新する際はクリアテキストのファイルを編集することになるが、その場合、twadmin -m f(or --print-cfgfile)やtwadmin -m p (or --print-polfile)等のコマンドをその都度実行し、暗号化・署名されたファイルからクリアテキストファイルを出力すればよい。

# twadmin -m f > twcfg.txt
設定ファイル(tw.cfg)の内容をtwcfg.txtファイルに出力
# twadmin -m p > twcfg.txt
ポリシーファイル(tw.pol)の内容を twpol.txt ファイルに出力

プロセスの優先順位を変更する

 Tripwireによる整合性チェックを実行すると、ほかのアプリケーション同様、CPUやメモリなどの資源を消費することになる。Tripwireの場合、root権限(管理者特権)で実行されるため、ほかの一般ユーザーよりも優先的にそれらの資源が分け与えられる。

 また、Tripwireの整合性チェックを一度実行すると、完了までは数分を要するため、その間はほかのアプリケーションのパフォーマンスに影響を及ぼす可能性がある。

 稼働中のサービスに極力影響を与えないように、利用者の少ない時間帯を見計らって実行するという手も考えられるが、基幹サーバの中には24時間フル稼働するものもあるだろうから、そういったケースを踏まえ、Tripwireの資源占有をできるだけ抑えるようにする。

 UNIXでは、そういったプロセスの優先順位をスケジューリングするniceコマンドが存在 する。

・niceコマンドを使う

 niceコマンドの書式は、次のとおりとなる。

nice [-n increment] 実行プログラム
niceコマンドの書式

 -nオプションに加算する優先度の数値を指定することで、実行するプロセスの優先順位を調整できる。指定可能な優先度はUNIXの種類によって異なり、Linuxの場合-20から19まで、BSD系UNIXの場合-20から20までが指定でき、いずれも値が大きいほど優先度が低くなる。つまりLinuxの場合は、-20が最も高く、19が最も低い。なお、-nオプションが指定されていない場合、10が加算される。

 Tripwireの整合性チェックのプロセスの優先順位を下げたい場合は、以下のとおり実行する。ここでは、-n 10で、優先度を10にまで引き下げている。

# nice -n 10 tripwire -m c
niceコマンド

・確認方法

 優先順位が指定したとおりに適用されているかを確認するには、psやtopコマンドを用いるとよい。以下では、topコマンドによるCPU占有率の移り変わりを示している。

 優先度10のtripwireプロセス実行時のCPU占有率は99.4%であるが、その後、それより優先度の高い(優先度 0)cc1plusプロセスの実行により、CPU占有率が5.1%にまで抑制されているのが分かる。

連載の終わりに

 1年以上続いた連載も今回で最終回となる。本稿では、現行のUNIXサーバへの影響をなるべく抑えつつセキュリティを向上させる方法をいくつか紹介した。

 本稿で説明した内容が、読者の環境に必ずしもマッチしているとは思わないが、やるべきことのポイントは一通り押さえたつもりだ。

 止められないUNIXサーバを運用しつつセキュリティを維持させることはなかなか難しいが、サーバの管理を任された以上、管理者は責任を持ってサーバを安全に維持し続ける努力をしなければならない。

 そういった管理者の皆さんに、本稿の内容が少しでもお役に立てたとしたら、とても幸いである。

筆者紹介

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

木村靖


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

編集部からのお知らせ

RSSについて

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

メールマガジン登録

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