最近的Apache DOS咨询 – 应用SetEnvIf / RequestHeader解决方法的问题

所以这个build议的一个缓解措施是:

1)使用SetEnvIf或mod_rewrite来检测大量的范围,然后忽略Range:标头或拒绝请求。

选项1 🙁 Apache 2.0和2.2)

# Drop the Range header when more than 5 ranges. # CVE-2011-3192 SetEnvIf Range (,.*?){5,} bad-range=1 RequestHeader unset Range env=bad-range # optional logging. CustomLog logs/range-CVE-2011-3192.log common env=bad-range 

现在,当我将其添加到我的httpd.conf中时:

 <IfModule mod_setenvif.c> SetEnvIf Range (,.*?){5,} bad-range=1 RequestHeader unset Range env=bad-range </IfModule> 

重新启动Apache时出现此错误:

“无效的命令'RequestHeader',可能拼错或由未包含在服务器configuration中的模块定义”

SetEvnIf模块似乎被加载。

这个参数有什么问题?

版本是Apache / 2.2.14。

咨询的链接是: http : //mail-archives.apache.org/mod_mbox/httpd-announce/201108.mbox/browser

还有,Tomcat会不会受到这个?

TIA!

RequestHeader要求你加载mod_headers

根据DerfK的回答,你需要加载mod_headers – 一个拉

 LoadModule headers_module modules/mod_headers.so 

在调用RequestHeader之前的conf文件中