黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击( 二 )


前面讲的很多攻击方式跟 HTTP/HTTPS 业务有关系,但是私有协议也是存在应用层 DDoS 攻击的,这个在很多游戏业务中比较常见 。一些粗暴的攻击方式是建立 TCP 连接后,发送随机的垃圾数据,一般情况下服务端遇到非法数据会直接断开这个连接 。
但是也有一些耐心的攻击者,对正常的业务流量进行抓包,然后用重放的方式对目标发起攻击,一方面是这种正常的流量会让服务端执行更多的业务逻辑计算,比如登录操作需求查询数据库,从而产生更大的攻击效果,另一个方面是很难把重放流量跟正常用户流量区分开来,对检测和防御有更大挑战 。

黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
从这些攻击方式中可以看到,应用层 DDoS 攻击不再是简单粗暴的大流量冲击,而是攻击者精心构造的数据包,伪装成正常流量绕过防御设备,攻击后端的应用和服务 。
三、传统的应用层 DDoS 防御方案
传统的防御策略是频率限制,在源 IP、URL 精度进行限速,拦截高频的访问者 。目前大多数 CC 防御产品都向用户提供限速功能 。但是频率限速有很多缺陷,因为不同的业务 QPS 差异很大,默认的限速策略并不能适用于所有场景,比如如下所示,第一个流量图,峰值流量达到 20 万 QPS,而第二个图峰值才 2 万 QPS,我们直觉上判断第二个是攻击行为,但是显然这两个业务不能用相同的限速策略的 。
黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
另一个问题是,当一个网站访问量很大时,一些脆弱的接口能承受的 QPS 又很低,全局的限速策略就不适用了 。粗暴的拦截 IP 还可能引起误伤,如果一个源 IP 访问量过大就把 IP 加黑名单,有可能将 NAT 出口 IP 拉黑,在大的公司、学校里有一个人发起攻击就把整个出口 IP 拦截了会影响到正常用户的访问 。
黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
所以应用层 DDoS 防御有个关键点是要做更精细化的策略,很多 CC 防御产品支持用户自定义策略,将指定的数据包丢掉 。对于非 HTTP 协议,部分产品提供让用户配置报文过滤特征,对 HTTP 协议,多数安全产品都提供用户配置 HTTP 各个维度的组合拦截条件 。但是 DDoS 防御都是争分夺秒的,这种人工分析和配置策略存在严重的滞后性 。另外这种策略非常依赖安全专家经验,以及对业务的了解 。
一些自动化的方案也在广泛使用,大家可能遇到过访问一个网站时出现一个白屏页面,上边提示在做安全检测,几秒钟后跳转到目标页面,这个叫 JavaScript 挑战 。服务端向客户端返回一个校验页面,里边包含了校验浏览器的 JavaScript 代码,如果用真实浏览器访问并且有正常用户行为,就可以校验通过 。它也有一些缺点,就是只适用于网页,如果是 API 接口,这种挑战会让正常业务中断,另外也不适用于非 HTTP 协议 。
黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
人机校验方式也被用于应用层 DDoS 防御,包括图形验证码或者需要用户点击、滑动的校验方式,这种做法虽然很多场景在使用,但非常影响用户体验,而且它同样存在缺陷,只能适用于网页,不能用于 API 接口和非 HTTP 协议 。
黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
四、智能化的防御方案
1. 纵深防御的架构
这些方案都存在一定的缺陷,没有一个方案是可以解决所有场景下的 DDoS 攻击,所以我们在最近几年做了一个纵深防御方案,考虑到了各种不同的攻击方式,我们从多个维度进行了流量分析和防御,包括数据包内容特征、访问行为、客户端挑战和智能化的限速,其中大量应用了自动化分析建模,精细到每个业务、每个 URL 进行访问基线分析,自动发现其中的异常,并且基于阿里云的优势大规模应用了威胁情报技术 。以下图中大部分新的防御手段都是为防御应用层 DDoS 攻击而设计的 。
黑客“借刀杀人”,阿里 14 年经验安全大佬教你如何防御 DDoS 攻击

文章插图
2. 智能的自适应方案
  • 为什么需要自适应?
不管是默认的防护模板,还是让用户去配置,都不是个好的方案 。当有大量不同业务的时候,我们必须要一个自适应的方案,根据业务的历史流量自动分析出正常情况下的基线,基于这个基线去发现异常,并阻断异常请求 。
  • 自适应的难点与挑战
难点一:如何自动刻画业务基线,并避免历史攻击的干扰?


推荐阅读