2018年2月,攻击GitHub遭遇了当时史上最大规模的案例DDoS攻击。峰值流量1.35 Tbps,攻击持续了将近20分钟。案例攻击者没有用什么高深漏洞,攻击他们利用了Memcached——一个常见的案例内存缓存系统。Memcached默认监听11211端口,攻击暴露在公网时,案例攻击者可以往里面塞数据,攻击然后伪造受害者IP发起查询。案例一个请求能换来数万倍的攻击响应流量。放大倍数超过50000倍。案例这相当于你用一张邮票寄出一封信,攻击收件人收到一整列火车的案例回信。
这种攻击手法叫反射放大。攻击它不是新东西,但Memcached那次让所有人重新审视了“小请求大响应”这类协议的杀伤力。GitHub当时靠Akamai的清洗中心扛住了,但很多小公司没这个预算。我见过一个做在线教育的创业团队,2019年被人用类似手法打了三天,服务器欠费停机,客户流失过半,最后直接关门。
DDoS攻击的核心逻辑不复杂:让目标服务器无法正常服务。但具体打法五花八门。流量型攻击靠量压垮带宽,协议型攻击消耗连接资源,应用层攻击则模仿正常用户行为,比如慢速HTTP请求——一个连接慢慢发数据,占着线程不放。Apache和Nginx默认配置下,几百个这种连接就能让后端数据库连接池耗尽。
说个具体的。2021年,某家做跨境电商的中型公司,黑五前一周被打了。攻击流量只有8 Gbps,不算大。但攻击者混合了DNS反射和SYN洪水,同时用慢速POST请求拖住应用层。运维团队一开始只盯着带宽图,没注意应用层。等发现的时候,数据库已经因为连接数爆满而拒绝服务。宕机四小时,损失超过二十万美元。事后复盘,攻击者是从一个公开的物联网设备漏洞扫描列表里挑的目标。他们根本没针对这家公司,只是批量扫描,谁没防护就打谁。
这行有个残酷现实:攻击成本极低。网上有现成的DDoS-for-hire平台,几十美元就能发起一次持续一小时的攻击。而防御成本呢?云清洗服务每月几千到几万美元不等。攻防经济账严重不对等。我认识一个游戏公司的运维,他说他们每周被扫十几次,习惯了。小流量攻击自己扛,大流量切高防。但每次切换有延迟,玩家会掉线,投诉就来了。
防御手段也在进化。任何cast和流量清洗是主流,但我觉得最有意思的是行为分析。比如Cloudflare的机器学习模型,会看请求频率、User-Agent一致性、TCP握手特征。一个正常用户不会每秒发50个GET请求,也不会在TCP连接建立后立刻发RST。这些模式识别能挡住不少应用层攻击。不过误杀是个问题。有次某电商大促,风控系统把真实用户当攻击流量拦了,损失比被攻击还大。
还有个灰色地带:有些“安全公司”自己养着攻击流量。先打你,再卖防护。这事在业内不算秘密,但很难取证。我个人的判断是,如果一家小公司突然被精准攻击,且攻击流量刚好卡在让你难受但不至于完全下线的水平,可以想想最近有没有接触过什么“安全顾问”。
最后说个观察。很多DDoS攻击的源头是物联网设备——摄像头、路由器、智能插座。默认密码没改,固件不更新,被Mirai这类僵尸网络一扫一个准。2016年Mirai打垮了Dyn DNS,半个美国互联网瘫痪。五年过去,同样的问题还在。我家里那台老路由器,去年扫出来还开着Telnet。厂商早就不支持了。这些设备就像没锁的后门,攻击者随时能征用。
DDoS不是技术炫技,是资源消耗战。攻击者找最弱的环节,防御者补最贵的窟窿。没有一劳永逸的方案,只有持续对抗。