首页 / 抵御DDOS攻击的方法

抵御DDOS攻击的方法有效专利 发明

技术内容

技术领域 本发明涉及通信领域,具体而言,涉及一种用来有效抵御DDOS 攻击的方法。 背景技术 DDOS(Distributed Denial of Service,分布式拒绝服务)攻击 是根据DOS(Denial of Service,拒绝服务)攻击进化出来的一种攻 击方法。 DDOS攻击一般被分为三个阶段: 第一阶段是目标确认:黑客一般会入侵因特网上的大量计算机 机,植入病毒,使之成为黑客的傀儡机。当傀儡机数量到达一定范 围后,就成为了黑客攻击的重要工具了。一般称为“僵尸网络”。 第二阶段是准备阶段:黑客会在网络上锁定一个IP地址。这个 被黑客锁定的IP地址可能就是某个企业的Web服务器,DNS (Domain Name Server,域名服务器),或者是某台骨干网路由器的 地址。 第三阶段是攻击阶段:黑客将攻击命令发送给所有在“僵尸网 络”中的计算机,命令这些计算机不断地向攻击目标发送大量的数 据包。使目标设备无法及时处理这些报文,造成设备上的处理进程 一直被这些垃圾信息占据。最后可能导致设备瘫痪,甚至整个网络 的瘫痪。 DDOS攻击主要的攻击种类可以分为两种,一种是基于流的攻 击,一种是基于协议本身漏洞的攻击。 基于流的攻击一般是黑客通过向网络设备发送大量的流,企图 用大量的垃圾信息堵死网络通道。但是随着设备的不断更新,网络 带宽的不断增加,这种基于流的攻击的可能性变得越来越少。 基于协议的攻击是目前黑客攻击的一种主要方法。如果一个系 统在一分钟之内只能处理完成1000个协议报文,但是黑客却向该设 备每秒中发出2000个协议报文或者更多的时候,这时候合法用户的 请求无法得到响应。因为处理该协议报文的消息队列已经被黑客的 攻击报文所占满了,继续攻击甚至可以导致网络设备的瘫痪。例如 TCP全连接攻击就是一种基于协议的攻击,该攻击方法可以侵占大 量的消息队列导致正常用户无法得到正常的连接。例如著名的SYN flood攻击,该攻击以随机源主机地址向目的设备发送TCP-SYN包, 而在收到目的主机的SYN ACK后并不做出回应。这样,目的设备 就需要为这些伪造的源主机建立大量的消息队列,而且在超时之前 会一直维护这些没有收到ACK回复的队列,因此该目的设备便无 法正常处理正常用户发出的请求。 在实现本发明过程中,发明人发现现有技术的通信系统在受到 基于协议的DDOS攻击时,性能将严重下降,甚至可能导致瘫痪。 发明内容 本发明旨在提供一种抵御DDOS攻击的方法,以解决上述协议 型DDOS攻击给通信系统带来重大损失的问题。 在本发明的实施例中,提供了一种抵御DDOS攻击的方法,包 括以下步骤:初始节点判断受到DDOS攻击及其攻击类型;初始节 点对其每个处于活动状态的端口设置攻击类型及其阈值;初始节点 检测防御DDOS攻击的程度;初始节点向检测认为受到DDOS攻击 的端口所连接的节点通知受到DDOS攻击的端口的攻击类型、阈值 和初始节点的地址。 优选的,初始节点判断受到DDOS攻击及其攻击类型具体包括: 初始节点检测到在预定时间内,其特定协议消息队列中的队列个数 一直为其处理能力极限值;初始节点确定其受到DDOS攻击,攻击 类型是特定协议。 优选的,初始节点对其每个处于活动状态的端口设置攻击类型 及其阈值具体包括:初始节点根据自己处理攻击类型所指示的特定 协议的消息队列的能力,设置初始节点的设备阈值;初始节点根据 设备阈值以及其每个处于活动状态的端口的优先级,带宽,和或人 工配制情况,设置每个处于活动状态的端口的阈值。 优选的,初始节点检测防御DDOS攻击的程度具体包括:初始 节点判断DDOS攻击是否降低超过预定程度;如果是,则认为被设 置阈值的端口中丢包率超过预定值的端口为可疑攻击端口;如果否, 则认为所有被设置阈值的端口为可疑攻击端口。 优选的,初始节点向检测认为受到DDOS攻击的端口所连接的 节点通知受到DDOS攻击的端口的攻击类型、阈值和初始节点的地 址具体包括:初始节点向可疑攻击端口所连接的节点发送可疑攻击 端口被设置的攻击类型、阈值和初始节点的地址。 优选的,还包括:所连接的节点根据收到的阈值对其每个处于 活动状态的端口设置阈值;所连接的节点检测防御DDOS攻击的程 度;所连接的节点向检测认为受到DDOS攻击的端口所连接的节点 通知受到DDOS攻击的端口的攻击类型、阈值和初始节点的地址。 优选的,所连接的节点根据收到的阈值对其每个处于活动状态 的端口设置阈值具体包括:所连接的节点检测所收到消息中的地址 是否是自己的地址;若是,则放弃所接收的阈值;否则,检测是否 已经接收过所收到的相同攻击类型的地址;若是,则用所接收的阈 值替换以前接收过的对应阈值;否则,将所接收的攻击类型、阈值 和地址作为一条新的信息予以保存。 优选的,所连接的节点根据收到的阈值对其每个处于活动状态 的端口设置阈值还包括:将记录的所有阈值相加得到自己的设备阈 值;所连接的节点根据自己的设备阈值以及其每个处于活动状态的 端口的优先级,带宽,和或人工配制情况,设置每个处于活动状态 的端口的阈值。 优选的,所连接的节点检测防御DDOS攻击的程度具体包括: 所连接的节点判断DDOS攻击是否降低超过预定程度;如果是,则 认为被设置阈值的端口中丢包率超过预定值的端口为可疑攻击端 口;如果否,则认为所有被设置阈值的端口为可疑攻击端口。 优选的,所连接的节点向检测认为受到DDOS攻击的端口所连 接的节点通知受到DDOS攻击的端口的攻击类型、阈值和初始节点 的地址具体包括:所连接的节点向可疑攻击端口所连接的节点发送 可疑攻击端口被设置的攻击类型、阈值和初始节点的地址。 上述实施例的抵御DDOS攻击的方法因为对端口的通信实施阈 值监控,进行危害最小化设计,所以克服了协议型DDOS攻击给通 信系统带来重大损失的问题,能够显著减轻协议型DDOS攻击给通 信系统带来的损失。 附图说明 此处所说明的附图用来提供对本发明的进一步理解,构成本申 请的一部分,本发明的示意性实施例及其说明用于解释本发明,并 不构成对本发明的不当限定。在附图中: 图1示出了根据本发明实施例的抵御DDOS攻击的方法流程 图; 图2示出了根据本发明优选实施例的防御DDOS攻击流程图; 图3示出了根据本发明优选实施例的网络场景。 具体实施方式 下面将参考附图并结合实施例,来详细说明本发明。 图1示出了根据本发明实施例的抵御DDOS攻击的方法流程 图,包括以下步骤: 步骤S10,初始节点判断受到DDOS攻击及其攻击类型; 步骤S20,初始节点对其每个处于活动状态的端口设置攻击类 型及其阈值; 步骤S30,初始节点检测防御DDOS攻击的程度; 步骤S40,初始节点向检测认为受到DDOS攻击的端口所连接 的节点通知受到DDOS攻击的端口的攻击类型,阈值和初始节点(即 被攻击设备)的地址; 该方法因为对端口的通信实施阈值监控,进行危害最小化设计, 并且还可以将防御下发,所以克服了协议型DDOS攻击给通信系统 带来重大损失的问题,能够显著减轻协议型DDOS攻击给通信系统 带来的损失。 优选的,步骤S10具体包括:初始节点检测到在预定时间内, 其特定协议消息队列中的队列个数一直为其处理能力极限值;初始 节点确定其受到DDOS攻击,攻击类型是特定协议。 优选的,步骤S20具体包括:初始节点根据自己处理攻击类型 所指示的特定协议的消息队列的能力,设置初始节点的设备针对该 种类型协议的阈值;初始节点根据设备阈值以及其每个处于活动状 态的端口的优先级,带宽,和或人工配制情况,设置每个处于活动 状态的端口的针对该种类型协议的阈值。 优选的,步骤S30具体包括:初始节点判断DDOS攻击是否降 低超过预定程度;如果是,则认为被设置阈值的端口中丢包率超过 预定值的端口为可疑攻击端口;如果否,则认为所有被设置阈值的 端口为可疑攻击端口。 优选的,步骤S40具体包括:初始节点向可疑攻击端口所连接 的节点发送可疑攻击端口被设置的阈值和被攻击设备的地址。 优选的,还包括:所连接的节点根据收到的阈值对其每个处于 活动状态的端口设置阈值;所连接的节点检测防御DDOS攻击的程 度;所连接的节点向检测认为受到DDOS攻击的端口所连接的节点 通知受到DDOS攻击的端口的攻击类型、阈值和地址。这实现了防 御在整个网络中的散发。 优选的,所连接的节点根据收到的阈值对其每个处于活动状态 的端口设置阈值具体包括:所连接的节点检测所收到的地址是否是 自己的地址;若是,则放弃所接收的阈值;否则,检测是否已经接 收过所收到的地址;若是,则用所接收的阈值替换以前接收过的对 应阈值;否则,将所接收的攻击类型、阈值和地址作为一条新的信 息予以保存。 优选的,所连接的节点根据收到的阈值对其每个处于活动状态 的端口设置阈值还包括:将记录的所有阈值相加得到自己的设备阈 值;所连接的节点根据自己的设备阈值以及其每个处于活动状态的 端口的优先级,带宽,和或人工配制情况,设置每个处于活动状态 的端口的阈值。 优选的,所连接的节点检测防御DDOS攻击的程度具体包括: 所连接的节点判断DDOS攻击是否降低超过预定程度;如果是,则 认为被设置阈值的端口中丢包率超过预定值的端口为可疑攻击端 口;如果否,则认为所有被设置阈值的端口为可疑攻击端口。 优选的,所连接的节点向检测认为受到DDOS攻击的端口所连 接的节点通知受到DDOS攻击的端口的阈值具体包括:所连接的节 点向可疑攻击端口所连接的节点发送可疑攻击端口被设置的阈值。 优选的,网络设备支持扩展ACL和QoS。例如,可以如下设置: access-list 100 permit tcp any 1.1.1.1 0.0.0.0 class-map match-all DDOS-tcp-class match access-group 100 policy-map DDOS-tcp-QoS-class class DDOS-tcp-class police 8000 10000 10000 conform-action transmit exceed-action drop 其中access-list 100 permit tcp any 1.1.1.1 0.0.0.0中1.1.1.1表 示被攻击设备的IP地址。后面用DOS-IP代替。access-list 100 permit tcp any DOS-IP 0.0.0.0 引入DDOS-QoS数据库,包含端口,被攻击设备IP,QoS策略, 攻击协议号,优先级,手工加权值等信息。其中X为判断的攻击协 议类型,如TCP,UDP等。 判断攻击类型的具体方法如下: 设置进程队列告警,当某一种进程长时间处于满队列状态,那 么就告警认为该进程处理的协议可能被攻击了。 DDOS-QoS-X是设备对于DDOS攻击的一种策略,该值的初始 值为被攻击设备生成,数值为被攻击设备的协议队列极限值。当设 备收到一个携带这P-DDOS-QoS-X的值后,便会把该值存入 DDOS-QoS数据库。 P-DDOS-QoS-X:为基于端口的DDOS-QoS-X。计算公式为: 当该端口被设置为手动加权后: P_DDOS_QoS_X=X*N%(N>=1)(N为端口的手工加权值, X为DDOS-QoS-X的值) 当该端口没有被设置为手动加权: P_DDOS_QoS_X=(100-N)*X/(P_number-P_N_number) (N为端口的手工加权值,P_number为总的活动端口数, P_N_number为总的加权端口数,X为DDOS-QoS-X的值) 设备会从端口向对端设备发送带有P_DDOS_QoS_X信息参数 的数据报文。 所介绍的DDOS_QoS_X所需包含的参数除了QoS参数值还包 括被攻击设备IP(DOS-IP),被攻攻击的协议类型等。为了方便这 些信息在该发明中一起被称为DDOS_QoS_X信息。 具体的报文传递实现可以利用UDP,TCP等协议进行,传递的 参数有:1,被攻击设备的IP地址;(让所有接受到该信息的设备都 知道是哪一台设备被攻击了,以便使这些设备知道从现在开始,再 往该IP地址转发报文的时候就应该注意对这些报文进行策略限制 了。) 2,攻击类型;(让设备知道将对哪些类型的协议进行策略限制) 3,P_DDOS_QoS_X的值;(让设备知道是一个什么样的QoS 策略) 根据以上程序设计,图2示出了根据本发明优选实施例的防御 DDOS攻击流程图,包括以下步骤: 步骤1,判断设备受到DDOS攻击; 步骤2,判断攻击协议类型; 步骤3,将该协议极限值设置为存入DDOS-QoS数据库; 步骤4,计算每一个处于活动状态的端口应有的 P-DDOS-QoS-X值;如果该DDOS-Qos-X值是通过其他设备下发的, 则接受该信息的端口不参加计算,也不会被认为是可疑攻击端口。 步骤5,将P-DDOS-QoS-X赋值给相应端口; 步骤6,检测防御攻击程度; 步骤7,判断是否攻击程度明显降低; 步骤8,若受攻击程度明显降低,则认为下发P-DDOS-QoS-X 后,丢包率明显较高的端口为可疑攻击端口; 步骤9,若攻击程度没有明显降低,则认为所有端口都为可疑 攻击端口; 步骤10,将可疑攻击端口上的P-DDOS-QoS-X发送到对端设 备上去; 步骤11,一个端口收到了一个P-DDOS-QoS-X信息; 步骤12,检测该信息包含的被攻击设备的IP地址是否是自己 设备的IP地址; 步骤13,若是,则不处理; 步骤14,然后判断是否数据库中已经存在一个从该端口接受到 的P-DDOS-QoS-X的信息; 步骤15,如果有的话,则用新的信息覆盖之前旧的信息; 步骤16,如果没有的话,则在数据库中添加一条新的 P-DDOS-QOS-X信息; 步骤17,如果数据库中存在从其他的端口收到的 P-DDOS-QoS-X信息,则将所有的P-DDOS-QoS-X的值相加后再赋 值给DDOS-QoS-X; 步骤18,当接收设备将接收到的P-DDOS-QoS-X成功计算并 保存到数据库后,接受设备将会发送一个应答确认消息给发送设备; 当一台设备收到了一个关于P-DDOS-QoS-X的应答确认消息 的时候,将会在DDOS-QoS数据库把发送该消息的设备进行标记; 然后重复步骤4-10。 利用以上的步骤,便可以自动计算并下发QoS到底层的网络设 备上去。对被攻击设备进行策略控制,将所有以被攻击设备IP为目 的地址的该类型的网络报文进行策略控制。 如图2的网络环境中,设备R1遭到了DDOS攻击,例如 TCP-DDOS攻击,现在假设R1每秒最多可以处理的TCP连接的个 数是X,那个我们设R1-DDOS-TCP=X,意思为,当设备R1在一 个计时器时间内,TCP消息队列中的队列个数一直为X的时候,我 们就认为设备很有可能已经遭遇到DDOS攻击的了。 设备R1(即被攻击设备)将在其所有处于连接状态的通讯接口 上启动DDOS-QoS-TCP,用来对发到该被攻击设备上的TCP进行 限制,保证所有DDOS-QoS-TCP的总和为X。具体会根据各个接口 的优先级,带宽,和人工配制进行比例分配。假设R1上面的port 1/1, port 1/2,port 1/3这三个端口的带宽相同,优先级相同,但是port 1/3 上人工声明了P-DDOS-QoS-TCP 30,意思是在下发关于TCP的 P-DDOS-QoS的时候,port 1/3端口分配的P-DDOS-QoS-TCP的额 度是0.3X,即X的30%。剩下的port 1/1和port 1/2将平分剩下的 0.7X。 这时候,可能会出现两种情况。第一种情况,在启动 P-DDOS-QoS-TCP后,设备处理的TCP连接明显小于X了。这时 候,将检测所有启动P-DDOS-QoS-TCP的接口上的TCP丢包率。 将存在大量丢包的端口设为DDOS攻击端口。第二种情况,在启动 P-DDOS-QoS-TCP后,设备处理的TCP的消息队列与之前相比没有 明显变化。此时设备便会认为所有端口都是DDOS攻击端口。 设备R1从所有的DDOS可疑攻击端口上,把该端口的 DDOS-QoS-TCP发送给与其端口相连接的网络设备。假设R1的port 1/1和port 1/2为可疑端口。则R1会分别从port 1/1发布该接口 DDOS-QoS-TCP的值P_DDOS_QoS_X=(100-N)*X/(P_number- P_N_number)给R2,从port 1/2发布该接口DDOS-QoS-TCP的值 P_DDOS_QoS_X给R3。 当设备R2收到了R1上port 1/1端口发过来的DDOS-QoS-TCP 值的时候,便知道了R1需要R2限制通过R2转发到目的地址是R1 的TCP连接的每秒个数。个数为P_DDOS_QoS_X。 设备R2在将收到的P_DDOS_QoS_X的值存入数据库的时候便 会发布一个应答确认信息给设备R1。告知设备R1自己已经成功初 始化数据了。R1设备也将在数据库中对R2设备进行标记。 然后依照之前的方法对该设备R2上相关的接口进行 DDOS-QoS-TCP的下发。如此循环下去,根据TCP报文的丢失情 况,便很容易确定黑客攻击的路径,并且有效、快速的抑制攻击, 将受影响的程度降到最低。使绝大部分正常用户受到攻击的影响。 当一台设备从一个端口收到了一个DDOS-QoS-TCP下发命令 的时候,将不会把这个端口加入到计算P-DDOS-QoS-TCP的端口中 去,并且不会将通过此计算得到的P-DDOS-Qos-TCP从该端口下发。 当一台设备从另一个端口收到了另一个DDOS-QoS-TCP下发 命令的时候,会将该值与原有的值进行相加,并再次从没有收到过 DDOS-QoS-TCP的端口下发。 重复上面的步骤。这样便可以自动并有效地控制住DDOS的攻 击端口,而且对正常使用的,且未被攻击的端口影响很小。 显然,本领域的技术人员应该明白,上述的本发明的各模块或 各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算 装置上,或者分布在多个计算装置所组成的网络上,可选地,它们 可以用计算装置可执行的程序代码来实现,从而,可以将它们存储 在存储装置中由计算装置来执行,或者将它们分别制作成各个集成 电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模 块来实现。这样,本发明不限制于任何特定的硬件和软件结合。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明, 对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在 本发明的精神和原则之内,所作的任何修改、等同替换、改进等, 均应包含在本发明的保护范围之内。