我想阻止 Apache (2.2) 对客户端 IP 地址进行反向查找。我已经
HostnameLookups Off
和
LogFormat "%h %l %u %t %V \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" port:%p" combined_vhost
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
在 httpd.conf 中,但 Apache 在很多情况下仍然经常进行查找并将域名而不是 IP 地址写入访问日志。
我需要来自 accesslogs 的 IP 来在防火墙上阻止它们。
如果无法在 Apache 配置中设置,也许可以在 bind 配置中完成。在我需要修复的机器上,bind 作为本地递归解析器运行。
这些域名毫无用处,因为它们无法解析回原始 IP 地址(似乎这些域名故意缺少通常的 DNS A/AAAA 记录)。
答案1
不要在配置的任何地方使用名称,只使用 IP 地址,并将配置格式更改为仅记录 IP 地址。
但不清楚你为什么要这样做,你正在为自己制造一场噩梦般的维护。IP 地址有时会改变...
这些域名毫无用处,因为它们无法解析回原始 IP 地址
这根本不是问题。DNS 将超时或返回错误,生活将继续。
答案2
有一个 LogFormat 指令,它告诉 Apache 应该将什么写入访问日志。对于优先使用 IP 地址而不是主机名,有格式字符串 %a。
有关 Apache 2.2 LogFormat 文档,请参阅
https://httpd.apache.org/docs/2.2/mod/mod_log_config.html#formats
当在虚拟主机上下文中更改 LogFormat 时,似乎没有效果;我尝试在虚拟主机块中将 %h 更改为 %a,但主机名仍然被写入虚拟主机的访问日志中。
但后来我修改了全局配置文件 httpd.conf,这很有帮助。现在 apache 总是记录 IP 地址,而不是主机名。