Apache HTTP サーバ バージョン 2.4

Apache > HTTP サーバ > ドキュメンテーション > バージョン 2.4 > モジュール

# Apache モジュール mod_log_forensic

この日本語訳はすでに古くなっている 可能性があります。 最近更新された内容を見るには英語版をご覧下さい。

説明: | サーバに送られたリクエストの forensic ロギング
ステータス: | Extension
モジュール識別子: | log_forensic_module
ソースファイル: | mod_log_forensic.c
互換性: | `mod_unique_id` はバージョン 2.1 からは必須では なくなった

### 概要

このモジュールはクライアントリクエストの forensic ロギングを 行ないます。ログ収集はリクエストの処理の前と後に行なわれますので、 forensic ログは各リクエストに対して二行ログ収集します。 Forensic ロガーは非常に厳密です。これは以下のことを意味します:

- フォーマットは固定です。実行時にロギングフォーマットを変更することは できません。
- データを書けない場合は子プロセスはその場で終了し、さらにコアを ダンプするかもしれません (`CoreDumpDirectory` ディレクティブの設定に依ります)。

Forensic ログの出力を検査するためには、 配布物の support ディレクトリにある `check_forensic` スクリプトが役に立つでしょう。

### トピック

- Forensic ログフォーマット
- セキュリティの問題

### ディレクティブ

### Bugfix checklist

- httpd changelog
- Known issues
- Report a bug

### 参照

- Apache ログファイル
- `mod_log_config`

## Forensic ログフォーマット

各リクエストは2回ログ収集されます。最初はリクエストが処理される 前 (つまり、ヘッダを受け取った後) です。2度目のログは リクエストが処理された後、通常のログ収集と同じときに 行なわれます。

各リクエストを識別するために、リクエストには 一意なリクエスト ID が割り当てられます。この forensic ID は フォーマット文字列 `%{forensic-id}n` を使うことで 通常の transfer ログにログ収集することもできます。 `mod_unique_id` を使っている場合は、それが生成する ID が使われます。

最初の行は forensic ID、リクエスト行と受け取ったすべてのヘッダを パイプ文字 (`|`) で分離してログ収集します。 例えば以下のようになります (実際はすべて同じ行になります):

`+yQtJf8CoAB4AAFNXBIEAAAAA|GET /manual/de/images/down.gif HTTP/1.1|Host:localhost%3a8080|User-Agent:Mozilla/5.0 (X11; U; Linux i686; en-US; rv%3a1.6) Gecko/20040216 Firefox/0.8|Accept:image/png, etc...`

最初のプラス文字がこのログは最初のログであることを示します。 二番目の行はマイナス文字と ID のみです:

`-yQtJf8CoAB4AAFNXBIEAAAAA`

`check_forensic` スクリプトは引数としてログファイルの名前を 取ります。`+`/`-` の ID の組を調べ、完了していない リクエストがある場合は警告を発します。

## セキュリティの問題

ログファイルが保存されるディレクトリがサーバを起動したユーザ 以外で書き込み可能になっているときにセキュリティが破られる可能性が あることについての詳細はセキュリティのこつを 参照してください。

## ForensicLog ディレクティブ

説明: | Forensic ログのファイル名を設定する
構文: | `ForensicLog filename|pipe`
コンテキスト: | サーバ設定ファイル, バーチャルホスト
ステータス: | Extension
モジュール: | mod_log_forensic

`ForensicLog` ディレクティブは forensic 解析のための サーバへのリクエストをログ収集に使います。 各ログエントリには、普通の `CustomLog` ディレクティブを使ってリクエストと関連付けることの できる 一意な ID が割り当てられます。`mod_log_forensic` は `forensic-id` というトークンを作成し、フォーマット文字列 `%{forensic-id}n` を使うことでそのトークンを transfer ログに 追加することができます。

引数はログが書き出される位置を指定し、以下の 2種類の値のどちらかを 取ることができます:

filename
  `ServerRoot` からの 相対ファイル名
pipe
  パイプ文字 "`|`" と、その後にログ情報を標準入力から 受け取るプログラム。プログラム名は `ServerRoot` からの相対パスとしても 指定できます。

  ### セキュリティ:

  プログラムを使う場合、そのプログラムは `httpd` を起動したユーザで 実行されます。つまり、サーバが root で実行された場合は root で 実行されるということです。プログラムが安全であるか、より権限の少ない ユーザに切り替えるようになっていることを確かめてください。

  ### 注

  Unix 以外のプラットフォームでファイル名を入力するときは、 プラットフォームがバックスラッシュの使用を許可している場合でも、 スラッシュのみが使われるように気をつけてください。 普通は設定ファイルすべてにおいて、スラッシュの方を使用するように してください。