关于 DDOS,有什么方法解决
一、DDoS 概述
DDoS 攻击是由 DoS 攻击发展而来的,根据攻击原理和方式的区别,可以把 DDoS 攻击分为两个阶段,即从传统的基于网络层的 DDoS 攻击和现阶段较为常见的基于应用层的 DDoS 攻击,这两类攻击方式各有特点,都对网络的安全造成了极大的危害。对于应用层 DDoS 攻击来说,基于 Web 服务器的攻击是最常见的。
二、DDoS 的两种类型
1.系统漏洞型
这种类型的攻击是利用操作系统或者应用程序本身所具有的漏洞来发起的,攻击者通过构造出针对攻击目标的漏洞的报文来对攻击目标发起攻击,攻击者利用这种攻击方式以达到拒绝服务攻击的目的。
2.资源耗尽型
资源耗尽型攻击主要目标是消耗掉系统的带宽或者例如资源等,攻击者发送大量的非法的请求数据包,使攻击目标出现资源或者带宽上的迅速消耗,从而无法响应其他正常的用户的请求。
三、网络层 DDoS 攻击原理及方式
常见的网络层 DDoS 攻击就是利用 TCP/IP 协议族的一些特征,控制大量的傀儡机发送合理的请求来消耗攻击目标主机的 CPU 和内存资源,由于攻击目标主机资源的快速消耗,就会使得合法的用户无法得到所请求的服务。
常见的网络层 DDoS 攻击方式有:
1.SYN-Flood 攻击
SYN-Flood 攻击是指攻击者利用 TCP 三次握手的原理,向目标主机发送大量 SYN 标志的 TCP 请求,当服务器接收的这些请求数据包的时候,会为这些连接请求建立会话,并且把这些并未建立完整连接的会话排到缓冲区队列中。攻击者可以发送源地址为假的分组,等待服务器发送分组,而由于源地址为假,因为系统发送回来的分组就等不到源地址主机的响应,因此,服务器的带宽和资源将在维持大量的这类半连接上被消耗掉,一旦请求超过了服务器的缓冲区容量,此时服务器就不能再接收新的连接请求了。此时其他合法的用户就无法建立与服务器的连接。
2.ACK-Flood 攻击
ACK Flood 攻击。在 TCP 连接建立之后,所有的数据传输 TCP 报文都是带有 ACK 标志位的,主机在接收到一个带有 ACK 标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在,如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应 RST 包告诉对方此端口不存在。通常状态检测防火墙所做的事情与此类似,只不过防火墙只拦截非法的数据包,而不主动回应。
对比主机以及防火墙在接收到 ACK 报文和 SYN 报文时所做动作的复杂程度,显然 ACK 报文带来的负载要小得多。所以在实际环境中,只有当攻击程序每秒钟发送 ACK 报文的速率达到一定的程度,才能使主机和防火墙的负载有大的变化。当发包速率很大的时候,主机操作系统将耗费大量的精力接收报文、判断状态,同时要主动回应 RST 报文,正常的数据包就可能无法得到及时的处理。这时候客户端(以 IE 为例)的表现就是访问页面反应很慢,丢包率较高。但是状态检测的防火墙通过判断 ACK 报文的状态是否合法,借助其强大的硬件能力可以较为有效的过滤攻击报文。当然如果攻击流量非常大(特别是千兆线路上,我们曾经观察到 200~300Mbps 左右的 ACK Flood),由于需要维护很大的连接状态表同时要检查数量巨大的 ACK 报文的状态,防火墙也会不堪重负导致全网瘫痪。
3.UDP-Flood 攻击
UDP 在 Internet 中的应用是比较广泛的,尤其在一类实时性要求较高,而对数据包传输的完整性要求不高的应用来说,这其中以视频和即时通信最为典型,这些服务首先要求保证的不是质量而是实时性。UDP Flood 常发生对 DNS 服务器以及流媒体视频服务器上,UDP 是基于无连接的协议,当攻击目标接收到一个 UDP 数据包时,它会确定目的端口所对应的应用程序。当攻击目标主机发现该应用程序并不存在时,会产生一个目的地址无法连接的 ICMP 数据包发
送给源地址。如果向攻击目标主机的端口发送了足够多的 UDP 数据包的时候,攻击目标主机就会崩溃。常见的 UDP 攻击有 NTP 攻击。
4.ICMP 攻击
ICMP Flood 的攻击原理和 ACK Flood 原理类似,属于流量型的攻击方式,也是利用大的流量给服务器带来较大的负载,影响服务器的正常服务。由于目前很多防火墙直接过滤 ICMP 报文,因此 ICMP Flood 出现的频度较低。
四、应用层 DDoS 攻击原理及方式
传统上的攻击 DDoS 是指发生在网络层的 DDoS 攻击,如本章上文所指的 DDoS 攻击一般就是指代的网络层 DDoS 攻击。而应用层 DDoS 攻击是在网络层 DDoS 攻击的基础上发展起来的,应用层 DDoS 攻击是一种新型的攻击方式,这类攻击方式的本质还是基于洪水式的攻击方式,即攻击者通过代理服务器或者僵尸网络向攻击目标发送大量的高频合法请求,以达到消耗攻击目标带宽的目的,然而,应用层 DDoS 攻击更为主要的目的是要能够消耗主机资源。
常见的应用层 DDoS 攻击有:
1.DNS-Flood 攻击
DNS-Flood 就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于 ACL 的过滤,必须提高数据包的随机性。常用的做法是 UDP 层随机伪造源 IP 地址、随机伪造源端口等参数。在 DNS 协议层,随机伪造查询 ID 以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中 DNS 缓存的可能性,尽可能多地消耗 DNS 服务器的 CPU 资源。
2.慢连接攻击
在 POST 提交方式中,允许在 HTTP 的头中声明 content-length,也就是 POST 内容的长度。在提交了头以后,将后面的 body 部分卡住不发送,这时服务器在接受了 POST 长度以后,就会等待客户端发送 POST 的内容,攻击者保持连接并且以 10S-100S 一个字节的速度去发送,就达到了消耗资源的效果,因此不断地增加这样的链接,就会使得服务器的资源被消耗,最后可能宕机。
3.CC 攻击
CC 攻击是基于页面攻击的,主要攻击目标是提供网页访问服务的服务器。这些网页往往存在 ASP,JSP,PHP 等脚本程序,并且 CC 攻击会重点调用 Mssql、Mysql、Oracle 等数据库,并对这些数据库发起操作。对于网页的访问来说,如果只是查看静态的网页内容,这种服务是不会占用太多服务器的资源的,然而当需要访问涉及到用户与页面之间存在交互的动态网页,这时就需要占用服务器的大量资源了。比如用户在对数据库进行查找,修改时,服务器第一次会把用户所发出的对于数据库的操作返回,进行相应的操作后,第二次再把结果返回给用户,这其中就包括了至少两次的输入输出操作。如果同一时刻有大量的用户发起这样的请求,服务器的性能会很快下降。CC 攻击利用了这个特点,模拟许多用户不间断的对服务器进行访问,而且 CC 攻击往往是攻击服务器上开销比较大的动态页面。这样的攻击方式有很强的隐蔽性,使得系统很难区分是正常的用户操作还是恶意的攻击。CC 攻击和 HTTP GET 攻击的攻击方式差不多,唯一的区别在于 CC 攻击是利用了代理作为攻击的发起点,这一方面使得追查攻击源变得困难。而 HTTP GET 攻击则并没有使用代理的方式。另一方面 CC 攻击还利用了代理服务器的缓存特性,即当客户端断开连接得时候,代理服务器还能保持和服务器的一段时间的连接,这个特性可以保障 CC 攻击的发起者无需关心由服务器发回的响应,而继续保持对服务器的持续交互。CC 攻击的这种特性更加严重损害了服务器的性能。因此,CC 攻击对服务器性能所造成的损失将更为巨大,也更加难以防范。而当 HTTP GET 连接被断开之后,发起攻击的傀儡机也就不能再继续发送请求数据包了,这种情况下 HTTP GET 攻击就比 CC 攻击显得易于防范,其危害也相应的就显得较易控制。
五、应用层攻击与网络层攻击的差异
应用层 DDoS 攻击和传统的网络层 DDoS 攻击之间存在着较大的差别,很多网络层 DDoS 攻击的特性在应用层攻击中已经不复存在了,这两类攻击的具体差别体现在以下几个方面:
1.两者实现的层次不同
网络层 DDoS 攻击发生在低层,而应用层 DDoS 攻击利用了高层协议实现。网络层 DDoS 攻击的典型攻击方式是:攻击者使用虚假的 IP 地址来控制攻击节点,然后由被控制的攻击节点向目标主机发送大量的攻击数据包,这些数据包包括有 UDP 和 ICMP 等,同时这种攻击方式将会利用 TCP 协议三次握手机制的缺点,使得攻击目标在收到这些不存在的 IP 地址的连接请求之后,为了维护一个开销非常大的半开连接而需要消耗大量的 CPU 和内存资源,最终将导致无法再为用户提供服务。而应用层则 DDoS 则不然,以 Web 服务为例,基于 Web 的应用(如 HTTP 和 HTTPS)通过开放的 TCP 端口为客户提供服务,应用层 DDoS 攻击利用了高层的协议,其攻击得以实现是以正常 TCP 连接和 IP 分组为前提,因此这就不具备传统 DDoS 攻击的行为特征(以 TCP 半开放连接最为显著),而且它无法采用虚假的 IP 地址(利用虚假的 IP 地址将无法建立合法和有效的 TCP 连接)的方法。因为基于网络层的检测系统很难对高层的行为进行判断,所以系统就无法判断经过这些端口的用户请求由正常用户还是攻击者发出的,因此针对高层协议的应用层 DDoS 攻击的请求可以顺利穿越基于底层协议的检测系统。
2.应用层 DDoS 有更多更复杂的形式
以 Web 服务器为例,它可以提供诸如数据库查询、客户端服务端的交互等服务,所以攻击者通过大量傀儡机向攻击目标主机发送请求数据包的攻击方式并不是应用层 DDoS 攻击的主流攻击方式,相反,应用层 DDoS 攻击可以用低速率的请求、少量的攻击节点来实现攻击效果。从这点上来看,应用层的 DDoS 攻击远比网络层 DDoS 攻击来的复杂,它可以实现更多的功能。因此,应用层 DDoS 攻击可以产生更大的破坏力。这种以简单的 HTTP 请求就可以触发服务器执行一系列复杂操作的攻击方式是应用层 DDoS 和网络层 DDoS 攻击的差异之一。
大概了解了 DDOS 攻击后,下面我们就介绍几种安全解决方案,在我们遇到 DDoS 攻击时,可以选择合适自己的解决方案来防护 DDOS。
1、高防 CDN:不仅可以提供缓存加速效果,还可以通过接入的高防节点对攻击流量进行清洗,是集分布式 DDoS 防护、CC 防护、WAF 防护、BOT 行为分析为一体的安全加速解决方案。如果对网站访问加速和防御上都有要求的话,比较适合选用高防 CDN。
2、DDOS 高防 IP:高防 IP 业务上的使用范围是比较广泛,支持端口转发和域名接入,隐藏服务器真实 IP。支持 TCP、HTTP、HTTPS、WebSocket 等协议,能够很好地维持业务中的长连接,适配多种业务场景。
3、游戏盾:针对游戏行业所推出的高度可定制的网络安全解决方案,除了能针对大型 DDoS 攻击(T 级别)进行有效防御外,还能彻底解决游戏行业特有的 TCP 协议的 CC 攻击问题,防护成本更低,效果更好!
目前,DDoS 攻击的形式和规模多种多样,我们可以根据业务实际情况选择合适的安全解决方案。因此,建议与网络安全专家合作,可以根据用户实际情况提供专业的针对性的防护策略和方案,以减少 DDoS 攻击的影响,保障业务的稳定。
评论