mod_log_forensic
描述: | 取证记录对服务器的请求 |
状态: | 延期 |
模块标识符: | log_forensic_module |
源文件: | mod_log_forensic.c |
兼容性: | version 2.1 后不再需要mod_unique_id |
摘要
此模块提供 client 请求的取证 logging。 Logging 在处理请求之前和之后完成,因此取证 log 包含每个请求的两个 log lines。取证 logger 非常严格,这意味着:
- 格式是固定的。您无法在运行时修改 logging 格式。
- 如果它无法写入其数据,则子 process 立即退出并可能转储核心(取决于您的和 CoreDumpDirectory configuration)。
check_forensic
脚本可以在发行版的支持目录中找到,可能有助于评估取证 log 输出。
Forensic Log 格式
每个请求都会记录两次。第一个 time 是在它进一步处理之前(即,在接收到 headers 之后)。第二个 log 条目是在发生正常 logging 的同一 time 处理请求之后写入的。
在 order 中标识每个请求,分配唯一的请求 ID。可以使用%{forensic-id}n
format string 在正常传输 log 中交叉记录此取证 ID。如果您使用的是mod_unique_id,则会使用其生成的 ID。
第一个 line 记录取证 ID,请求 line 和所有收到的 headers,由管道符(|
)分隔。 sample line 看起来如下(所有在一个 line 上):
+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...
开头的加号表示这是此请求的第一个 log line。第二个 line 只包含一个减号字符和 ID:
-yQtJf8CoAB4AAFNXBIEAAAAA
check_forensic
脚本将日志文件的 name 作为其参数。如果请求未完成,它会查找那些+
/-
ID 对并抱怨。
安全注意事项
如果存储日志文件的目录可由除启动服务器的用户以外的任何人写入,请参阅安全提示文档以获取有关安全性可能受到危害的原因的详细信息。
log files 可能包含敏感数据,例如Authorization:
headers(可以包含密码)的内容,因此除了启动服务器的用户之外,任何人都不应该读取它们。
ForensicLog 指令
描述: | Sets 文件 log 的文件名 |
句法: | ForensicLog filename\|pipe |
Context: | server config,virtual host |
状态: | 延期 |
模块: | mod_log_forensic |
ForensicLog
指令用于 log 请求到服务器进行取证分析。每个 log 条目都分配了一个唯一的 ID,可以使用普通的CustomLog指令将该请求与请求相关联。mod_log_forensic创建一个名为forensic-id
的标记,可以使用%{forensic-id}n
格式 string 将其添加到 transfer log 中。
参数指定了日志的写入位置,可以采用以下两种值之一:
- 文件名
相对于 ServerRoot 的文件名。 - 管
管道符“|”,后跟程序的路径,以接收其标准输入上的 log 信息。可以相对于 ServerRoot 指令指定程序 name。安全性:如果使用某个程序,那么它将作为启动 httpd 的用户 run。如果服务器是由 root 启动的,那么这将是 root 用户;确保程序安全或切换到权限较低的用户。注意在 non-Unix 平台上输入文件路径时,应注意确保仅使用正斜杠,即使平台可能允许使用反斜杠。通常,在 configuration files 中始终使用正斜杠是一个很好的 idea。