它难防的地方不在于攻击流量多复杂,而在于两点:一是流量来自成千上万个不同 IP,正常和恶意的请求混在一起;二是成本极不对称,攻击者租一次压力测试服务可能只要几十块钱,而防守方要为此扩容、买清洗服务。
三种主要类型
流量型是直接耗带宽,比如 UDP Flood、ICMP Flood,还有反射放大攻击(DNS、NTP、Memcached 放大),一个小的伪造请求能换来几十甚至几万倍的响应流量。
协议型打的是连接状态,最典型的是 SYN Flood:只发握手第一步就不回应,把服务器的连接表塞满。还有针对防火墙、SSL 握手阶段的连接耗尽。
应用层也叫 CC 攻击,量不大但每请求都很贵。攻击者反复请求搜索、登录、下单这类需要查数据库或做复杂计算的接口,用很少的流量就能拖垮应用。这类最难识别,因为单看流量和正常用户几乎一样。
防御的核心思路是分层
任何单一手段都挡不住全部类型,实际防御是几层叠加。
第一层是别暴露源站。把域名解析指向 CDN 或云防护,真实服务器 IP 只在内部使用。很多攻击之所以有效,就是因为源站 IP 早就泄露了,云清洗根本没机会介入。
第二层是抗量。用 CDN、Anycast 网络、多线 BGP 或弹性带宽把流量分散和稀释掉。云厂商的清洗中心会在这层做流量特征识别、丢弃明显异常的包。
第三层是协议防护。开启 SYN Cookie、连接数限制、每 IP 并发限制、空闲连接回收,防止连接表被打满。
第四层是应用层防护。WAF 规则、速率限制、验证码或 JS 挑战、IP 信誉库、行为分析(比如同一指纹高频访问、请求间隔过于规整)、把静态内容尽量缓存前置。这一层是防 CC 的关键。
第五层是运维准备。平时就要有监控和告警,能区分"业务量上涨"和"被打";提前写好应急预案,知道流量超过多少就切清洗、什么时候上黑洞路由;和大带宽的 ISP 或云厂商建立联系,出事时能快速联动。
按规模给点实际建议
个人博客或小站,直接套一层 Cloudflare 免费版这类服务,隐藏源站 IP,加上基础限速,基本能挡住绝大多数骚扰级别的攻击。
中小企业网站,CDN + WAF + 弹性云主机是常见组合。关键是源站只允许 CDN 回源,用防火墙白名单限制,否则别人绕过 CDN 直连照样打死你。
金融、游戏、电商这类高价值目标,需要考虑专业 DDoS 清洗服务、Anycast 多节点接入、多运营商 BGP 线路,以及针对业务的风控系统。游戏行业还要考虑 UDP 协议层防护和加速节点。
几个常见误区
以为买了个硬件防火墙就万事大吉——面对几百 Gbps 的流量型攻击,本地设备本身就先被打死了,清洗必须在运营商或云端做。
以为封 IP 能解决——僵尸网络 IP 数量巨大,封闭名单只会误伤正常用户,而且攻击者随时换 IP。
只防了四层忘了七层——很多服务流量图看起来风平浪静,但 CPU 和数据库已经因为 CC 攻击满载。
攻击结束后不做复盘——攻击路径、暴露的接口、日志里的模式,都是下一次改进防护的依据。