根据这个建议,我对我的配置进行了一些更改:
SecAction \
"id:901321,\
phase:1,\
pass,\
t:none,\
nolog,\
initcol:global=global,\
initcol:ip=%{x-forwarded-for}_%{tx.ua_hash},\
setvar:'tx.real_ip=%{x-forwarded-for}'"
但似乎什么也没有发生。我注意到我的 apache error_log 使用默认错误日志格式并将所有内容记录为 127.0.0.1。
所以我把我ErrorLogFormat
的改为:
ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %{X-Forwarded-For}i] %M% ,\ referer\ %{Referer}i"
这让我的日志更好,但 ModSecurity 仍然没有做任何阻塞。奇怪的是,apache error_log 中的大多数 ModSec 日志中都有一个额外的客户端 IP 部分:
[Wed May..2019] [err] [pid X:tid X] [client XXX.XX.XX.XXX] [client 127.0.0.1] ModSecurity: Warning...
我不知道额外[client 127.0.0.1]
的来自哪里 - 我知道它肯定只对 error_log 中的 ModSecurity 日志执行此操作。
似乎 ModSecurity 要么不断尝试阻止 127.0.0.1,要么只是不阻止任何东西..
那么如何让 ModSecurity 使用X-Forwarded-For
标头进行阻止呢?
笔记
- 我确实设置
SecRuleEngine On
正确。 - 版本:Apache 2.4、ModSecurity 2.9、OWASP 3