核心是用RequestReadTimeout header指令设定“开始发头”和“发完头”的双阶段时限,并强制最低传输速率:5秒内必须发出首字节,30秒内发完全部请求头,且平均速率不低于500字节/秒,否则立即断连。

核心是用 RequestReadTimeout header 指令设定“开始发头”和“发完头”的双阶段时限,并强制最低传输速率,让慢速发头连接在几秒内就被识别并断开。
明确header超时的两个关键时间点
Slow Headers攻击的本质,是只发一个 \r\n 就停住,让服务器一直等第二个 \r\n 来结束头部。mod_reqtimeout通过两个时间戳来应对:
- 初始超时(start):客户端必须在指定时间内发出第一个字节(比如 5 秒),否则直接断连
- 总完成超时(max):从第一个字节开始,必须在限定时间内发完全部请求头(比如 30 秒)
配置示例与参数含义
在 httpd.conf 或虚拟主机配置中加入:
<IfModule reqtimeout_module>
RequestReadTimeout header=5-30,minrate=500
</IfModule>
其中:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
-
header=5-30表示:5 秒内必须开始发头,30 秒内必须发完 -
minrate=500表示:整个头部传输过程平均速率不能低于 500 字节/秒;若某段连续时间里速率低于此值,连接立即终止
对 HTTPS 站点,建议把起始时间调高到 10–20 秒,以容纳 TLS 握手开销。
必须确认模块已启用
仅写配置不生效,需确保模块加载成功:
- 检查是否存在模块文件:
ls /usr/lib64/httpd/modules/mod_reqtimeout.so(路径依系统而异) - 在配置中显式加载:
LoadModule reqtimeout_module modules/mod_reqtimeout.so - 重启 Apache:
systemctl restart httpd或apachectl graceful
配合其他设置提升防护效果
单靠 header 超时还不够,建议同步调整:
- 关闭公网入口的 KeepAlive:
KeepAlive Off,避免攻击者反复建连耗尽 worker - 限制单 IP 并发连接数(可选 mod_qos):
QS_SrvMaxConnPerIP 30 - 使用 event MPM 模式,提升高并发下连接管理效率

















