2016年10月21日,击类美国东海岸的击类互联网几乎瘫痪了。Twitter、击类Netflix、击类Spotify、击类GitHub——你能想到的击类大网站全挂。原因不是击类黑客攻破了什么服务器,而是击类一堆摄像头和打印机在疯狂发请求。这就是击类Mirai僵尸网络干的,它把DDoS这个词从机房拽到了普通人面前。击类
DDoS说白了就是击类拿垃圾流量堵门。但堵门的击类方式差别很大,效果也完全不同。击类
最粗暴的击类是流量型攻击。UDP洪水、击类ICMP洪水,直接拿大流量往目标IP上砸。带宽是硬通货,你带宽10G,对方打过来50G,那就不用玩了。这种攻击没什么技术含量,拼的就是谁管子粗。早些年还有人用DNS放大攻击——发一个几十字节的查询,DNS服务器回你几千字节的响应,伪造源IP指向受害者,等于借别人的嘴往目标脸上喷。放大倍数能到几十倍甚至上百倍。
比流量型更阴的是协议型攻击。SYN Flood是经典案例。TCP三次握手,客户端发SYN,服务器回SYN-ACK,客户端再回ACK。攻击者只做第一步,服务器那边半连接队列很快被塞满,正常用户连不进来。一个很老的攻击手法,但到今天依然管用,因为很多系统的默认超时时间太长了。还有ACK Flood、FIN Flood,原理类似,都是钻协议实现的空子。
真正让人头疼的是应用层攻击。它不跟你拼带宽,专挑你业务逻辑的软肋。比如CC攻击,模拟真实用户去请求那些最耗资源的页面——搜索接口、数据库查询、登录验证。一个请求可能让服务器跑几秒钟的CPU,几千个请求就能把一台八核机器打满。这种攻击流量看起来不大,WAF和传统防火墙经常看不出来,因为每个请求单看都像正常用户。
慢速攻击更绝。Slowloris保持大量半开的HTTP连接,每隔一会儿发一个字节,服务器觉得连接还活着,就一直等。Apache的默认配置下,几百个这种连接就能把连接池耗尽。还有Slow POST,声明一个巨大的Content-Length,然后慢吞吞地传body,服务器等也不是,不等也不是。
反射和放大攻击这几年越玩越花。Memcached反射曾经搞出过1.7 Tbps的流量——一个Memcached服务器能放大五万倍。攻击者把攻击指令塞进Memcached的UDP端口,伪造受害者IP,Memcached傻乎乎地把巨大的响应发给受害者。这种攻击的可怕之处在于,你根本不需要控制多少机器,只需要找到足够多的开放Memcached实例。
还有一种容易被忽略的:DNS查询洪水。攻击者用你的域名做递归查询,让你的权威DNS服务器疲于奔命。你的网站可能没事,但没人能解析到你的IP,效果一样。
实际攻击很少是单一类型。去年我接触过一个案例,攻击者先用UDP洪水打掉CDN节点,同时用CC攻击猛刷源站API,最后用慢速攻击拖住数据库连接池。三板斧下来,运维团队手忙脚乱。防御方如果只盯着流量清洗,应用层那部分就漏了。
防御这事没有银弹。流量型靠清洗中心硬扛,协议型调内核参数和超时时间,应用层得靠行为分析和速率限制。最怕的是那种混合攻击,你刚把流量清洗打开,CC攻击已经把你数据库打挂了。所以现在稍微像样点的防护都是分层做:CDN挡一层,WAF挡一层,源站再做一层限流。真到被打的时候,反应速度比方案本身更重要。
顶: 5922踩: 224






评论专区