DDoS攻击测试方法、装置和系统的制作方法

文档序号:7928130阅读:254来源:国知局

专利名称::DDoS攻击测试方法、装置和系统的制作方法
技术领域
:本发明涉及网络安全技术,特别是涉及一种分布式拒绝服务(DistributedDenial-of-Service,简称DDoS)攻击测试方法、装置和系统。
背景技术
:分布式拒绝服务(DistributedDenial-of-service,简称DDoS)攻击一直是大型网站面临的主要安全威胁。为了提高大型网站防御DDoS攻击的性能,针对DDos攻击的防护产品(或安全解决方案)快速涌现出来。由于DDos攻击具有普通拒绝服务(DenyofService,简称DoS)攻击不具备的一些特点,例如攻击源IP地址的分散性、TCP/IP参数的多样性等,以及真实环境存在丢包和时延等原因,使得准确评估防护产品的实际防护效能和防护极限性能,变成了一个难点。要准确评估防护产品的实际防护效能和防护极限性能,需要提供尽可能真实的DDoS攻击环境。DDoS攻击除了传统意义上的协议层面的DDoS攻击,例如SYN洪水(SYN-Flood)攻击、ICMP洪水(ICMP-Flood)攻击等,近年来又出现了各种基于应用层的DDoS攻击方式(applicationlevelfloods),例如连接耗尽攻击(connection-flood)、慢连接攻击等等。现有的专用网络测试产品虽然可用来进行DDoS攻击测试,但是这些产品基于专用的软件和硬件平台,产品造价高,可定制性差,培训周期长,不适合对小产品线进行抽样测试。
发明内容本发明要解决的技术问题是提供一种DDoS攻击测试方法、装置和系统,用于降低DDoS攻击测试的成本,提高DDoS攻击测试的灵活性。本发明提供了一种DDoS攻击测试方法,包括修改Linux内核的网络子系统和内存管理子系统;对所述网络子系统的修改包括去除Linux内核的网络子系统中流量控制模块包含的自旋锁;根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器允许定制的数据包字段;对所述内存管理子系统的修改包括将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存;调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送的响应数据包;或基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或基于修改后的Linux内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。5本发明还提供了一种DDoS攻击测试装置,包括Li皿x内核,用于提供修改后内核的网络子系统应用编程接口和内存管理子系统应用编程接口;对所述网络子系统的修改包括去除Linux内核的网络子系统中流量控制模块包含的自旋锁;根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器允许定制的数据包字段;对所述内存管理子系统的修改包括将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存;数据包生成模块,用于调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;数据包反射模块,用于在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送的响应数据包;或基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或基于修改后的Li皿x内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。本发明又提供了一种DDoS攻击测试系统,包括二层汇聚设备和待测试集群,还包括以上任一所述的DDoS攻击测试装置,所述DDoS攻击测试装置和所述待测试集群交互的数据包,通过所述二层汇聚设备进行过滤和转发。本发明提供的DDoS攻击测试方法、装置和系统,可基于修改后的Li皿x内核实现对待测试集群进行DDoS攻击仿真模拟,同时还可实现链路的时延和丢包模拟,使得模拟的DDoS攻击更接近真实网络环境中的DDoS攻击,将本发明形成待测试集群的DDoS攻击的仿真攻击源,有利于提高待测试集群防护DDoS攻击效能和极限性能测试的准确性;此外,本发明DDoS攻击测试方法和装置可运行在支持Linux内核的硬件中,因此,不需要为DDoS攻击测试设计专用的硬件,明显降低了DDoS攻击测试产品的成本,有利于提高DDoS测试的灵活性,本发明可满足产品线,特别是小产品线对协议层/应用层DDoS攻击线上评估、线下测试以及各种网络新技术研究的技术需求。图1为本发明DDoS攻击测试方法第一实施例流程图;图2为本发明DDoS攻击测试方法第二实施例流程图;图3为本发明DDoS攻击测试系统结构示意图一;图4为本发明DDoS攻击测试方法第三实施例流程图;图5为本发明DDoS攻击测试系统结构示意图二;图6为本发明DDoS攻击测试方法第四实施例流程图;图7为本发明DDoS攻击测试系统结构示意图三;图8为本发明DDoS攻击测试装置链路仿真模块结构示意图。具体实施例方式下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。图1为本发明DDoS攻击测试方法第一实施例流程图。如图1所示,本实施例包括步骤11、修改Linux内核的网络子系统(NetworkSubsystem)和内存管理子系统(MemoryManagementSubsystem);对所述网络子系统的修改包括去除Li皿X内核的网络子系统中流量控制模块包含的自旋锁(Qdisc);根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器(pktgen)允许定制的数据包字段;对所述内存管理子系统的修改包括将Li皿X内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存。步骤12、调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;步骤13、在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送的响应数据包;或基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或基于修改后的Linux内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。本实施例对Linux内核中代码或函数的修改,基于修改后的Linux内核向待测试集群发送源地址随机变化的海量数据包。当接收到待测试集群返回的响应数据包时,如果对接收的响应数据包进行丢弃处理,可实现协议层面的DDoS连接耗尽攻击的模拟;如果在接收到响应数据包时,向待测试集群发送一个完整请求数据包中的部分数据段(即部分请求数据包),可实现应用层面的慢连接(读超时)攻击的模拟;如果在接收到响应数据包时,向待测试集群发送一个完整请求数据包,当在接收到待测试集群发送的请求响应数据包时,丢弃所有的响应数据包,则可实现应用层面慢连接(写超时)攻击的模拟。由于本实施例基于修改后的Li皿x内核,实现了对待测试集群进行DDoS攻击中协议层连接耗尽攻击的模拟、应用层连接耗尽攻击的模拟、应用层慢连接攻击的模拟等多种DDoS攻击类型的仿真模拟,可作为待测试集群的DDoS攻击的仿真攻击源,有利于待测试集群防护DDoS攻击效能和极限性能测试的准确性;此外,本实施例DDoS攻击测试方法可运行在支持Li皿x内核的硬件中,因此,不需要为DDoS攻击测试设计专用的硬件,明显降低了DDoS攻击测试产品的成本,有利于提高DDoS测试的灵活性。图2为本发明DDoS攻击测试方法第二实施例流程图。本实施例以分布式同步_洪水(SYN-FL00D)攻击为例,说明本实施例基于Li皿x内核实现协议层DDoS攻击模拟的技术方案。图3为本发明DDoS攻击测试系统结构示意图一。图2所示实施例可基于的系统结构如图3所示。参图2和图3所示,本发明DDoS攻击测试方法包括步骤21、修改Li皿x内核All的内核网络子系统和内存管理子系统。步骤21可包括步骤211、步骤212和步骤213。步骤211、去除Li皿x内核的网络子系统中流量控制模块包含的自旋锁(Qdisc)。自旋锁是专为防止多处理器并发而引入的一种锁,它在内核中大量应用于中断处理等部分。自旋锁最多只能被一个内核任务持有,如果一个内核任务试图请求一个已被争用或持有的自旋锁,那么这个任务就会一直进行忙循环,直至等待自旋锁重新可用;如果自旋锁未被争用,请求它的内核任务便能立刻得到它并且继续进行。步骤21去除Li皿x内核代码中的自旋锁(Qdisc)后实现无锁发包,多处理器上可并发运行内核任务、竞争共享资源,从而提升Li皿x内核的数据包处理能力。步骤212、修改内存管理子系统提供的数据包内存分配接口函数dev—alloc—skb和内存释放接口kfree_skb函数,使之在每CPU私有内存池中分配和释放内存。现有技术中,dev—alloc—skb在全局内存池中分配为数据包分配内存;kfree_skb向全局内存池中释放内存。在多CPU或者单CPU多核/多线程的情况下,需要争抢全局内存池的保护自旋锁。如果修改上述两个接口,使之在每CPU私有内存池中分配和释放内存,则可以避免对内存池的保护自旋锁的争用,从而可以进一步提高数据包处理速度,即将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存。如果在某些无内部互锁流水级的微处理器(MicroprocessorwithoutlnterlockedPipedStages,简称MIPS)硬件平台上(例如RMI公司的XLR7系列处理器),可以利用硬件平台提供的硬件内存管理机制实现这一目的,例如将deV_all0C_skb和kfree_skb函数修改为调用XLR-732处理器提供的快速消息总线(FastMessageRing,简称FMR)接口,从而实现通过XLR-732处理器自带的硬件内存管理机制实现数据包内存的分配和释放。步骤213、修改Li皿x内核网络子系统中的内核发包器(pktgen),扩展内核发包器(pktgen)允许定制的数据包字段。现有技术中Li皿x内核发包器(pktgen)仅能发送有限的几种类型的数据包,可定制性不强。本步骤需对内核发包器(pktgen)允许定制的数据包字段进行扩展,包括以太(Ethernet)帧头中包含的各个字段、IP数据头中包含的各个字段和TCP数据头中包含的字段、数据载荷内容和长度;内核发包器Pktgen中函数pktgen_if_Write根据上述数据结构各字段的值进行相应设置后,生成数据包。由于扩展后skb内核数据结构各字段可以通过配置自由定制组合,发送数据包包含的消息载荷长度/内容也可以通过配置实现自由定制。此步骤也可以通过在内核数据包处理框架中直接添加数据包发送线程,代替内核发包器(pktgen)实现。步骤22、数据包生成模块A12调用修改后的Li皿x内核发包器(pktgen),生成海量数据包,根据预先设定的DDoS攻击模拟类型,设置数据包的属性。假设需要模拟的DDoS攻击模拟类型为同步_洪水(SYN-FL00D)攻击,待测试服务集群为Web服务集群;步骤22包括步骤221、设置生成的数据包的目的IP地址为Web服务集群提供的服务IP,在预先设定的范围内随机选取一个IP地址作为源IP地址。如此设置后,可形成源IP地址的海量数据包,同时指向同一目的地址。步骤222、将生成的数据包的目的MAC地址设置为Web服务集群的接口MAC,将数据包的源MAC地址设置为一个不存在的MAC地址(即伪MAC地址)。如此设置后,当Web服务集群返回响应数据包时,由于数据包的源MAC地址为伪MAC地址,使得Web服务集群返回的响应数据包无法送达而被丢弃。步骤223、将数据包协议类型设置为TCP协议,并在TCP选项的标志位子字段中设置同步(SYN)标志位。为模拟数据包生成模块生成的数据包与Li皿x操作系统主机或Windows操作系统主机发送的数据包更相似,可将TCP协议类型数据包的信息生存时间(TTL)字段中设置在[60S-62S]或[120S-125S]随机变化。为了使得数据包生成模块生成的数据包更接近于真实网络环境中的数据包,还可TCP选项设置为支持最大传输数据分段(MaximumSegment,简称MSSSize)和时间标记(timestamp)。步骤23、数据包生成模块A12经由二层汇聚设备A7,将生成的数据包发送给待测试的Web服务集群A8。由于通过步骤221和步骤222的设置,可形成源IP地址的海量数据包,同时指向同一目的地址,即Web服务集群,因此,可数据包生成模块可向Web服务集群发送源地址不同的海量数据包。步骤24、Web服务集群A8在接收到数据包(SYN数据包)时,返回响应数据包(SYN/ACK数据包)。步骤25、二层汇聚设备A7丢弃Web服务集群A8返回的数据包(SYN/ACK数据包)。由于通过步骤223的设置,当Web服务集群返回响应数据包时,由于数据包的源MAC地址为伪MAC地址,使得Web服务集群返回的响应数据包无法送达,因而被二层汇聚设备丢弃。本实施例数据包生成模块向Web服务集群不断发送海量的SYN数据包,而Web服务集群返回的SYN/ACK响应数据包被二层汇聚设备所丢弃,因而可通过协议层建立大量的连接消耗Web服务集群的大量资源,从而为待测试的Web服务集群提供仿真度高的真实网络环境中的DDoS协议层模拟攻击,有利于提高Web服务集群安全防护性能和极限性能的测试准确性。图4为本发明DDoS攻击测试方法第三实施例流程图。本实施例以建立TCP/IP连接建立过程为例,说明本实施例基于Linux内核实现应用层DDoS攻击模拟的技术方案。图5为本发明DDoS攻击测试系统结构示意图二。图4所示实施例可基于的系统结构如图5所示。参图4和图5所示,本发明DDoS攻击测试方法包括步骤41、修改Li皿x内核All的内核网络子系统、内存管理子系统和数据包过滤框架(Netfilter)。本步骤关于修改Linux内核All的内核网络子系统和内存管理子系统的详细描述可参见图2所示实施例中步骤21的记载,不再赘述。本步骤关于对Linux内核中数据包过滤框架的修改包括在数据包过滤框架中PRE_R0UTING点,添加一个用于在接收到数据包后直接反转数据包源/目的地址的Hook函数(以下称为PRE_R0UTING_Hook点)。具体的,在Li皿x内核All数据包过滤框架的PRE_ROUTING点添加了一个新的钩子(Hook)函数,此函数在收到了SYN/ACK标志、源MAC是数据包反射模块A13所在主机的MAC地址的数据包后,直接反转数据包源/目的IP地址和源且在此数据包上设置ACK标志位和其他必要字段(例如ACK序列号为SYN/ACK数据包序列号加1),通过数据包反射模块A13发送出去。此步骤可以避免反射模块A3重复调用内核的数据包分配/释放函数,可以进一步提高数据包反射模块A13的数据包处理能力。步骤42、数据包生成模块A12调用修改后的Li皿x内核发包器(pktgen),生成海量数据包。区别于图2所示实施例步骤223中数据包源MAC地址的设置,本实施例将数据包的源MAC地址设置为数据包反射模块A13所在主机网卡的MAC地址;并且设置被测试集群的默认网关IP地址为数据包反射模块A13所在主机网卡的IP地址。如此设置后,数据包反射模块A13将被用于接收Web服务集群A8经由二层汇聚设备发送的出口流量,并发送应答响应数据包。步骤43、数据包生成模块A12经由二层汇聚设备A7,将生成的数据包发送给待测试的Web服务集群A8。步骤44、Web服务集群A8在接收到SYN数据包时,返回数据包SYN/ACK响应数据包。步骤45、二层汇聚设备A7将Web服务集群A8返回的SYN/ACK数据包发送给数据包反射模块A13。步骤46、数据包反射模块A13根据如步骤41的描述构造ACK数据包,直接调用网卡的包发送函数harcLstart—xmit,经由二层汇聚设备向Web服务集群发送复用的ACK数据包。步骤47、Web服务集群接收来自数据包反射模块A13的ACK数据包,等待数据包反射模块A13的请求数据包(GET请求数据包)。此时从Web服务器的角度看,Web服务集群与数据包反射模块A13之间的TCP连接已经建立完成,Web服务集群将分配系统资源等待数据包反射模块A13进一步发送的请求数据包。步骤48、数据包反射模块A13根据预先设定的DDoS攻击模拟类型,经由二层汇聚设备向Web服务集群执行不同的反馈。步骤481-步骤483分别是实现三种不同应用层DDoS攻击模拟类型的具体实现方式。步骤481、当预先设定的DDoS攻击模拟类型为应用层DDoS耗尽攻击模拟时,数据包反射模块A13不向Web服务集群发送GET请求数据包。上述步骤结束后,由于数据包反射模块A13与Web服务集群建立了海量的连接,Web服务集群分别为这些连接都分配了资源,本步骤试图通过建立大量的连接,造成Web服务集群资源耗尽而停止响应,从而可实现应用层分布式连接耗尽攻击的模拟。步骤482、当预先设定的DDoS攻击模拟类型为应用层DDoS慢连接读超时攻击模拟时,数据包反射模块A13调用Li皿x内核发包函数,发送部分GET请求数据包,并丢弃来自Web服务集群的应答数据包。数据包反射模块A13调用网卡发送函数hard_Start_Xmit,将请求(GET)数据包划分成多个数据段,以预设的时间间隔依次向Web服务集群发送一个完整请求数据包中的10部分数据段,即发送部分请求(GET)数据包。部分请求数据包发送的时间间隔可根据实际运行Linux内核的操作系统和硬件进行设置,如设置该时间间隔为100us。本步骤试图让Web服务集群大量进程处于等待用户请求的状态(读状态),从而可实现应用层DDoS慢连接读超时攻击模拟。DDoS慢连接读超时攻击时Web应用中的常用攻击,例如apache-httpd对只建立连接不发送请求的攻击者可以使用超时断开连接的机制防止服务器过载,而对建立连接但只发送部分请求的攻击者,没有适当的超时机制进行处理,所以此种攻击在基于即ache-httpd的Web应用中很常见。本实施例可为需要进行DDoS慢连接读超时攻击测试的Web服务集群,提供仿真的DDoS攻击源,有利于提高Web服务集群安全防护性能和极限性能的测试准确性。步骤483、当预先设定的DDoS攻击模拟类型为应用层DDoS慢连接写超时攻击模拟时,数据包反射模块A13调用Li皿x内核发包函数,发送完整的GET请求数据包,并丢弃Web服务集群随后发送的应答数据包。对于应答数据很长的HTTP请求(例如视频流),由于应答数据需要分多个数据包发送,如果Web服务集群接收不到数据包反射模块根据应答数据发送的确认数据包(ACK),将会造成Web服务器端写阻塞。本实施例可为需要进行DDoS慢连接读超时攻击测试的Web服务集群,提供仿真的DDoS攻击源,有利于提高Web服务集群安全防护性能和极限性能的测试准确性。除了上述的3种攻击,对于通过縮小TCP接收窗口等类型的DDoS攻击也可以实现模拟。图6为本发明DDoS攻击测试方法第四实施例流程图。本实施例在上述DDoS攻击测试方法第一实施例至第三实施例技术方案的基础上,还可包括基于修改后的Linux内核,对与待测试集群交互的数据包,进行发包时延控制或选择性丢包控制,即对数据包生成模块和数据包反射模块与待测试集群交互的数据包,进行发包时延控制或选择性丢包控制,以实现真实链路的时延或丢包模拟。图7为本发明DDoS攻击测试系统结构示意图三。图6所示实施例可基于的系统结构如图7所示。参图6和图7所示,本发明DDoS攻击测试方法包括步骤61、丢弃满足预先设置的包过滤规则的下行数据包。步骤61可具体包括如下步骤步骤611、根据预先设置的包过滤规则,并利用修改后数据包过滤框架,生成整数格栅。步骤612、为每个数据包分配预设数值范围内的一个随机数,作为数据包的编号,根据数据包的编号和数据包大小信息,计算数据包对应的整数格栅的位置信息。步骤613、根据步骤612计算获得的位置信息对应的整数格栅的控制信息,选择丢弃或保留该数据包。举例说明假设下行数据包的大小在1字节到500字节之间。表1为真实网络环境中数据包大小和丢包率的关系,其中,丢包率的概率分布符合正态分布。表1为数据包大小和丢包率的关系11<table>tableseeoriginaldocumentpage12</column></row><table>现在需要模拟根据数据包大小的正态分布丢包。假设整数格栅为10行X10000列的二维数组,对于长度为n,编号为m的数据包,计算数据包对应的整数格栅的位置信息,即整数格栅下标(nmod10,mmod10000);n和m为大于0的整数。如果格栅下标对应位置的控制信息为"0",则保留数据包;如果格栅下标对应位置的控制信息为"1",则丢弃数据包。通过设置第i(l《i《10)行中控制信息为"l"的个数除以10000等于表2中第i列的数值,即可模拟出根据数据包大小的正态分布丢包。根据蒙塔卡洛原理,由于数据包的编号m是均匀分布的,所以数据包对应的整数格栅的位置信息对应控制信息为"0"或"1"的概率,由整数格栅中分布的控制信息"O"和"1"的个数决定,所以,只要保证每一行整数格栅中分布的控制信息"0"和"1"的分布比率符合正态分布要求即可,对"0"和"1"的位置并没有特殊要求。显然格栅越细,对正态分布丢包率的模拟效果越好。在实际应用中可使用固定4096行X4096列的整型二维数组形成格栅。如果格栅每一行中控制信息"O"和"l"的个数比率为恒定值,则退化为均匀分布,该例子为进行选择性丢包控制的特例。使用格栅的优点是,格栅在设置好之后就已经计算完毕,之后仅仅需要为每一个数据包计算一次随机编号,并根据数据包大小和数据包编号进行两次取模操作即可,不用调用复杂函数计算丢包率,因此,在大流量下可以显著地提高数据吞吐率。在上述技术方案的基础上,通过调整预先设置的包过滤规则,可实现根据不同包类型、包内容、包大小分布的概率丢包,通过调整整数格栅的生成算法,可以实现特定的概率分布模型,如均匀分布、泊松分布和正态分布丢包模型,使得采用本实施例模拟的DDoS攻击更具真实性。步骤62、链路模拟器在接收到数据包生成模块和数据包反射模块发送的下行数据包时,设置数据包的延迟发送的时间信息,即设置数据包的时延值。步骤63、链路模拟器利用Linux内核数据包处理框架的P0ST_R0UTINGHook点生成下行数据包发送队列,其中,下行数据包发送队列中的每个数据包的附加字段记录有入队时间戳。该时间戳在链路模拟器在利用数据包处理框架的PRE—ROUTINGHook点生成下行数据包发送队列时,通过PRE_R0UTINGHook点添加在数据包上。入队时间戳包括数据包加入下行数据包发送队列的入队时间信息和步骤61设置的数据包相应的时延值。如假设数据包设置的时延值是t,数据包入队时刻为ti,则入队时间戳为Ti=ti+t。步骤64、链路模拟器利用P0ST_R0UTINGHook点轮询下行数据包发送队列的首数据包的入队时间戳,并将下行数据包发送队列首数据包的入队时间戳与当前时刻进行比较,在首数据包的入队时间戳小于或等于当前时刻时,发送首数据包。这样,经过时延处理后的首数据包发包时间相对于未经过时延处理后的发包时间,延迟预设的时延值t。此外,根据从Web服务集群向数据包生成模块或数据包反射模块发送的上行数据包,建立上行数据包发送队列,以及对上行数据包进行时延控制的方法与步骤62-步骤64相似,不再赘述。本实施例可在模拟DDoS攻击源的基础上,对链路时延的进行模拟,使得DDoS攻击模拟考虑了实际链路时延的因素,DDoS攻击的真实性更加可靠,有利于提高Web服务集群安全防护性能和极限性能的测试准确性。步骤62中为数据包设置的时延值可为真实网络环境中用户实际体验到的时延值。例如在真实的网络环境中,ADSL用户体验到的上,下行链路时延和丢包率是不一样的,假设下行时延10ms,丢包率0.1%,下行时延5ms,丢包率0.2%,则可以通过下列配置模拟这一情形预先设置下行链路数据包的丢包率为恒定值0.1%,时延为10ms;且预先设置上行链路数据包的丢包率为恒定值0.2X,时延为5ms;并采用步骤61-64的技术方案,可实现数据包真实链路的时延和丢包率。由于本实施例基于Li皿x内核,实现了对待测试集群进行DDoS攻击中协议层连接耗尽攻击的模拟、应用层连接耗尽攻击的模拟、应用层慢连接攻击的模拟等多种DDoS攻击类型的仿真模拟,同时还可实现链路的时延和丢包模拟,使得模拟的DDoS攻击更接近真实网络环境中的DDoS攻击,将本发明实施例方法形成待测试集群的DDoS攻击的仿真攻击源,有利于待测试集群防护DDoS攻击效能和极限性能测试的准确性;此外,本实施例DDoS攻击测试方法可运行在支持Linux内核的硬件中,因此,不需要为DDoS攻击测试设计专用的硬件,明显降低了DDoS攻击测试产品的成本,有利于提高DDoS测试的灵活性,本发明DDoS攻击测试方法可满足产品线,特别是小产品线对协议层/应用层DDoS攻击线上评估、线下测试以及各种网络新技术研究的技术需求。在上述技术方案的基础上,本发明还提供了一种DDoS攻击测试装置。DDoS攻击测试装置的结构可参见图3、图5和图7所示。具体的,DDoS攻击测试装置Al可包括Li皿x内核All、数据包生成模块A12和数据包反射模块A13;数据包生成模块A12和数据包反射模块A13分别与Li皿x内核All通信连接。Li皿x内核A11用于提供修改后内核的网络子系统应用编程接口和内存管理子系统应用编程接口;对所述网络子系统的修改包括去除Li皿x内核的网络子系统中流量控制模块包含的自旋锁;根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器允许定制的数据包字段;对所述内存管理子系统的修改包括将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存。数据包生成模块A12用于基于Li皿x内核All,调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;数据包反射模块A13用于在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送的响应数据包;或者,基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或者,基于修改后的Linux内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。在上述技术方案的基础上,Li皿x内核All还用于提供修改后的数据包过滤框架;对所述数据包过滤框架的修改包括在所述数据包过滤框架中PRE_R0UTING点,添加一个用于在接收到数据包后直接反转数据包源/目的地址的钩子(Hook)函数。在上述技术方案的基础上,DDoS攻击测试装置Al还可包括链路仿真模块A14;链路仿真模块A14分别与Li皿x内核Al1、数据包生成模块A12和数据包反射模块A13通信连接。链路仿真模块A14用于基于修改后的Li皿x内核All,对数据包生成模块A12和数据包反射模块A13与待测试集群交互的数据包,进行发包时延控制或选择性丢包控制。图8为本发明DDoS攻击测试装置链路仿真模块结构示意图。如图8所示,在上述技术方案的基础上,链路仿真模块A14可进一步包括包过滤单元A141用于丢弃满足预先设置的包过滤规则的数据包。时延计算单元A142用于为数据包生成模块A12、数据包反射模块A13和待测试集群交互的每个数据包,分别计算数据包延迟发送的延迟时间信息;数据包发送队列生成单元A143用于基于修改后的Li皿x内核All,根据所述数据包生成模块A12、数据包反射模块A13和待测试集群交互的数据包生成上行或下行数据包发送队列,所述数据包发送队列中的每个数据包的附加字段记录有入队时间戳;所述入队时间戳包括数据包加入所述数据包发送队列的入队时间信息和所述数据包相应的延迟时间信息;延迟发送单元A144用于轮询所述数据包发送队列的首数据包的入队时间戳,并将所述首数据包的入队时间戳与当前时刻进行比较,在所述首数据包的入队时间戳小于或等于当前时刻时,发送所述首数据包。具体的,包过滤单元A141可具体包括整数格栅生成子单元A1411用于根据预先设置的包过滤规则,生成整数格栅。对位子单元A1412用于为每个数据包分配预设数值范围内的一个随机数,作为数据包的编号,根据数据包的编号和数据包大小信息,计算所述数据包对应的整数格栅的位置信息。过滤子单元A1413用于根据所述位置信息对应的整数格栅的数值信息,选择丢弃或保留所述数据包。本发明还提供了一种DDoS攻击测试系统。该系统包括DDoS攻击测试装置、二层汇聚设备和待测试集群,其中,DDoS攻击测试装置通过二层汇聚设备与待测试集群通信连接,在本系统运行中,DDoS攻击测试装置和待测试集群交互的数据包,通过所述二层汇聚设备进行过滤和转发。本发明提供的DDoS攻击测试系统的结构示意图如图3、图5和图7所示,系统中包括的DDoS攻击装置可参见本发明DDoS攻击测试装置实施例的记载,系统的工作原理参见本发明DDoS攻击测试方法实施例的具体描述,不再赘述。本领域普通技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。本领域普通技术人员可以理解实施例中的装置中的模块可以按照实施例描述分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。本领域普通技术人员可以理解实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括R0M、RAM、磁碟或者光盘等各种可以存储程序代码的介质。最后应说明的是以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解其依然可以对前述实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。权利要求一种DDoS攻击测试方法,其特征在于,包括修改Linux内核的网络子系统和内存管理子系统;对所述网络子系统的修改包括去除Linux内核的网络子系统中流量控制模块包含的自旋锁;根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器允许定制的数据包字段;对所述内存管理子系统的修改包括将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存;调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送响应数据包;或基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或基于修改后的Linux内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。2.根据权利要求1所述的DDoS攻击测试方法,其特征在于,扩展的所述数据包字段包括以太帧头中包含的字段、IP数据头中包含的字段、TCP数据头中包含的字段、数据载荷内容和长度字段。3.根据权利要求1所述的DDoS攻击测试方法,其特征在于,还包括修改Li皿x内核的数据包过滤框架;对所述数据包过滤框架的修改包括在所述数据包过滤框架中,添加用于在接收到数据包后直接反转数据包源/目的地址的钩子函数。4.根据权利要求3所述的DDoS攻击测试方法,其特征在于,还包括基于修改后的Linux内核,对与待测试集群交互的数据包,进行发包时延控制或选择性丢包控制。5.根据权利要求4所述的DDoS攻击测试方法,其特征在于,所述对与待测试集群交互的数据包,进行发包时延控制,包括计算与所述待测试集群交互的上行或下行数据包的延迟发送的时间信息;根据与所述待测试集群交互的上行或下行数据包,并利用修改后所述数据包过滤框架,生成上行或下行数据包发送队列,所述数据包发送队列中的每个数据包的附加字段记录有入队时间戳;所述入队时间戳包括数据包加入所述数据包发送队列的入队时间信息和所述数据包相应的延迟时间信息;利用修改后所述数据包过滤框架,轮询所述数据包发送队列的首数据包的入队时间戳,并将所述首数据包的入队时间戳与当前时刻进行比较,在所述首数据包的入队时间戳小于或等于当前时刻时,发送所述首数据包。6.根据权利要求4所述的DDoS攻击测试方法,其特征在于,所述对与待测试集群交互的数据包,进行选择性丢包控制,包括丢弃满足预先设置的包过滤规则的数据包。7.根据权利要求5所述的DDoS攻击测试方法,其特征在于,所述丢弃满足预先设置的包过滤规则的数据包,包括根据预先设置的包过滤规则,并利用修改后所述数据包过滤框架,生成整数格栅;为每个数据包分配预设数值范围内的一个随机数,作为数据包的编号,根据数据包的编号和数据包大小信息,计算所述数据包对应的整数格栅的位置信息;根据所述位置信息对应的整数格栅的控制信息,选择丢弃或保留所述数据包。8.—种DDoS攻击测试装置,其特征在于,包括Li皿x内核,用于提供修改后内核的网络子系统应用编程接口和内存管理子系统应用编程接口;对所述网络子系统的修改包括去除Li皿x内核的网络子系统中流量控制模块包含的自旋锁;根据预定义的数据包格式,扩展所述内核网络子系统中内核发包器允许定制的数据包字段;对所述内存管理子系统的修改包括将Linux内核的内存管理子系统提供的数据包内存分配接口函数的属性设置为在每个CPU的私有内存池中分配内存,且将数据包内存释放接口函数的属性设置为在每个CPU的私有内存池中释放内存;数据包生成模块,用于调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的海量数据包;生成的所述数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;数据包反射模块,用于在接收到所述待测试集群返回的响应数据包时,丢弃所述待测试集群发送的响应数据包;或基于修改后的Linux内核,向所述待测试集群发送部分请求数据包;或基于修改后的Li皿x内核,向所述待测试集群发送完整请求数据包,且在接收到所述待测试集群返回的请求响应数据包时,丢弃所述请求响应数据包。9.根据权利要求8所述的DDoS攻击测试装置,其特征在于,所述Linux内核还用于提供修改后的数据包过滤框架;对所述数据包过滤框架的修改包括在所述数据包过滤框架中,添加用于在接收到数据包后直接反转数据包源/目的地址的钩子函数。10.根据权利要求8或9所述的DDoS攻击测试装置,其特征在于,还包括链路仿真模块,用于基于修改后的Linux内核,对数据包生成模块和数据包反射模块与待测试集群交互的数据包,进行发包时延控制或选择性丢包控制。11.根据权利要求lO所述的DDoS攻击测试装置,其特征在于,所述链路仿真模块包括时延计算单元,用于为所述数据包生成模块、数据包反射模块和待测试集群交互的每个数据包,分别计算数据包延迟发送的延迟时间信息;数据包发送队列生成单元,用于基于修改后的Linux内核,根据所述数据包生成模块、数据包反射模块和待测试集群交互的数据包生成上行或下行数据包发送队列,所述数据包发送队列中的每个数据包的附加字段记录有入队时间戳;所述入队时间戳包括数据包加入所述数据包发送队列的入队时间信息和所述数据包相应的延迟时间信息;延迟发送单元,用于轮询所述数据包发送队列的首数据包的入队时间戳,并将所述首数据包的入队时间戳与当前时刻进行比较,在所述首数据包的入队时间戳小于或等于当前时刻时,发送所述首数据包。12.根据权利要求11所述的DDoS攻击测试装置,其特征在于,所述链路仿真模块还包括包过滤单元,用于丢弃满足预先设置的包过滤规则的数据包。13.根据权利要求12所述的DDoS攻击测试装置,其特征在于,所述包过滤单元包括整数格栅生成子单元,用于根据预先设置的包过滤规则,生成整数格栅;对位子单元,用于为每个数据包分配预设数值范围内的一个随机数,作为数据包的编号,根据数据包的编号和数据包大小信息,计算所述数据包对应的整数格栅的位置信息;过滤子单元,用于根据所述位置信息对应的整数格栅的数值信息,选择丢弃或保留所述数据包。14.一种DDoS攻击测试系统,包括二层汇聚设备和待测试集群,其特征在于,还包括权利要求8-13任一所述的DDoS攻击测试装置,所述DDoS攻击测试装置和所述待测试集群交互的数据包,通过所述二层汇聚设备进行过滤和转发。全文摘要本发明涉及一种DDoS攻击测试方法、装置和系统。该方法包括修改Linux内核的网络子系统和内存管理子系统;调用修改后的内核网络子系统中内核发包器,生成海量数据包,并向待测试集群发送生成的数据包;生成的数据包的源地址在预先设置的范围内随机变化,目的地址为待测试集群提供的服务地址;在接收到待测试集群返回的响应数据包时,丢弃待测试集群发送的响应数据包;或向待测试集群发送部分请求数据包;或向待测试集群发送完整请求数据包,且在接收到待测试集群返回的请求响应数据包时,丢弃请求响应数据包。本发明基于修改后的Linux内核实现DDoS攻击测试,不需要设计专用的硬件,降低了DDoS攻击测试产品的成本。文档编号H04L12/56GK101753315SQ20081022762公开日2010年6月23日申请日期2008年11月27日优先权日2008年11月27日发明者刘拴林,刘颖,唐会军,李闻,杨毅,林晓东,田燕,齐路申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1