赵 鹏,马 斌,李一鹏
(河北省电力公司,石家庄 050021)
拒绝服务(DoS)攻击是目前网络攻击中最常用也是最难以防御的攻击之一,由于网络中存在很多容易被控制的主机,使得分布式拒绝服务(DDoS)攻击的危害越来越大。DDoS攻击已成为当前计算机网络安全中最难解决的问题[1-2],目前对DDoS攻击的检测,从不同角度和检测手段来看,存在着多种检测方法。
拒绝服务攻击是利用TCP/IP协议的漏洞、操作系统安全漏洞以及各种应用系统的漏洞,对网络设备和应用系统进行攻击的行为。它以消耗网络带宽和系统资源为目的,对网络服务器发送大量“垃圾请求”,造成网络或服务器不堪重负,导致系统瘫痪而无法提供正常的网络服务。而分布式拒绝服务是在拒绝服务攻击的基础上产生的一种分布式、协作式的大规模拒绝服务攻击方式,它主要利用网络中大量主机来对目标主机实施拒绝服务攻击,具有攻击时间短、危害性大且难于防范的特点[3]。
熵是描述变量随机性的量纲[1]。对于离散随机变量,设取第i个分量的概率为pi,熵[5]定义为:
熵越大,说明随机性越强,包含的信息量越大。在实际应用中,信息熵的计算是非常复杂的。具体说来,凡是导致随机事件集合的肯定性、组织性、法则性或有序性等增加或减少的活动过程,都可以用信息熵的改变量作为统一的标尺来度量。一个系统越是有序,信息熵就越低,反之,一个系统越是混乱,信息熵就越高。所以,信息熵也可以说是系统有序化程度的一个度量。
通过对攻击原理的分析得知,网络中的计算机在正常运行时ICMP、UDP、TCP的连接数一般是比较固定的,而当计算机遭受SYNFlood、UDPFlood、ICMPFlood三种形式的攻击时,对应的连接协议的连接数会持续增高。在设计过程中,根据计算机所处网络环境,预先设定正常情况下计算机中SYN/TCP的比率(一般在50%左右)、UDP每秒连接数、ICMP每秒连接数三组数据,当检测过程中有一组数据超过预先设定的阈值时就记录1次预警,当连续3秒出现预警时就正式报警,系统对收到的数据包开始进行记录直到取消预警,以便后续的分析和处理。系统规定连续3秒才正式报警是为了避免由于正常情况下大量并发连接所带来的连接数突增的误报,因为正常情况下大量并发连接会是一个时刻的连接数突增,但一般不会是持续的增加。以UDP攻击为例,程序流程如图1所示。
图1 程序流程图
利用信息熵的知识,结合DDoS攻击的特点,对预警日志中的源IP地址进行统计。正常情况下,源IP地址服从稳定的统计分布。由于攻击数据包源IP地址通常是伪造的,一般是在攻击源处随机生成的,此时对进入该路由器的数据包的源地址进行统计,得到的熵值将发生变化。攻击强度越大,变化越明显。攻击中,由于攻击数据包的源IP地址是随机产生的,会造成其熵值大于正常值;相反如果攻击数据包不伪造IP地址,使用其真实地址,或伪造的地址不是随机产生,而是使用固定的地址,那么计算出来的熵值要小于正常值。我们知道,当分布式拒绝服务攻击出现时,网络中将产生大数据、大流量,或者大量的不完全请求。而攻击者利用DDoS攻击网络时,通常会伪造大量的数据,这些数据包的IP地址通常都是不一样的,具有很强的随机性。
根据IP数据报结构(如图2所示),在程序中定义IP报文头结构,IP数据包中的第10字节的值可以判断出收到的数据包的协议类型,所以在程序中判断ip_protocol的值即可。若值为6,表示协议类型为TCP;若值为17,表示协议类型为UDP;若值为1,表示协议类型为ICMP。
图2 IP数据报结构
如果是TCP报文,根据TCP报头格式(如图3所示)分析代表SYN位的值是否为1,即是否为SYN请求。在程序中,通过获取TCP报文中的第13字节和2(二进制为00000010)进行与运算,不为0即为SYN请求。
图3 TCP报文头结构
当收包数持续(3秒以上)大于规定的阈值时,数据存储模块对收到的数据包进行解析,将数据包中的源IP、目的IP、报文长度、收包时间等信息存储到数据库中,以便下一步进行数据分析。
将数据库中记录的源IP地址数量进行分类统计,按照数量从高到低排序,数量多的几个IP可能为攻击IP。同时计算出每个IP源发包的比例pt,最后求出IP源的信息熵通过信息熵的算法评估,如果Ep很大,说明被攻击源IP随机性很大,可能是随机伪造IP源的攻击;如果很小,说明随机性很小,可能为单一攻击源。
DDoS攻击检测系统运行程序如图4所示。运行前设定好SYN与TCP的比率、ICMP收包速率、UDP收包速率的阈值。因为实验要演示被攻击状态,所以将这几个阈值设定的很低,分别为7、10、10,图中的方框示例越接近灰色表示越安全,越接近黑色表示越将达到阈值。
图4 当连续预警次数大于3时,系统报警并存储攻击日志Ep=4.35
当连续预警次数小于3的时候,系统不会报警;当大于等于3的时候,系统数据存储模块对收到的数据包源IP、目的IP、数据包长度、收到时间等信息进行分析存储并报警,同时计算数据中的源IP的熵Ep=4.35(如图4所示),说明攻击的IP随机性很强,疑似伪造源IP进行的攻击。
利用发送UDP数据包的程序(如图5所示)进行攻击演示(如图6所示),可以发现此时Ep=0.16,与之前的Ep=4.35比较,显然非常小,说明攻击随机性不强。通过日志中统计数据可知发包数据最多的IP是10.1.40.190,正是运行UDP数据包程序所在计算机的IP,如果是真正的一次攻击,那么服务器的管理员就可以采取下一步操作,如设置网络选项将此IP的所有请求过滤掉。
图5 进行UDP攻击
图6 利用UDP单一IP源进行攻击Ep=0.16
利用发送ICMP数据包的程序进行攻击演示(如图7所示),可以发现此时Ep=0.00,显然非常小,说明随机性不强,通过日志中统计数据可知,发包数据只有一个IP(10.1.40.190),该IP正是运行ICMP数据包程序所在计算机的IP。
图7 利用ICMP单一IP源进行攻击Ep=0.00
系统能够成功的检测出SYNFlood、UDPFlood、ICMPFlood三种形式的攻击,同时将报警信息记录在数据库中以便管理员进行分析和对攻击源IP的治理(如过滤掉攻击源IP的请求)。通过对日志中源IP数据包的熵计算有助于辨别是单一IP源的攻击还是随机伪造IP源进行的攻击。
根据实际情况可从以下两方面进一步研发系统。(1)可以在被检测的服务器上装一个短信猫,产生报警后第一时间给服务器的管理员发短信,既便于及时有效地发现问题,又解除了服务器管理员整天坚守服务器的烦恼;(2)当产生报警信息后,将报警后所有收到的数据包信息记录在数据库中,后期可以引入神经网络算法对数据进行处理,将攻击等级进行分级和评估等。
[1]薛静锋,曹元大.基于贝叶斯分类的分组入侵检测技术研究[J].计算机科学,2005,32(8):60-63.
[2]AljifriH.IPTraceback:ANew Denial-of-service Deterrent[J].Security&Privacy Magazine,2003(2):24-31.
[3]严芬,高玉龙,殷新春.DDoS 攻击检测进展研究[J].苏州大学学报,2011,27(3):36-38.
[4]张洁,秦拯.改进的基于熵的DDoS攻击检测方法[J].计算机应用,2010,30(7):1779-1781.
[5]Keunsoo Lee,Juhyun Kim,Ki Hoon Kwon,Younggoo Han,Sehun Kim.DDoS attack detection method using cluster analysis[J].Expert Systems with Applications,2008,34(3):1659-1665.