ModSecurity 阻止无效的主机引用
ModSecurity Block invalid host referer
我需要一个规则来阻止对 wp-login.php,
的所有 POST 请求
但我需要检查引用域是否等于请求的域名
我们需要检查这些东西:
- 检查请求的域值(示例:sitename1.com)
- 检查引用域值(示例:sitename1.com)
- 如果请求的域等于引用域
- 如果请求是 POST
- 如果请求的文件是 wp-login.php
我有以下代码来检查引用者,但我也需要检查引用者中的域
#Block WP logins with no referring URL
<Locationmatch "/wp-login.php">
SecRule REQUEST_METHOD "POST" "deny,status:401,id:5000130,chain,msg:'wp-login request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0"
</Locationmatch>
在这种情况下,我可以完全检查访客并确保他是人类
感谢您的帮助
我不确定我是否理解您的问题,但这条链式规则可能会对您有所帮助:
SecRule &REQUEST_HEADERS:Referer "!@eq 0" \
"id:5000130,\
phase:1,\
t:none,\
deny,\
status:401,\
chain,\
msg:'wp-login request blocked, no referer'"
SecRule REQUEST_URI "@beginsWith /wp-login.php" \
"chain"
SecRule REQUEST_METHOD "@streq POST" \
"chain"
SecRule REQUEST_HEADERS:Host "@rx .*" \
"capture,\
chain"
SecRule REQUEST_HEADERS:Referer "@streq %{TX.0}"
请记住:
- 此链式规则仅在设置
Referer
header 时有效
Host
header一定也存在
可能你需要另一个链式规则,它检查 Referer
header 的存在,如果 URI 是 /wp-login
,但我认为基于上面的规则你可以生产它。
我需要一个规则来阻止对 wp-login.php,
的所有 POST 请求
但我需要检查引用域是否等于请求的域名
我们需要检查这些东西:
- 检查请求的域值(示例:sitename1.com)
- 检查引用域值(示例:sitename1.com)
- 如果请求的域等于引用域
- 如果请求是 POST
- 如果请求的文件是 wp-login.php
我有以下代码来检查引用者,但我也需要检查引用者中的域
#Block WP logins with no referring URL
<Locationmatch "/wp-login.php">
SecRule REQUEST_METHOD "POST" "deny,status:401,id:5000130,chain,msg:'wp-login request blocked, no referer'"
SecRule &HTTP_REFERER "@eq 0"
</Locationmatch>
在这种情况下,我可以完全检查访客并确保他是人类 感谢您的帮助
我不确定我是否理解您的问题,但这条链式规则可能会对您有所帮助:
SecRule &REQUEST_HEADERS:Referer "!@eq 0" \
"id:5000130,\
phase:1,\
t:none,\
deny,\
status:401,\
chain,\
msg:'wp-login request blocked, no referer'"
SecRule REQUEST_URI "@beginsWith /wp-login.php" \
"chain"
SecRule REQUEST_METHOD "@streq POST" \
"chain"
SecRule REQUEST_HEADERS:Host "@rx .*" \
"capture,\
chain"
SecRule REQUEST_HEADERS:Referer "@streq %{TX.0}"
请记住:
- 此链式规则仅在设置
Referer
header 时有效 Host
header一定也存在
可能你需要另一个链式规则,它检查 Referer
header 的存在,如果 URI 是 /wp-login
,但我认为基于上面的规则你可以生产它。