Layer7 DDoS 缓解详解
七层攻击之所以棘手,正是因为每个请求都长得像正常访客。缓解它们靠的不是单纯的带宽,而是把人类与合法客户端从自动化洪泛中区分出来。本文梳理主要手段,并说明如何确认它们真的在过滤流量。
为什么七层难
容量型的四层洪泛可以靠网络边缘的容量吸收或清洗。七层洪泛不同:每个 HTTP 请求单独来看都很廉价、格式也正常,因此防御方必须逐个请求判断它是否真实。判断错了,要么放进攻击,要么误伤真实用户。
缓解工具箱
「我正受到攻击」模式(UAM)下发静默 JS 挑战,真实浏览器可透明通过、简单脚本则失败。验证码更进一步,对高风险路径要求明确的人工交互。限速限制单客户端在时间窗口内的请求数。WAF 拦截匹配已知恶意特征的请求,指纹识别或行为分析则用 TLS 握手、请求头顺序等更隐蔽的信号给客户端打分。
它们是分层叠加、而非互斥:典型方案用 UAM 挑战可疑流量,在敏感路由升级为验证码,并用限速兜底。
用 Dstat 验证缓解
实时 Dstat 是确认缓解是否生效最简便的方式。观察绕过序列:当挑战启用时,即便总入站请求仍高,绕过流量也应在几秒内骤降。若绕过随入站同步上升,说明缓解未能有效过滤。
权衡取舍
每一层拦截机器人的摩擦,都可能给真实用户添麻烦。静默挑战(UAM)几乎无摩擦;交互式挑战(验证码)摩擦最大。七层防御的艺术,就是在正确的路径上施加刚好够用的摩擦,把绕过压向零、又不把客户赶走。
相关实时测量墙示例(Layer 7)
- Cloudflare UAM DstatUAM免费实时 Cloudflare UAM Dstat:目标开启 Under Attack Mode,所有访问者必须通过 JS 挑战。实时观察有多少请求成功通过。
- Cloudflare CAPTCHA DstatCAPTCHA免费实时 Cloudflare CAPTCHA Dstat:目标位于 Cloudflare 托管挑战(Turnstile)之后——最严格的 Layer7 过滤。实时查看真正穿透的流量。
- Cloudflare 限速 Dstat免费实时 Cloudflare Rate Limit Dstat:目标启用了 Cloudflare 限速规则——实时观察按 IP 节流后仍能通过的请求量。
七层缓解 —— 常见问题
七层缓解靠的是带宽吗?
不是。七层防御在于把合法请求从自动化请求里分辨出来,而不是吸收原始流量——那是四层的事。
怎么知道挑战真的生效了?
打开实时 Dstat,观察绕过序列:有效的挑战会使绕过流量骤降,而总入站请求仍保持高位。
验证码能挡住一切吗?
没有缓解是绝对的,但交互式挑战能大幅减少自动化流量。因为会带来用户摩擦,它们通常只用于敏感路径。