因为我安装并设置了varnish缓存,所以失败的登录将使用缓存的IP (127.0.0.1)而不是攻击者记录到auth.log。例如:
Jul 8 14:48:06 host wordpress(hostname.com)[7285]: Authentication failure for admin from 127.0.0.1
在我的配置中,Varnish提供超文本传输协议,apache2提供超文本传输协议作为反向代理和后端the服务器。内部和外部web请求分别记录。看起来一切正常,除了暴力破解登录现在不会被fail2ban拾取,因为它们似乎都来自服务器。
子vcl_recv被设置为“通过”登录页面;
if (req.url ~ "/wp-(login|admin)") {
return (pass);
}如何将请求IP记录到auth.log而不是127.0.0.1?
发布于 2020-07-13 15:17:29
Varnish会跟踪客户端IP,并将其存储在X-Forwarded-For头中,然后转发到您的后端。
只需将标头添加到LogFormat中以包含X-Forwarded-For即可。
下面是Apache配置文件中的combined和common日志格式:
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common您必须按如下方式更改它:
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %O" commonX-Forwared-For标头的值将存储在您的日志中,而不是客户端IP地址。
更新
事实证明,有问题的日志项与Apache无关。修改LogFormat的建议无关紧要。
这可能与使用wp-fail2ban有关,这是一个在系统的auth.log文件中记录失败登录尝试的WordPress模块。
因为wp-fail2ban不知道Varnish,所以它记录的IP地址始终是127.0.0.1。但是,WP_FAIL2BAN_PROXIES配置参数可以让这个模块知道代理。
https://stackoverflow.com/questions/62799461
复制相似问题