匿名化apache日志的问题

时间:2017-08-13 17:02:58

标签: logging debian privacy apache2.4

我试图使用管道日志匿名化我的apache(2.4.25)日志。我在vServer上运行Debian9。

所以在我的apache2.conf中我得到了这个:

LogFormat "%t : %h : \"%v:%p\" \"%r\" \"%{User-Agent}i\" %>s %B" anonym
CustomLog "|/opt/anon_logs.sh" anonym

在/opt/anon_logs.sh中我把这个:

#!/bin/bash

# /opt/anon_logs.sh

# read from stdin
read logline

# remove the inner numbers of the IP with sed
anon=$( echo $logline | sed -r 's/\.([0-9]{1,3})\.([0-9]{1,3})\./.xxx.xxx./g' )

# write the result back into apache access.log
echo $anon >> /var/log/apache2/access.log

方法#1:

在我的虚拟主持人中,我得到了这个:

CustomLog ${APACHE_LOG_DIR}/access.log anonym

结果:

根本没有变化。

方法#2:

在我的虚拟主持人中,我得到了这个:

CustomLog "|/opt/anon_logs.sh" anonym

结果:

这是唯一一种在error.log中生成错误的方法:

AH00106: piped log program '/opt/anon_logs.sh' failed unexpectedly

我猜,脚本缺失了,能够作为后台进程运行。任何有关这方面的帮助也将受到赞赏!但它确实做到了!在我的access.log中,我现在发现IP减少到123.xxx.xxx.456

方法#3:

在我的虚拟主持人中,我得到了这个:

CustomLog "|$ sed -r 's/.[0-9]{1,3}.[0-9]{1,3}./.xxx.xxx./g' >> /var/log/apache2/access.log" anonym

结果:

根本没有变化。

方法1和3导致无任何变化。我在日志中找到了完整的IP。

现在,如果我通过此脚本回显access.log中的一行,我会在access.log中找到一条匿名行。

error.log在方法1和方法3上没有显示任何内容。

我错过了什么?

不幸的是,mod_removeip是没有选择的,因为它也将php语言化。我仍然希望能够区分不同的请求/客户端。我只是希望在我的访问者的隐私和一些可以看到我的Apache上发生的事情之间做出妥协...

0 个答案:

没有答案