Apache 通过响应代码记录到不同的文件

Cak*_*mox 0 logging apache-2.2

我有一个 apache web 服务器,它被配置为只允许少数人通过客户端证书访问。我无法通过 IP 锁定,因为证书持有者可能会从任何地方连接。

Apache 目前向任何没有提供有效证书或试图访问无效 URL 的人返回 403,但由于机器没有 ACL 限制,因此经常扫描漏洞。这些扫描会在日志中产生相当多的噪音。

有没有办法根据响应代码登录到不同的文件?是否可以将导致 403 的请求的所有日志记录发送到不同的文件?

Nia*_*gan 7

您可以让 Apache 将自定义日志通过管道传输到脚本。例如,将 vhost 中的 CustomLog 条目更改为:

CustomLog "|/path/to/script"

您可以拥有一个执行以下操作的脚本:

#!/usr/bin/perl
而 ($log = <STDIN>) {
    如果($log =~/403/){
        打开(日志,'>>/path/to/403log');
        打印日志 $log;
        关闭(日志);
    } 别的 {
        打开(日志,“>>/path/to/mainlog”);
        打印 $log 日志;
        关闭(日志);
    }
}

上面的脚本未经测试,但它应该让您了解您可以做什么。

  • 这很酷。:) 另一种使用 CustomLog 的方法:如果使用 syslog-ng,您可以使用 CustomLog 指令,如`CustomLog "/usr/bin/logger ..."`,然后在 syslog-ng 模式匹配中进行日志文件分离。 (2认同)