Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 匿名化apache日志的问题_Logging_Debian_Privacy_Apache2.4 - Fatal编程技术网

Logging 匿名化apache日志的问题

Logging 匿名化apache日志的问题,logging,debian,privacy,apache2.4,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 CustomLog ${APACHE_LOG_DIR}/access.log anonym CustomLog "|

我正在尝试使用管道日志匿名化我的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
CustomLog ${APACHE_LOG_DIR}/access.log anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog "|$ sed -r 's/.[0-9]{1,3}.[0-9]{1,3}./.xxx.xxx./g' >> /var/log/apache2/access.log" 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: 在我的虚拟主机配置中,我得到了以下信息:

LogFormat "%t : %h : \"%v:%p\" \"%r\" \"%{User-Agent}i\" %>s %B" anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog ${APACHE_LOG_DIR}/access.log anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog "|$ sed -r 's/.[0-9]{1,3}.[0-9]{1,3}./.xxx.xxx./g' >> /var/log/apache2/access.log" anonym
结果: 日志中没有任何更改

方法2: 在我的虚拟主机配置中,我得到了以下信息:

LogFormat "%t : %h : \"%v:%p\" \"%r\" \"%{User-Agent}i\" %>s %B" anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog ${APACHE_LOG_DIR}/access.log anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog "|$ sed -r 's/.[0-9]{1,3}.[0-9]{1,3}./.xxx.xxx./g' >> /var/log/apache2/access.log" anonym
结果: 这是在error.log中生成错误的唯一方法:

AH00106: piped log program '/opt/anon_logs.sh' failed unexpectedly
我猜,脚本缺少了一些东西,无法作为后台进程运行。在此方面的任何帮助都将不胜感激!但它确实起作用了!!!在我的access.log中,我现在发现IP地址减少到123.xxx.xxx.456

方法#3: 在我的虚拟主机配置中,我得到了以下信息:

LogFormat "%t : %h : \"%v:%p\" \"%r\" \"%{User-Agent}i\" %>s %B" anonym
CustomLog "|/opt/anon_logs.sh" anonym
CustomLog ${APACHE_LOG_DIR}/access.log anonym
CustomLog "|/opt/anon_logs.sh" anonym
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上发生了什么的可能性之间达成一个很好的折衷…

事实证明,方法#2确实起到了作用。不幸的是,只有一半的工作。access.log中的第一行是原样,第二行反映了前面的行,匿名IP:-/非常感谢您的帮助!您应该替换为
0
而不是
x
,以保持与处理这些日志的大多数软件的兼容性。请尝试
sed-E/([0-9]{1,3}\){3})([0-9]{1,3})/\10/g'
。但与iPv6不兼容。