如何抗ddos攻击,教你一个不花一分钱又有效的好方法

如何抗ddos攻击,教你一个不花一分钱又有效的好方法,第1张

如何抗ddos攻击,教你一个不花一分钱又有效的好方法 DDoS 攻击近几年来非常常见,许多知名的平台网站都遭遇过。


当应用层 DDoS 攻击当前已经是最常见的攻击类型之时,对于程序员而言,有哪些必须掌握的 DDoS 攻击的知识点,更为关键的是,如何进行有效的防御实践?在「CSDN 在线峰会 —— 阿里云核心技术竞争力」上,在系统、应用、网络安全领域拥有 14 年研究经验的阿里云资深安全专家叶敏深入分享了新型应用层 DDoS 攻击防御的最佳实践,希望能够对所有技术人有所启发及裨益。


复制链接或点击「阅读原文」可免费观看叶敏老师分享视频: https://edu.csdn.net/course/play/28249/388361作者 | 叶敏,阿里云资深安全专家责编 | 唐小引头图 | CSDN 下载自东方 IC出品 | CSDN(ID:CSDNnews)

一、应用层 DDoS 攻击介绍DDoS 攻击长久以来困扰着互联网企业,从我们云盾监测到的 DDoS 攻击流量峰值来看,最近几年攻击流量在大幅上涨,从 2014 年我们对外宣布防御了全球最大的 DDoS 攻击,453.8Gbps,到现在 T 级别的 DDoS 也变得很常见。


大流量 DDoS 攻击存在了很多年,虽然攻击流量一直在增长,但是攻击类型变化不大,一直以 SYN Flood、UDP Flood、UDP 反射攻击为主。


针对大流量攻击已经有了非常有效的防御手段,以前这种大流量攻击遇到安全设备时,就像进了黑洞一样被吞噬,防御成功率很高,但是黑客们不服输,他们向这个黑洞发起了新的挑战。


如果把攻击流量伪装成正常业务的流量,那么安全防御设备就很难区分出攻击流量,这样就能穿过防御设备攻击到后端的应用,这就是应用层 DDoS 攻击,也叫 CC( Challenge Collapsar )攻击,就是挑战黑洞的意思。



二、应用层 DDoS 的攻击方式应用层 DDoS 最近几年越来越受到黑客的青睐,从监测到的数据来看,应用层 DDoS 攻击在 2019 年就有翻倍增长。


除了容易绕过防御设备,还有一个重要的原因是应用层 DDoS 攻击更加高效,因为应用层的攻击都要触发上层应用的处理逻辑,其中可能有数据库查询、远程 API 调用、文件读写,甚至有复杂的计算逻辑,所以这些流量会对服务端带来更大的压力。


攻击者精心挑选的带有复杂逻辑的 URL 进行攻击,可以用很小的流量对应用或数据库产生巨大压力。


攻击者不需要用到很大的带宽,甚至对服务端只有小幅度的 QPS 上涨,让检测和防御都变得更有挑战。


DDoS 攻击最典型的方式是僵尸网络,黑客控制了大量的傀儡主机(肉鸡或 bot)向目标发起攻击。


这些傀儡主机可能是服务器、PC、手机或 IoT 设备。


在应用层 DDoS 攻击中,我们发现另一种借刀杀人的攻击方式也很常见,黑客在一些热门的网页中嵌入了带有攻击行为的 JavaScript 代码,当访问者打开这些网页时,浏览器就循环对目标发起攻击,在一些停留时间比较长的网页,比如长篇小说或小电影网站,再加上不停的有新用户访问,攻击就会持续很长时间。


虽然黑客没有控制这些设备的权限,但是他借助这些正常用户的浏览器实现了大规模的应用层 DDoS 攻击。


互联网上 HTTP/HTTPS 服务占比最大,所以针对 HTTP/HTTPS 协议的应用层 DDoS 攻击也是最常见的,我们把它叫 HTTP Flood。


虽然都是发起 HTTP 请求,但是也有不同的方式,防御的难度也不一样。


我们分析过很多 DDoS 木马,有些直接拼接 HTTP 报文内容发送给服务端,这种通常攻击手法比较单一,而且也没有考虑 Cookie 和 HTTP 跳转,更不能执行 JavaScript。


进一步我们发现有些木马使用现成的 HTTP 库,它对 HTTP 协议的支持更完善,部分可以支持 Cookie 和 HTTP 跳转,但没有浏览器引擎所以不能执行 JavaScript。


再进一步我们发现带有浏览器引擎的攻击方式,它其实就是个无窗口的浏览器,可以完整的支持 Cookie、HTTP 跳转和 JavaScript。


我们也发现直接使用浏览器进行攻击的,有 Windows 平台的恶意软件中嵌入 IE 控件,移动 App 中嵌入 WebView 控件,前面讲到的热门网页嵌入 JavaScript 也是浏览器攻击的例子。


因为攻击流量本身就是浏览器发起的请求,所以这种识别难度更大。


另外一种应用层 DDoS 攻击是针对 SSL,据统计全球超过 85%的网页已经启用 HTTPS 协议了,所以攻击目标范围很大。


我们知道建立一个 SSL 连接的开销是比较大的,有人分析过,建立一个 SSL 连接服务端消耗的计算资源是客户端的 15 倍,所以如果攻击者向目标服务器发起大量 SSL 连接握手,就会对目标服务器产生巨大的性能压力。


这里还有一个挑战在于,只有在 SSL 握手完成以后,才会传输应用层的数据内容,所以通过数据包内容来检测攻击,在这里就不适用。


前面讲的很多攻击方式跟 HTTP/HTTPS 业务有关系,但是私有协议也是存在应用层 DDoS 攻击的,这个在很多游戏业务中比较常见。


一些粗暴的攻击方式是建立 TCP 连接后,发送随机的垃圾数据,一般情况下服务端遇到非法数据会直接断开这个连接。


但是也有一些耐心的攻击者,对正常的业务流量进行抓包,然后用重放的方式对目标发起攻击,一方面是这种正常的流量会让服务端执行更多的业务逻辑计算,比如登录 *** 作需求查询数据库,从而产生更大的攻击效果,另一个方面是很难把重放流量跟正常用户流量区分开来,对检测和防御有更大挑战。


从这些攻击方式中可以看到,应用层 DDoS 攻击不再是简单粗暴的大流量冲击,而是攻击者精心构造的数据包,伪装成正常流量绕过防御设备,攻击后端的应用和服务。



三、传统的应用层 DDoS 防御方案传统的防御策略是频率限制,在源 IP、URL 精度进行限速,拦截高频的访问者。


目前大多数 CC 防御产品都向用户提供限速功能。


但是频率限速有很多缺陷,因为不同的业务 QPS 差异很大,默认的限速策略并不能适用于所有场景,比如如下所示,第一个流量图,峰值流量达到 20 万 QPS,而第二个图峰值才 2 万 QPS,我们直觉上判断第二个是攻击行为,但是显然这两个业务不能用相同的限速策略的。


另一个问题是,当一个网站访问量很大时,一些脆弱的接口能承受的 QPS 又很低,全局的限速策略就不适用了。


粗暴的拦截 IP 还可能引起误伤,如果一个源 IP 访问量过大就把 IP 加黑名单,有可能将 NAT 出口 IP 拉黑,在大的公司、学校里有一个人发起攻击就把整个出口 IP 拦截了会影响到正常用户的访问。


所以应用层 DDoS 防御有个关键点是要做更精细化的策略,很多 CC 防御产品支持用户自定义策略,将指定的数据包丢掉。


对于非 HTTP 协议,部分产品提供让用户配置报文过滤特征,对 HTTP 协议,多数安全产品都提供用户配置 HTTP 各个维度的组合拦截条件。


但是 DDoS 防御都是争分夺秒的,这种人工分析和配置策略存在严重的滞后性。


另外这种策略非常依赖安全专家经验,以及对业务的了解。


一些自动化的方案也在广泛使用,大家可能遇到过访问一个网站时出现一个白屏页面,上边提示在做安全检测,几秒钟后跳转到目标页面,这个叫 JavaScript 挑战。


服务端向客户端返回一个校验页面,里边包含了校验浏览器的 JavaScript 代码,如果用真实浏览器访问并且有正常用户行为,就可以校验通过。


它也有一些缺点,就是只适用于网页,如果是 API 接口,这种挑战会让正常业务中断,另外也不适用于非 HTTP 协议。


人机校验方式也被用于应用层 DDoS 防御,包括图形验证码或者需要用户点击、滑动的校验方式,这种做法虽然很多场景在使用,但非常影响用户体验,而且它同样存在缺陷,只能适用于网页,不能用于 API 接口和非 HTTP 协议。



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


以下图中大部分新的防御手段都是为防御应用层 DDoS 攻击而设计的。


2. 智能的自适应方案为什么需要自适应?不管是默认的防护模板,还是让用户去配置,都不是个好的方案。


当有大量不同业务的时候,我们必须要一个自适应的方案,根据业务的历史流量自动分析出正常情况下的基线,基于这个基线去发现异常,并阻断异常请求。


自适应的难点与挑战难点一:如何自动刻画业务基线,并避免历史攻击的干扰?比如以下图中第一个流量图,我们能够自动识别出来它的周期性波动并生成它的频率基线,虽然峰值 QPS 非常高,但是它符合历史频率基线,所以我们判定它是正常行为。


第二个图,虽然峰值 QPS 不高,但是它不符合历史基线,所以判定存在攻击行为。


整个过程需要基于数据自动完成,因为在存在大量不同业务的情况下,人工标注是不现实的。


同时,倘若网站历史上存在攻击,也需要自动剔除攻击时的数据,避免干扰。


难点二:如何在攻击第一时间发现异常并作出处置?发现流量存在异常仅仅是第一步,最重要的是识别出来哪些流量是异常的,并且自动生成策略把它阻断掉。


每个业务的流量都不一样,攻击方式也千变万化,显然不能用一个固定的特征去区分出攻击流量和正常流量。


同样的,找出攻击流量的关键是要知道正常流量长什么样,我们从几十个维度,在业务正常的时候学习出流量的基线画像,精细到每个域名、每个端口、每个 URL,同样也是千人千面。


当发生攻击时,流量分析引擎可以根据当前流量和基线的对比,自动生成拦截攻击流量的策略。


3. 降维打击的协同防御在阿里云我们每天防御了海量的攻击,每一次防御都是可以输出有价值的信息用于保护更多的其他客户。


就像免疫系统一样,一个客户遭受过一种类型的攻击,该攻击情况就会进入威胁情报系统中,自动分析出攻击手法和攻击源 IP 特性,并生成多维度的针对性方案。


下次再发生这种攻击时,所有客户都可以受到保护。



五、应用层 DDoS 攻防的发展DDoS 防御需要争分夺秒,能快一分钟,业务中断就少一分钟,整个防御系统要足够实时。


在流量的采集、分析和拦截都要做到实时化,特别是攻击流量大的时候,实时分析对整个链路的性能都有很大挑战。


要做到足够快,人工分析一定是来不及的,必须要足够自动化、智能化,通过离线的基线画像计算,加上实时的智能策略,我们现在做到了 95%以上的应用层 DDoS 攻击都可以在 3 分钟内自动防御成功,将业务恢复,因为整个分析决策链路长,其中还是有很大改进空间。


应用层 DDoS 还有很多挑战等着我们去解决,误杀问题是其中一个,当业务有促销、秒杀活动时,短时间内流量激增,部分秒杀场景中大量 IP 集中访问一个页面,甚至此时正常业务就已经受到影响,服务端响应过慢了,此时各个维度都跟正常基线相关非常大,攻击检测系统很容易将这种行为误判为 DDoS 攻击。


另外一个难题是,防御系统非常依赖业务的基线画像做防御策略,如果一个新上线的业务就遭受攻击,或者业务刚接入防御系统,此时防御系统缺少该业务的画像,并不知道它正常流量是怎样的,防御效果就会大打折扣。


另外一个问题也发生过多次,在一些业务中客户端有重连的逻辑,或者出错后重传的逻辑,如果客户端逻辑设置不当,当服务端发生异常时不断重连或重传,也容易误判为攻击行为,导致整个 IP 被封禁。


针对这些防御缺陷,我们也在设计新的技术方案,包括访问源、客户端的信誉评分,尽量减少对正常用户的误杀。


从历史发展来看,DDoS 的攻防技术一直在发展,但是攻击和防御从来都没有哪一方是占据绝对优势的,双方的技术总是在螺旋上升。


只要有利益存在,黑客就会不断挑战我们的防御方案,虽然今天我们做了大量防御技术上的创新,但是道高一尺,魔高一丈,黑客一定会研究新的攻击技术绕过我们的防御系统,从简单、粗暴的攻击方式往精细化、智能化方向发展,进而迫使我们研究新的防御技术,未来攻击和防御技术都会迈上一个新的台阶。


作者简介:叶敏,阿里云资深安全专家,在系统、应用、网络安全领域有14年研究经验,阿里反钓鱼、云盾反入侵、网络安全产品技术负责人,在网络安全攻防方面有丰富的经验,其主导建设的多项安全技术保护了阿里云百万级客户。


作为“百万人学AI”的重要组成部分,2020 AIProCon 开发者万人大会将于6月26日通过线上直播形式,让开发者们一站式学习了解当下 AI 的前沿技术研究、核心技术与应用以及企业案例的实践经验,同时还可以在线参加精彩多样的开发者沙龙与编程项目。


参与前瞻系列活动、在线直播互动,不仅可以与上万名开发者们一起交流,还有机会赢取直播专属好礼,与技术大咖连麦。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/613581.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-14
下一篇 2022-04-14

发表评论

登录后才能评论

评论列表(0条)

保存