Q

ユーザーのログオンやファイルの操作を記録するため,監査ポリシーを設定しようと考えています。そこで,グループ・ポリシーで「監査ポリシー」を設定しました。この際に,結果を記録する領域を十分に確保しようと,イベント・ビューアのセキュリティ・ログ容量をコンソールから指定できる最大値に設定しました。

 すると,イベント・ロギング・サービスの動作が不安定になり,ログの取りこぼしやログ・ファイルの破損が発生するようになってしまいました。また,Windowsそのものも,正常に起動しなかったりパフォーマンスが極端に低下したりします。このような状態はなぜ発生するのでしょうか,またどうすれば解決できるでしょうか?

A

今回のトラブルの根本的な原因はセキュリティ・ログの容量を最大に設定してしまったことにあります。この設定容量をより少ない値に設定し直すことで,Windowsが不安定になったり,ログの取りこぼしが発生したりすることはなくなるでしょう。

起動時に全ログをメモリーにロード
 なぜログ容量を最大値に設定すると,このような現象が発生してしまうのでしょう。

 イベント・ログ・サービスはサービスの起動時,つまりOSの起動時にログ・ファイルのすべてをシステム・メモリー上に読み込もうとします。しかし,システムに搭載しているメモリー容量には制限がありますし,そもそも現在のWindowsには「プロセスの合計が1Gバイト以上のメモリー・マップ・ファイルを使用できない」という制約があります。そのため,実際にイベント・ログ・サービスのプロセスが使用できるメモリー容量はさらに小さくなってしまうはずです。

 これらの制限から,イベント・ロギング・サービスが使用できるメモリー容量は,おおよそ200M~300Mバイトになると予想できます(実際に測定した場合もほぼこの範囲になっているようです)。そのため,セキュリティ・ログのサイズは,すべてのイベント・ログの合計で300Mバイトを超えない程度に設定することが望ましいと考えられます。

 それ以外に,Windowsのパフォーマンスが劣化する原因の1つとしては,メモリー・マップ・ファイルの断片化なども考えられます。

必要なログはテキストなどで別に保存
 さて,ファイル・サーバーなどで監査ポリシーを設定した場合,セキュリティ・ログの容量が十分用意できず,すべてのログを記録することができない場合もありえます。また,そのログを保存しておくために十分な容量を確保できた場合でも,場合によってはログを加工したりする必要が出てくる可能性も考えられます。

 このような場合,ある一定の間隔でセキュリティ・ログをテキスト・ファイルなどの形式で保存しておくのがよいでしょう。このような用途のために,Windows XP以降のOSではeventquery.vbsというスクリプトが提供されています。

 また,Windows NT 4.0とWindows2000のリソース・キットにも,dumpel.exeというツールが提供されています。これらのOSを使用している場合は,こちらのコマンドを使用してください。いずれのスクリプトやコマンドも,実行結果を標準出力に出力します(つまり,コマンド・プロンプトに出力することになります)。

 ここでは,eventquery.vbsを例に使い方を説明します。Windows XP以降のOS上で以下のようなコマンドを入力してください。

 CScript.exe %systemroot%\system32
 \eventquery.vbs
[オプション]


△ 図をクリックすると拡大されます
図6 ●Windows XP以降ではeventquery.vbsというスクリプトを使ってイベント・ログをテキスト・ファイルなどの形で保存できる

 すると,図6のようなイベント・ログが出力されますので,必要に応じて「>output.txt」などの記述を追加し,テキスト・ファイルなどに出力します。

 こうすることにより,必要に迫られた際の解析にも役立つでしょう。当然ながら定期的な出力が必要なこともあります。その場合,ATコマンドなどでスケジューリングしてください。

 各コマンドの使用方法については,ヘルプなどを調べてください。 マイクロソフトが国内で本格的に販売を予定しているMicrosoft OperationsManagerのようなシステム運用ツールを使用し,イベント・ログをログ・サーバー上で一元管理する方法も考えられます。これらのツールは有償ですが,より強力な運用ツールになるでしょう。使用方法などは各ツールの利用手引きやマニュアルなどを参照してください。

山岸 真人