区别在于攻击针对的是堆栈的哪一部分,这决定了你如何检测和阻止它。Layer 3/4 攻击是关于原始流量;Layer 7 攻击是关于昂贵且看起来逼真的请求。
Layer 3/4 — 容量型/网络攻击
这些攻击针对网络和传输层,试图饱和带宽或耗尽连接状态,而不是针对你的应用逻辑。
防御是关于吸收或过滤数据包:SYN cookies(使服务器在握手完成前不保存状态)、anycast + scrubbing centers(将洪流分散到全球容量并进行清洗)以及上游/ISP 过滤(在数据包到达你之前丢弃伪造或垃圾数据包)。这些数据包本身显然格式不正确或未请求,所以过滤是机械性的。
这些攻击针对应用层(HTTP),使用看起来完全合法的请求。
GET /search?q=...、POST /login)发送大量请求,使每个请求都强制执行数据库查询、渲染或身份验证检查。危险在于不对称性:一个很小的请求可能让你付出很大的查询代价,所以远少的带宽就能让你服务瘫痪。而且因为每个请求都是格式正确的,数据包过滤无法将其与真实用户区分。
防御必须比过滤更聪明:WAF 来匹配恶意模式,速率限制按 IP/user/token,以及行为分析(challenge 页面、JS/CAPTCHA、指纹识别)来区分机器人和真人。
Layer 3/4 : detect by VOLUME + protocol anomalies -> filter/absorb packets (cheap to spot)
Layer 7 : detect by BEHAVIOR (looks like real traffic) -> needs request-level intelligence
你无法用一个工具防御两者。一个粉碎 1 Tbps UDP 洪流的清洗中心将放行 50,000 请求/秒的 HTTP 洪流,因为每个请求看起来都是有效的。高级工程师首先确定层级,然后采用相应的控制——针对容量型攻击的数据包级别清洗和 anycast,针对应用层洪流的请求级别 WAF、速率限制和行为挑战。