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

我有一个Apache Web服务器,它被configuration为允许通过客户端证书访问只有几个人。 我不能通过IPlocking,因为证书持有者可能从任何地方连接。

Apache目前向任何不出示有效证书或尝试访问无效URL的用户返回403,但由于该机器没有ACL限制,因此经常会扫描漏洞。 这些扫描会在日志中造成相当多的噪音。

有没有办法根据响应代码login到不同的文件? 是否有可能发送所有logging的请求导致403到不同的文件?

您可以让Apache将自定义日志传送到脚本。 因此,例如,将虚拟主机中的CustomLog条目更改为:

CustomLog "|/path/to/script"

你可以有一个脚本来做类似的事情:

 #!的/ usr / bin中/ perl的
 while($ log = <STDIN>){
     if($ log =〜/ 403 /){
        打开(LOG,'>> / path / to / 403log');
        打印LOG $日志;
        closures(LOG);
     } else {
        打开(LOG,'>> / path / to / mainlog');
        打印$ log LOG;
        closures(LOG);
     }
 }

上面的脚本没有经过testing,但它应该让你知道你能做什么。