Apache mod_reqtimeout 不会丢弃长请求

Apache mod_reqtimeout 不会丢弃长请求

我之前不知道这个网站的存在我在 StackOverflow 上发布了此内容,所以如果我违反了论坛礼仪或其他什么的,请告诉我。

为了保护我们自己免受 slowloris 类型的攻击,我们在 Apache 2.2.17 安装(在 Solaris 上运行,MPM 编译)上配置了 mod_reqtimeout 模块。mod_reqtimeout 配置如下:

RequestReadTimeout header=10-20,MinRate=500 body=10-20,MinRate=500

我们正在使用 OWASP http_dos_cli 工具进行测试,并且仍然能够在几秒钟内使站点无法访问。在日志中,我们看到请求在 20 秒后被截断,然后被处理。由于 URL 引用的是实际资源,因此返回 200 状态代码。这阻止我们的 mod_security 规则集检测 408 状态代码、收集基于 IP 的统计信息并阻止来自此 IP 的进一步请求。

知道为什么 mod_reqtimeout 会截断请求而不是删除它并返回 408 吗?

答案1

我已经打开了一个错误报告并收到确认,HTTPD Core 中的问题导致了以下问题:

  • 当检测到请求超时时,Apache 并不总是返回 408(各种情况)
  • 当 URL 对应于 RedirectMatch 指令时,Apache 无法正确处理请求超时

更多详情请点击这里:https://issues.apache.org/bugzilla/show_bug.cgi?id=51103

希望最终能对某人有所帮助。

相关内容