一、案例背景:一次典型的混合攻击
某电商平台在大促预热期间遭遇了一次持续约 6 小时的混合攻击。攻击者并没有使用单一手法,而是把流量型 DDoS (UDP Flood、SYN Flood)与应用层 CC 攻击(高频请求热点接口、慢速连接)叠加使用,形成"先打带宽、再打业务"的组合拳。本文以这次真实攻防过程为线索,梳理攻击特征、溯源思路,以及攻击者常用的防护绕过手段和对应的加固方案。
说明:文中涉及的 IP、域名、业务数据均已脱敏处理,仅保留技术要点,便于读者理解攻防逻辑。
二、攻击现象与初步研判
2.1 攻击时间线
| 阶段 | 时间 | 主要现象 | 攻击类型 |
|---|---|---|---|
| 试探期 | T+0 ~ T+20min | 少量异常 UDP 包,带宽小幅波动 | 探测防护阈值 |
| 第一波 | T+20min ~ T+1h | 出口带宽被打满,正常用户访问超时 | UDP Flood / SYN Flood |
| 第二波 | T+1h ~ T+4h | 带宽恢复后,热点接口 QPS 暴涨,数据库连接数飙升 | CC 攻击(高频请求) |
| 第三波 | T+4h ~ T+6h | 大量慢速连接占用连接池,正常请求排队 | Slowloris 类慢速攻击 |
2.2 关键观测指标
- 带宽维度:入向流量在短时间内从 200Mbps 突增到 8Gbps 以上,且源 IP 高度分散。
- 连接维度 :SYN 半连接数激增,服务器
SYN_RECV状态连接堆积。 - 应用维度:单个商品详情接口 QPS 从 300 涨到 2 万以上,且请求参数高度相似。
- 日志维度 :Nginx 访问日志中出现大量相同 UA、相同 Referer 的请求,部分请求携带伪造的
X-Forwarded-For。
三、攻击源识别思路
3.1 流量层识别
流量型攻击的源 IP 往往经过伪造或来自僵尸网络,单纯看单个 IP 意义不大,重点在于聚合特征:
- 按 /24 网段聚合,观察是否存在集中来源的 C 段。
- 统计 TCP 标志位分布,识别 SYN Flood 与 ACK Flood 的比例。
- 分析 TTL 与 IP 包长度分布,判断是否为同一工具批量发包。
- 结合威胁情报库,标记已知的僵尸网络节点和代理出口。
3.2 应用层识别
CC 攻击的识别更依赖业务日志和行为特征:
- 请求指纹:UA、Cookie、请求头顺序、TLS 指纹(JA3)是否高度一致。
- 访问路径:是否集中打某个高消耗接口,如搜索、下单、详情页。
- 访问节奏:请求间隔是否呈现机器化的固定周期。
- 参数特征:是否携带大量随机但无意义的参数,或复用同一组参数。
bash
# 统计访问日志中 Top UA 与 Top IP 的示例
awk '{print $1}' access.log | sort | uniq -c | sort -rn | head -20
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
3.3 溯源与证据留存
在攻击进行中就要同步留存证据,避免事后无法复盘:
- 抓包留存:在边界设备上对异常流量做 pcap 采样。
- 日志留存:保留完整的 Nginx、WAF、负载均衡访问日志。
- 时间对齐:统一各设备时钟(NTP),保证时间线可交叉验证。
- 情报比对:将攻击源 IP 与公开威胁情报、云厂商黑名单比对。
四、攻击者常用的防护绕过手段
4.1 源 IP 伪造与代理跳板
攻击者通过伪造源 IP、使用代理池或云主机跳板,让防护设备难以通过封 IP 止血。常见做法包括:
- 使用大量短生命周期代理 IP,封禁后迅速更换。
- 利用 CDN 回源链路,让攻击流量看起来来自可信节点。
- 伪造
X-Forwarded-For、X-Real-IP等头部,干扰日志溯源。
4.2 模拟正常用户行为
高级 CC 攻击会刻意模仿真实用户:
- 携带完整浏览器指纹和 Cookie,绕过简单的 UA 校验。
- 控制请求频率,低于单 IP 限速阈值,但通过海量 IP 形成总量攻击。
- 先访问首页、再进入详情页,构造完整的访问链路。
4.3 慢速攻击与连接耗尽
Slowloris、Slow POST 等慢速攻击不追求高带宽,而是通过长时间保持连接占用服务器资源,这类攻击往往能绕过基于 QPS 的限流策略。
4.4 加密流量与协议变形
攻击者使用 HTTPS 加密流量,使传统基于明文特征的检测失效;同时通过分片、畸形包、随机化协议字段等方式规避特征匹配。
五、防护与加固实践
5.1 分层防护架构
flowchart TD
A[攻击流量] --> B[云清洗 / 高防 IP]
B --> C[CDN 边缘节点]
C --> D[WAF 应用防火墙]
D --> E[负载均衡]
E --> F[应用服务]
F --> G[数据库]
B -.异常流量.-> H[流量清洗中心]
D -.规则命中.-> I[封禁与告警]
5.2 流量层防护
- 接入高防 IP 或云清洗服务,设置合理的清洗阈值和告警阈值。
- 开启 SYN Cookie,调整内核参数缓解 SYN Flood。
- 对异常协议和畸形包在边界设备直接丢弃。
bash
# 常用内核参数加固示例
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=8192
sysctl -w net.ipv4.tcp_synack_retries=2
sysctl -w net.ipv4.tcp_fin_timeout=15
5.3 应用层防护
- 多维度限流:按 IP、按用户、按接口、按设备指纹组合限流,避免单一维度被绕过。
- 人机校验:对高风险接口引入验证码或 JS 挑战,拦截自动化脚本。
- 行为分析:基于访问路径、请求间隔、参数分布建立基线,异常时动态提升验证等级。
- 缓存前置:对热点接口做多级缓存,降低后端压力。
nginx
# Nginx 限流配置示例
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_req_zone $http_user_agent zone=perua:10m rate=20r/s;
server {
location /api/detail {
limit_req zone=perip burst=20 nodelay;
limit_req zone=perua burst=40 nodelay;
proxy_pass http://backend;
}
}
5.4 应急响应流程
- 发现:监控告警触发,确认攻击类型与影响范围。
- 止血:启用高防清洗、临时限流、封禁高频攻击源。
- 分析:结合日志与抓包定位攻击特征,调整防护规则。
- 恢复:逐步放开限流,观察业务指标是否恢复正常。
- 复盘:输出攻击报告,完善监控指标与应急预案。
六、经验总结
- 混合攻击的核心特点是多维度叠加,防护不能只依赖单一手段。
- 攻击源识别要结合流量特征、应用日志和行为分析,单看 IP 容易被绕过。
- 限流策略要多维度组合,避免攻击者用低频海量 IP 绕过单 IP 阈值。
- 应急响应要提前演练,攻击发生时才能快速止血。
- 证据留存和复盘同样重要,是持续提升防护能力的基础。