如何解决ModSecurity 阻止无效的主机引用
我需要一个规则来阻止对 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
标头时才有效 -
Host
标头也必须存在
可能您需要另一个链式规则,它检查 Referer
标头是否存在,如果 URI 是 /wp-login
,但我认为基于上述规则您可以生成它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。