21 10 月 2026
本文由财富云计算提供,我们提供高防服务器与 CDN 防护服务,NAT 型无独立公网 IP 价格比独立 IP 省一半以上,慢速攻击的防护要点在超时配置,文末有完整方案。

一、慢速攻击:最「节能」的攻击方式

其他 DDoS 靠量(烧攻击者带宽),慢速攻击靠占——用极低的流量把服务器的「连接资源」耗光。

HTTP 协议有个特点:请求可以分很多次发。攻击者利用这点,把一次请求拆成「几秒一个字节」,服务器就一直等着请求完成——连接不敢关(协议上还没超时)、资源不敢放(请求没处理完)。

正常请求:  [完整HTTP请求] ─── 100ms ───> [服务器处理] → [响应]
慢速请求:  [G] [E] [T] [ ] [/] [a] [p] [i] ... 每隔10秒一个字节,永不完成
            ↑ 服务器一直等,连接一直被占

攻击者的成本:几百个连接 × 几字节/分钟 = 几 KB 流量。你的损失:连接池占满,正常用户全部 503。这是网络安全里最不对称的攻击之一。

二、三种慢速攻击形态

2.1 Slowloris(慢速发请求头)

打法:发一半 HTTP 头,停住,每隔一段时间补一个字节——连接保持「半完成」状态。

GET / HTTP/1.1\r\n          ← 正常发到这里
Host: victim.com\r\n        ← 然后停 30 秒
X-Padding: AAAA...          ← 每 30 秒加几个字节,永远不发 \r\n\r\n(头结束标志)

效果:Nginx 的 worker 被这些「没写完头」的连接占住。默认 client_header_timeout 60 秒——攻击者每 30 秒喂一口,连接永不过期。100 个慢速连接就能打瘫默认配置的 Nginx。

识别:

# 连接数异常多,但 access log 里这些 IP 请求很少(请求没完成,不记日志)
ss -tn state established '( sport = :80 )' | wc -l   # 几百个 established
tail -1000 access.log | awk '{print $1}' | sort -u | wc -l  # 但活跃 IP 很少

# Nginx status(如果开了 stub_status)
curl -s localhost/nginx_status | grep -E 'Reading|Writing|Waiting'
# Reading 数量高且不下降 = 有人在慢速发头

2.2 RUDY(慢速 POST body)

打法:POST 请求,声明 Content-Length: 10000,然后 body 部分几秒发一个字节。

POST /api/comment HTTP/1.1
Content-Length: 100000
(然后每 5 秒发 1 字节的 body,永远发不完)

效果:服务器为这个 POST 分配了接收 buffer,等着收完 10 万字节——等到天荒地老。专打有表单/上传的站。

识别:和 Slowloris 类似,但连接有 POST 特征:

ss -tn state established '( sport = :80 )' | wc -l
# tcpdump 看:连接建立了,数据流极小但有(不是完全静默)
tcpdump -i eth0 'tcp port 80 and greater 100' -c 50  # 包都小得可怜

2.3 慢速读(Slow Read)

打法:连接正常建立,请求也发了,但把 TCP 窗口缩到极小,一次只读几个字节的响应——服务器为了把响应发完,长时间挂着这个连接。

效果:反向消耗服务器连接和内存(响应没发完要 buffer 着)。

识别:ss -tn 里大量连接 Recv-Q 大、Send-Q 也大,长时间不变。

2.4 慢速攻击的变形组合

  • HashDoS 配合:慢速 POST 大量参数名(Hash 碰撞),CPU 也吃满
  • 分布式慢速:几千个 IP 每个一个慢速连接——IP 封禁也没用
  • 混合打击:先慢速占连接,再 UDP Flood 打带宽——双管齐下

三、防护核心:超时收紧(Nginx 配置)

慢速攻击的解药简单得惊人——所有超时调到短。攻击者的连接喂不饱超时时间,自然断。

# /etc/nginx/nginx.conf http 块或 server 块
server {
    # 1. 头部超时:10 秒发不完整个头 = 慢速攻击,断
    client_header_timeout 10s;
    
    # 2. body 超时:10 秒传不完 body = 断(大上传业务单独放宽,见下)
    client_body_timeout 10s;
    
    # 3. keepalive 空闲超时:连接空闲 30 秒回收
    keepalive_timeout 30s;
    
    # 4. 发送超时:响应 10 秒发不完 = 断(防慢速读)
    send_timeout 10s;
    
    # 5. 超时连接发 RST 强制释放(不TIME_WAIT 干等)
    reset_timedout_connection on;
    
    # 6. 请求体缓冲(防 RUDY 占内存)
    client_body_buffer_size 16k;
    client_max_body_size 10m;    # 按业务调
}

大文件上传例外(别误杀正常业务):

location /upload {
    client_body_timeout 300s;     # 上传慢是正常的
    client_body_buffer_size 1m;
    proxy_request_buffering on;
}

调完必须重载并验证:

nginx -t && systemctl reload nginx
# 验证:正常业务没被误杀(上传大文件、慢网络用户还正常吗)

Apache 用户的对应配置

# httpd.conf
Timeout 10
KeepAliveTimeout 30
RequestReadTimeout "header=10 body=10"

四、第二层:连接数限制

超时之外,限制单 IP 连接数——就算攻击者维持连接,也占不满总池:

# http 块定义
limit_conn_zone $binary_remote_addr zone=perip:10m;

server {
    location / {
        limit_conn perip 20;          # 单 IP 最多 20 连接
        limit_conn_status 503;
        limit_conn_log_level warn;
    }
}
# 全站 worker 连接调大(扛正常突发,也拖住攻击生效时间)
events {
    worker_connections 10240;
    multi_accept on;
}

五、第三层:iptables 兜底

# 单 IP 新建连接速率限制(配合 limit 模块防新建洪泛)
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 30 -j DROP

# 半开连接快速回收(配合内核参数,见 SYN 篇)
sysctl -w net.ipv4.tcp_synack_retries=2

完整 iptables 模板见抗 DDoS 配置。

六、为什么慢速攻击必须 CDN/高防兜底

上面三层都是「源站自保」,有天花板:

问题源站的极限
分布式慢速(几千 IP 各 1 连接)单 IP 连接限制形同虚设
精确卡着超时线喂(9 秒一个字节)超时 10s 也拦不住,得调到 5s——正常用户误杀
混合流量攻击源站要同时防慢速 + Flood,资源不够分

CDN 怎么治慢速攻击:

  1. 节点超时更激进:CDN 节点和源站之间是内网/专线,超时可以压到 3–5 秒不误杀
  2. 连接在节点终止:慢速连接占用的是 CDN 节点资源,源站无感
  3. 全局视角:一个 IP 在全国各节点搞慢速,CDN 汇总识别直接封

所以慢速攻击的完整防线是:源站超时收紧(基础)+ CDN 节点终结慢速连接(主力)(CDN 防护)。

七、监控与验证:怎么知道防护生效

自测(拿慢速工具打自己,看防护)

# 安装 slowhttptest(Kali/部分发行版有,或编译)
apt install slowhttptest

# Slowloris 测试:500 连接,慢速发头
slowhttptest -c 500 -H -i 10 -r 200 -t GET -u https://你的域名/ -x 24 -p 3

# 看结果:如果 "service available" 一直是 YES = 防护生效

测试自己的服务不违法,但先确认商家 TOS 允许压测——大部分云商家要求提前报备,否则测试流量可能触发防护被误封。

持续监控

# 慢速攻击监控脚本(每分钟)
#!/bin/bash
# established 连接超过阈值告警
COUNT=$(ss -tn state established '( sport = :80 )' | wc -l)
if [ "$COUNT" -gt 200 ]; then
    echo "警告:established 连接 $COUNT,疑似慢速攻击" | your-notify-bot
fi

日常基线记录:你的站正常时 established 连接是多少(通常 50–200)——超过基线 3 倍且带宽/CPU 正常,就是慢速攻击特征。

八、被慢速攻击打了的应急

  1. 确认:ss -tn state established | wc -l 暴增、带宽 CPU 正常、网站 503 → 实锤
  2. 收紧超时(如果之前没配):10s → 5s,观察恢复
  3. 单 IP 连接限制降到 5:误伤正常用户也认了(攻击时保命优先)
  4. CDN 切流:域名切 CDN,慢速连接被节点吸收(TTL 600 的话 10 分钟生效)
  5. 极端情况:源站前挂一层 Nginx 反向代理(代理只做连接终结,超时极短),后端应用被隔离

九、小结

慢速攻击是「穷人核武器」:几 KB 流量打瘫一个站,因为它攻击的是连接保持能力而非处理能力。防护三板斧按顺序上:超时收紧(10 秒发不完就断)、单 IP 连接限制、CDN 节点终结。识别记住一个组合信号:established 连接暴增 + 带宽/CPU 平静 + access log 冷清。日常把超时配置好,被攻击时你会发现:最节能的攻击,怕的只是最不起眼的一行配置。


相关阅读:


本文由财富云计算整理,我们提供高防服务器、CDN 防护与 NAT 型云服务器,无独立公网 IP 机型价格比独立 IP 省一半以上,慢速攻击防不住的咨询我们。更多教程见端口速查表。
延伸阅读
  1. 高防误区与避坑清单:25 个坑+下单前必问 14 问+到货验货流程
  2. DNS 攻击防护专题:劫持、隧道、投毒、放大四类攻击与 DNSSEC
  3. 电商大促防攻击预案:T-14 到当天的分级响应与降级开关
  4. 源站真实 IP 隐藏完全指南:六大暴露面排查+NAT 型终极方案
  5. 日志分析找攻击源:Nginx 日志三维度分析法与证据固定
  6. 攻击应急响应手册:六阶段响应流程,从确认到复盘的照做清单
  7. iptables 抗 DDoS 配置模板:状态过滤+SYN 防护+防扫描+游戏服版
  8. OpenResty Lua 自研 WAF:动态限流+攻击特征检测+Redis 黑名单
更多阅读
  1. 上一篇:CC 攻击变种识别与对抗:分布式、慢速、拟人、精准打接口全拆解
  2. 下一篇:Nginx 进阶防护:连接层、请求层、行为层三层生产级配置
发表评论 3