应优先限制单IP并发连接数以防御Slowloris等攻击,推荐用mod_qos配置QS_SrvMaxConnPerIP和QS_SrvMaxConn;关键路径用mod_security精准限频,结合内核参数调优防TCP层绕过。

限制 Apache 并发请求频率,核心不是压低“每秒请求数”,而是管住真实消耗资源的环节:TCP 连接数、Keep-Alive 占用、后端线程排队。单纯限 QPS(如 mod_evasive)对慢速连接攻击无效,也容易误伤正常用户。
优先限制单 IP 并发连接数
这是防资源枯竭最直接有效的手段,尤其对抗 Slowloris、R-U-Dead-Yet 等耗尽连接池的攻击。
- 推荐使用 mod_qos 模块(生产环境更可靠):
QS_SrvMaxConnPerIP 10—— 每个客户端 IP 最多维持 10 个 ESTABLISHED/KEEPALIVE 状态连接QS_SrvMaxConn 200—— 全局最大并发连接数,防个别 IP 被限但其他 IP 突增挤占全部资源 - 它统计的是 socket 连接状态,不是 HTTP 请求计数,对长连接真实有效
- 避免误用 mod_evasive 替代:它只数单位时间内的请求数,对空闲 Keep-Alive 连接完全无感知
对关键业务路径做精准请求频控
不是所有接口都需要限频,重点保护登录、搜索、下单等易被枚举或刷爆的路径。
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 用 mod_security 的 SecRule + setvar 实现轻量计数:
在 phase:1 触发(不解析请求体),降低 CPU 开销 - 跳过静态资源:
SecRule REQUEST_URI "\.(js|css|png)$" "nolog,allow" - 组合标识防误杀:
对/api/login用IP + User-Agent
对/search?q=xxx用IP + @md5(%{ARGS.q}) - 拦截返回
status:429,避免重定向或模板渲染开销
配合内核级防护堵 TCP 层绕过
mod_qos 在应用层生效,但攻击者可跳过它直打 TCP 半连接队列。
- 必须同步调优内核参数:
net.ipv4.tcp_synack_retries = 3—— 减少 SYN-ACK 重试次数,加快半连接释放net.ipv4.tcp_syncookies = 1—— 开启 SYN Cookie,防 SYN Flood 耗尽队列 - (可选)加 iptables 规则辅助控制,如限制新建连接速率
不建议全站粗放限频
像 mod_evasive 的 DOSPageCount 2 这类配置,对 CDN 或内网出口 IP 极易误封整批用户。
- 它无法区分“用户刷新首页”和“机器人爆破后台”,策略太粗糙
- 若必须用,至少按虚拟主机或目录粒度启用,并排除静态资源和健康检查路径
- 注意:mod_limitipconn 只控并发连接数,不控请求频次;mod_vhost_limit 可按虚拟主机限并发线程,适合多租户场景

















