
【連載】
止められないUNIXサーバのセキュリティ対策
最終回 Tripwireのポリシーを最適化する
三井物産GTI (現:三井物産セキュアディレクション株式会社)
木村 靖
2004/7/23
| ※ご注意 本稿の内容を検証する場合は、必ず影響を及ぼさない限られた環境下で行って下さい。また、本稿を利用した行為による問題に関しましては、筆者および株式会社アットマーク・アイティは一切責任を負いかねます。ご了承ください。 |
1. セクションの定義
ポリシーファイルをセクションによって区分させる。セクションは、@@sectionというディレクティブ【注】によって定義され、テンプレートではGLOBALとFSの予約された2つのセクションが定義されている。
| ディレクティブ名 | 内容 |
|---|---|
| @@section | セクションを定義する。予約されているセクション名にはGLOBALとFSがある。GLOBALは、ポリシーファイル全体に適用されるセクションを意味する。また、FSはUNIX系OSの場合に指定するセクション名で、OSによって異なる(例えばWindowsの場合はNTFSなどを指定) |
| @@ifhost @@else @@endif |
ifhost、else endifでホスト名による条件分岐を指定する。||により複数のホスト名を指定できる |
| メッセージを標準出力(STDOUT)に出力。引数には出力するメッセージを指定する。主にデバッグ時に利用される | |
| @@error | メッセージを標準出力(STDOUT)に出力し、終了する。引数には出力するメッセージを指定する。主にデバッグ時に利用される |
| @@end | ポリシーファイルの終わりを示す。@@end以降は無視する |
| 表1 ディレクティブ名 | |
| 【注】 Tripwireのディレクティブ(命令語)には、表1に示すようなものがあるが、通常の運用では@@section以外は使うことはほとんどない。 |
・GLOBALセクション(@@section GLOBAL)
GLOBALセクションには、ポリシーファイル全体に適用される変数が指定されている。例えば、RedHat Linux RPM付属のテンプレートの場合、以下のような変数が定義されている。なお、ポリシーでは、#から行末まではコメントとして扱われる。
|
| RedHat Linux RPM付属のテンプレート |
・FSセクション(@@section FS)
FSセクションには、FSセクション内で利用する変数やルールが指定される。ルールには、Tripwireの監査対象となるファイルや監査内容などを定義する。なお、ルールの詳細については、後述の「3.
ルールの定義」で説明する。
2. 変数の定義
各セクションには、GLOBALセクションで説明した変数や、例えば以下のような変数が定義されている。これらの変数値は、環境に応じて必要であれば変更する。なお、変数値に空白やスラッシュ(/)が含まれる場合は、ダブルクオート(")で囲む必要があるので注意すること。例えば、TWROOT変数には/usr/sbinという値がセットされている。
|
| 変数の定義例 |
また、上記のSEC_CRIT変数には、$(IgnoreNone)などのような置換変数が指定されている。置換変数は「$(変数名)」の形式で指定し、定義済みの変数を値に置換させたい場合に指定する。例えばSEC_CRIT変数には、「IgnoreNone変数の値-SHa」がセットされる。
なお、変数名の中には、表2に示すとおり特殊な意味を持つ予約変数がある。これらは複数からなるプロパティ値(後述)を、分かりやすい変数名で利用できるようにしたものである。
| 変数名 | 内容 |
|---|---|
| ReadOnly | 読み取り専用ファイル プロパティ値 +pinugtsdbmCM-rlacSHと同じ意味を持つ |
| Dynamic | 可変ファイル プロパティ値+pinugtd-srlbamcCMSHと同じ意味を持つ |
| Growing | サイズが増加するファイル プロパティ値+pinugtdl-srbamcCMSHと同じ意味を持つ |
| Device | デバイスファイル プロパティ値+pugsdr-intlbamcCMSHと同じ意味を持つ |
| IgnoreAll | すべてのプロパティを無視する プロパティ値-pinugtsdrlbamcCMSHと同じ意味を持つ |
| IgnoreNone | すべてのプロパティを有効にする プロパティ値+pinugtsdrbamcCMSH-lと同じ意味を持つ |
| 表2 特殊変数 | |
3. ルールの定義
FSセクションなどで定義されているルールでは、監査対象となるファイルの指定やどのような整合性チェックを行うかを定義する。一般的な書式は次のとおりとなる。
|
|
| ルールの書式 |
{ }内が1つのルールとなり、最初の( )でそのルールに適用されるルール属性を定義する。
・ルール属性
ルール属性には、表3で示すような値をセットする。{ }の前に定義した場合、属性はそのルール全体に適用され、オブジェクト名に指定した場合は、そのオブジェクトのみに適用される。
例えば、Webページ関連の監査を行うために、ルール名「Web contents」を新たに定義したい場合は、以下のように追加すればよい。
|
|
| ルール名「Web contents」 |
( )内がこのルールの属性で、rulenameでWeb contentsというルール名を定義し、emailtoでこのルール内で違反が発生した際の連絡先を指定し、severityで重用度を100に設定している。また、オブジェクトごとの属性指定として、Webコンテンツが格納されているディレクトリの/www/htodcsに対しては、recurse
= tureで/www/htdocs以下のすべてのファイルやディレクトリを監査対象とするように指定している。
| 属性名 | 意味 |
|---|---|
| rulename | ルール名を指定する |
| emailto | ルール違反が発生した際の通知先メールアドレス -M (--email-report)オプションで使用される |
| severity | 重要度を指定する。0から1000000の範囲で指定(デフォルトは0) |
| recurse | 監査対象ディレクトリ内を再帰的にチェックする階層を指定 true(-1)、false(0)または、数値(-1から1000000)を指定 trueは、ディレクトリ内のすべてのファイルやサブディレクトリを再帰的にチェックし、逆にfalseはチェックしない。 |
| 表3 ルール属性 | |
・オブジェクト名とプロパティ
オブジェクト名には、主に監査対象となるファイルを定義し、プロパティにはオブジェクトに対する実際の監査内容を定義する(表4)。
| 属性名 | 意味 |
|---|---|
| - | プロパティをチェックしない |
| + | プロパティをチェックする |
| a | アクセス時刻(ファイルへのアクセス時刻が変更) |
| b | ブロック割り当て番号 |
| c | iノードの時刻 |
| d | iノードが存在するデバイスのID |
| g | ファイルのグループID(gid) |
| i | iノード番号 |
| l | サイズが増加したファイル |
| m | 修正時刻(ファイルの修正時刻が変更) |
| n | リンク番号(iノードの参照回数) |
| p | ファイルパーミッション |
| r | iノードによって示されるデバイスID |
| s | ファイルサイズ |
| t | ファイルタイプ |
| u | ファイルの所有者ID(uid) |
| C | CRC-32ハッシュ値 |
| H | Havalハッシュ値 |
| M | MD5ハッシュ値 |
| S | SHAハッシュ値 |
| 表4 プロパティ | |
オブジェクトとプロパティの例を以下にいくつか示す。
|
|
| /etcディレクトリに関する設定例 |
上記はいずれも/etcディレクトリに関する設定例だが、1行目は/etcディレクトリのパーミッション(p)をチェックする(+)ことを示している。逆に、2行目のルールはチェックしない(-)ことを示している。
3行目は、プロパティを複数指定した場合の例で、p、i、n、u、g、t、s、d、b、m、C、Mはチェックするが、-以降のr、l、a、c、S、Hはチェックしないことを示している。
ただし、通常の運用では、こういったプロパティを個別指定するのではなく、表2に示した特殊変数の方を指定するのがよいだろう。ちなみに3行目のプロパティ値
+pinugtsdbmCM-rlacSHは、ReadOnly変数が同じ意味を持つ。
|
|
| 特殊変数を用いた設定例 |
・オブジェクトをチェック対象外にしたい場合
特定のオブジェクトをチェック対象外にしたい場合、オブジェクト名の前にエクスクラメーションマーク(!)を付け加えればよい。
|
|
| オブジェクトをチェック対象外にする |
例えば、Webコンテンツディレクトリ/www/htdocs内のwhatsnew.htmlファイルのみチェック対象外としたい場合は、以下のとおり指定すればよい。
|
|
| チェックを対象外にする例 |
●ポリシーの更新
クリアテキストのポリシーファイルを修正したら、ポリシーファイルの暗号化・署名、およびデータベースの更新を行う。ポリシーの暗号化・署名は、前回説明したとおりとなる。
|
|
| ポリシーの暗号化・署名 |
上記の例では、クリアテキストのポリシーファイル(twpol.txt)を基に、tw.polの暗号化・署名されたポリシーファイルを更新している。更新が完了したら、新しいポリシーファイルの内容をチェックするのを忘れずに行うこと。
|
|
| ポリシーファイルの内容の確認 |
|
2/3
|
| Index | |
| Tripwireでファイルの改ざんを検出せよ | |
| Page1 整合性チェック データベースの更新 ポリシーの変更 |
|
| Page2 1.セクションの定義 2.変数の定義 3.ルールの定義 |
|
| Page3 Tripwireの定期的な実行 Tripwire運用上の注意点 連載の終わりに |
|
止められないUNIXサーバのセキュリティ対策 バックナンバー
- 第1回 不要なサービスの停止こそ管理の第一歩
- 第2回 ソフトウェアの現状確認とアップグレード
- 第3回 サービスをセキュアにするための利用制限
- 第4回 スーパーユーザーの特権を制限する
- 第5回 管理者権限を制限するためのsuとsudoの基本
- 第6回 特権ユーザーの安全性向上を行うsudoの設定例
- 第7回 UNIXサーバの運用管理で欠かせないログ管理
- 第8回 syslogによるログの一元管理
- 第9回 安全性の高いログ・サーバへの乗り換えのススメ
- 第10回 ログ管理のセキュリティ強化を実現する方法を知ろう
- 第11回 Tripwireでファイルの改ざんを検出せよ
- 最終回 Tripwireのポリシーを最適化する
| 関連記事 | |
| 連載:Webアプリケーションに潜むセキュリティホール | |
| 特集:クロスサイトスクリプティング対策の基本 | |
| 連載:インシデントレスポンスはじめの一歩〜rootkitを検出するために |
| Security&Trust記事一覧 |
TechTargetジャパン
- 実録、「Hardening Zero」の舞台裏 (2012/5/25)
コラムの更新頻度を落として何をやっていたかって? 「守る技術」に焦点を当てたこんなイベントを開催しました - 複雑化、巧妙化する脅威への対策は? (2012/5/23)
データ保護や標的型攻撃対策、クラウドセキュリティ……「第9回 情報セキュリティEXPO」の会場で見つけた製品を一挙に紹介 - 仮想化がはらむ新たなリスク (2012/5/17)
仮想化に伴って生じるセキュリティやパフォーマンスへの影響を慎重に考慮し、うまく制御していく方法を紹介します - 新入生も新入社員も勉強会に寄っといで! (2012/5/14)
週末ともなれば至るところでセキュリティ系勉強会やCTFなどのイベントがあり、ツイートも盛り上がりました
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
