凌晨两点被电话叫醒,说网站打不开了。登录后台一看,带宽跑满,请求全超时。这种场景我处理过几次,第一次的时候手忙脚乱,后来慢慢摸出了一些顺序。
先说一个反直觉的结论:被打的时候,换 IP 通常不是第一步。
先判断是哪一类攻击
不同攻击类型,应对方式完全不同。瞎试只会浪费时间。
流量型:带宽被打满,服务器本身可能还有余力,但进来的流量已经把出口堵死了。表现是整台机器失联、ping 不通、带宽图成一条直线。这类攻击靠单机防护基本无解,必须在上游清洗。
连接型:大量半连接占满连接表,机器还在,但新连接进不来。表现为能 ping 通但服务不响应。这类需要调整内核参数配合上游防护。
应用层:请求看起来都是正常的 HTTP 请求,但频率极高,或者专门打耗资源的接口(搜索、登录、下单)。带宽不高、CPU 打满。这类最麻烦,因为流量特征跟真实用户很像,靠流量清洗拦不住,要靠行为分析和限流。
判断顺序:先看带宽图,再看连接数,最后看应用日志。三张图放一起,类型基本就清楚了。
境外节点为什么更难扛
国际云厂商通常提供基础的 DDoS 防护,额度按区域和实例规格给。问题是这个额度对付小规模攻击够用,遇到大流量就溢出了。
更麻烦的是,境外节点被打时,你能调的本地资源有限——本地清洗需要带宽余量,而境外带宽按流量计费,用它来扛攻击,等于自己给自己开账单。
所以境外业务的思路通常是:把防护推到上游,让攻击流量在到达你的机器之前就被处理掉。
三条常见路线
高防 IP:在源站前面挂一个带清洗能力的高防地址,域名解析指向它,正常流量转发回源,攻击流量在清洗中心丢弃。优点是针对性强、能扛大流量;缺点是价格高,通常按月或按防护带宽计费,中小业务负担不小。
CDN 型防护:把静态资源全部走 CDN,源站 IP 不暴露。攻击打到 CDN 边缘,由平台的分布式节点吸收。优点是日常就有加速收益,防护是顺带的;缺点是动态请求仍需回源,应用层攻击照样能穿透,且源站 IP 一旦泄露(比如邮件服务器、历史 DNS 记录),防护就失效了。
按量付费的高防:平时不开,被打时临时开启,按天或按次计费。适合攻击不频繁、但偶尔会被打的业务。缺点是开通需要时间,被打的当下再开,业务已经中断了。
方案
适合
成本
局限
云厂商基础防护
小规模、偶发
免费或极低
额度有限,超了就没用
高防 IP
持续被攻击、业务敏感
高,按月计
需要提前部署
CDN 型防护
静态资源为主
中,日常有加速收益
动态接口保护有限,源站 IP 需保密
按量高防
偶发攻击
按次,突发时贵
开通需时间储备
被打之前该做的四件事
这几件事做过和没做过,出事时的差别非常大。
第一,隐藏源站 IP。所有对外域名解析到 CDN 或高防地址,邮件、FTP、测试环境不要用同一个 IP。历史 DNS 记录也要清理——换过 IP 的域名,旧记录可能还能查到。
第二,配好限流和熔断。应用层攻击能不能扛住,很大程度上取决于你有没有限流。按 IP、按接口、按用户维度设阈值,被打时至少能保住核心功能。
第三,准备好降级方案。静态页兜底、只读模式、排队页,这些东西平时看起来没用,出事时能救命。
第四,记下应急联系方式。云厂商的工单响应分级、有没有紧急通道、技术支持的电话,出事时现找会非常被动。
几个容易走偏的判断
"换 IP 就能解决。"攻击者通常盯着域名,DNS 一更新,新 IP 很快暴露。换 IP 只对低频的脚本攻击有效。
"加了 CDN 就安全了。"CDN 保护的是"源站 IP 不暴露",不是"业务不被攻击"。应用层攻击穿透 CDN 是常态。
"防护买最大的就没事。"超过防护峰值一样会被打穿,而且清洗设备本身也会成为瓶颈。真正有效的是分层:上游清洗 + 应用限流 + 架构降级。
"业务小不会被盯上。"被攻击的原因很多,同行恶意、勒索、甚至误伤,跟业务大小没关系。做跨境的尤其是重灾区。
最后一句实话
DDoS 这件事,防不住"一定不被打",只能做到"被打时业务还活着"。
与其纠结买哪种防护,不如先把限流和降级做完——这两件事成本低、见效快,而且对正常流量的稳定性也有好处。