去年一家做棋牌游戏的防护小公司被打了三天,峰值流量不到 8Gbps,手段但服务器硬是防护瘫了两天半。原因很简单——攻击者没走流量洪泛,手段而是防护盯着他们一个没做校验的登录接口,用两万台肉鸡慢速发请求,手段每秒钟才几百个包。防护防火墙的手段阈值设得太高,压根没触发。防护这事说明一个道理:DDoS 防护不是手段买个大带宽就完事,得看攻击者往哪儿捅刀子。防护
流量清洗是手段最常被提到的第一道闸。原理不复杂,防护把流量牵引到清洗中心,手段用算法识别哪些是防护正常用户、哪些是攻击包,然后把脏流量丢掉,干净的回源。阿里云、腾讯云、Cloudflare 都提供这种服务,按清洗次数或带宽峰值计费。但这里有个坑——清洗中心通常只处理 L3/L4 的攻击,比如 SYN Flood、UDP 反射。如果攻击者用的是 CC 攻击(HTTP Flood),模拟正常用户不停请求动态页面,清洗设备往往看不出来,因为每个请求看起来都合法。
CDN 在某种程度上能扛住一部分。静态资源被缓存到边缘节点,攻击者打不到源站。可动态接口不行,每个请求都得回源。有人会把 CDN 和源站之间的回源 IP 藏起来,只允许 CDN 节点访问,这样攻击者找不到真实 IP。这招管用,但前提是别自己泄露——比如邮件服务器发信时带上了源站 IP,或者 DNS 历史记录被查到。我见过一个案例,某电商的源站 IP 就是从半年前的一张 SSL 证书签发记录里被挖出来的。
速率限制和 WAF 是应对 CC 攻击的常用手段。Nginx 的 limit_req 模块、Cloudflare 的 Rate Limiting 规则,都能限制单个 IP 在单位时间内的请求数。但攻击者用代理池轮换 IP,每个 IP 只发几个请求,速率限制就形同虚设。这时候得看行为特征——比如同一个 session 在短时间内请求了大量不同商品页面,或者 User-Agent 与 TLS 指纹不匹配。WAF 厂商会维护这些规则库,但误杀率是个头疼问题。某在线教育平台开了严格模式后,把正常用户的视频拖拽请求也拦了,客服电话被打爆。
Anycast 网络算是一种架构层面的防护。把同一 IP 宣告到全球多个节点,攻击流量会被路由分散到各地,单个节点承受的压力就小了。Cloudflare 和 Google Cloud 都靠这个扛大流量。但 Anycast 对 CC 攻击帮助有限,因为攻击者可以针对特定区域发起请求,最终还是会汇聚到源站附近的节点。而且 Anycast 需要自己拥有 AS 号和 IP 段,小公司玩不转。
还有一种偏门但有效的做法:把攻击流量引到蜜罐或者黑洞路由。黑洞路由简单粗暴——直接把攻击 IP 的流量丢弃,但正常用户也可能被误伤。蜜罐则是让攻击者以为打中了目标,实际上消耗的是诱饵资源。某金融公司就部署过一套假的核心交易系统,攻击者打了半天,发现“交易”还在正常进行,自己先放弃了。不过这需要提前规划,临时抱佛脚来不及。
说句实在话,没有哪种手段能单独扛住所有 DDoS。流量清洗加 CDN 隐藏源站,再配上 WAF 做应用层过滤,最后用速率限制兜底,这套组合拳能挡住九成以上的攻击。剩下的那一成,要么是超大流量(Tbps 级别),要么是针对性极强的协议漏洞利用,那就得靠云厂商的清洗能力和应急响应速度了。选服务商的时候别只看清洗带宽,问清楚他们多久能发现攻击、多久能切换清洗策略。有些小厂宣称 1T 防护,真打起来半小时才响应,黄花菜都凉了。