HAProxy 如何防止 CC 攻击限制单一 IP 请求频率?

文章导读
基于 2025 年 11 月 9 日发布的 HAProxy 1.9.6 版本实战数据,配置timeout http-request 5s可在 5 秒内自动断开未完成请求的连接,有效防御 Slowloris 类 CC 攻击。
📋 目录
  1. 原因分析
  2. 解决方案
  3. 注意事项
  4. 参考来源
A A

HAProxy 如何防止 CC 攻击限制单一 IP 请求频率?

基于 2025 年 11 月 9 日发布的 HAProxy 1.9.6 版本实战数据,配置timeout http-request 5s可在 5 秒内自动断开未完成请求的连接,有效防御 Slowloris 类 CC 攻击。

原因分析

CC 攻击(Challenge Collapsar)通过模拟大量合法用户请求耗尽服务器资源,典型特征为 CPU 使用率突然飙升至 90% 以上且无法通过扩容缓解。攻击者利用僵尸网络从全球不同 IP 发起请求,若通过日志分析发现单个 IP 每秒请求超过 100 次,即可判定为异常流量。

解决方案

1. 内核层防护:编辑/etc/sysctl.conf,设置net.ipv4.tcp_max_syn_backlog=1024并执行sysctl -p,防止 TCP syn flood 攻击。

HAProxy 如何防止 CC 攻击限制单一 IP 请求频率?

2. HAProxy 连接限制:在 backend 配置中为每台服务器设置maxconn 100,例如server srv1 192.168.1.2:80 check cookie srv1 maxconn 100,限制单节点并发连接数。

3. 请求超时控制:在 defaults 段配置timeout http-request 5s,当用户请求时间超过设定值时断开连接,测试验证返回HTTP/1.0 408 Request Time-out

4. 实时日志监控:使用命令awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -20统计单位时间内请求量最高的 IP,识别攻击源。

HAProxy 如何防止 CC 攻击限制单一 IP 请求频率?

注意事项

编译 HAProxy 时建议开启--enable-debug选项,运行时可通过echo "show info" | socat stdio /var/run/haproxy.sock获取线程状态,曾发现有实例因正则表达式匹配陷入 ReDoS 陷阱导致 CPU 占用异常高。

参考来源

来源:HAProxy 1.9.6 源码包高性能负载均衡实战 - 2025 年 11 月 9 日发布

HAProxy 如何防止 CC 攻击限制单一 IP 请求频率?

来源:配置 Haproxy 防止 DDOS 攻击 - 2016 年 11 月 23 日资料

来源:服务器被 CC 攻击怎么办:全方位防御与应急指南 - 2025 年 10 月 24 日撰