引 言
现代社会对计算机网络(如互联网)的依赖性愈来愈强,从而,网络安全的重要性不言而喻。在网络安全方面,检测分布式拒绝服务攻击(Distributed Denialof Service,DDoS)一直是重要研究内容。在入侵检测方面有两类系统:基于主机的入侵检测系统(IDS)和基于网络的IDS。基于网络的IDS以网络流量为检测对象,它又可分为两类:误用检测和异常检测。误用检测基于以往攻击事件的特征库,故误用检测的IDS能准确检测旧式攻击。误用检测对新变种的DDoS攻击显得无力,因为新变种的DDoS攻击的新特征尚不在特征库内,故可以百分之百地逃避误用检测。本文工作属异常检测。
异常检测适合新变种的DDoS攻击。但是,若把异常流量判别为正常则出现漏报。对于一次报警,把异常流量识别为异常的概率有多大?漏报概率有多大?这些是异常检测的可靠报警问题,也是异常检测的棘手问题。所谓可靠报警,是指所采用的异常检测器在原理上就具备那样的特性,用户可预先设定报警概率和漏报概率。可靠报警是该文研究的IDS的主要特点。
传统DDoS攻击的基本特点是数据速率特别高。故IDS常按高速率检测,包括以前的工作。近年来,出现了一种低速率DDoS攻击,其目的是逃避常规IDS。因此,如何可靠地检测低速率DDoS攻击成了有意义的研究。本文提出一种可靠检测低速率DDoS攻击的IDS。它由三部分组成:网络流量的实时采集模块;检测决策模块;报警模块。整个系统,其输入是网络流量,输出是就异常流量发出的报警信号。该系统的主要特点是能按用户指定的检测概率做出决策和报警。
1低速率DDoS攻击的特点
这里讨论的低速率攻击,是攻击者以TCP协议为目标,通过RTO计时器,在链接中制造运行中断,从而导致TCP控制机构拥塞。进行攻击的数据流是具有一定周期的方波。攻击流量的速率低,却有高的攻击效率。
TCP协议中,RTO是个重要的值。采用RTO是为了保证网络有足够的时间从拥塞中恢复过来。如果RTO过大,出现报文丢失,TCP需要等待过长的时间才能重传报文,增加了TCP报文传输时间。如果RTO过小,会引起不必要的重传,同时会错误地触发TCP的超时重传算法,降低了TCP的发送速率,从而降低了TCP的性能。下面介绍攻击的原理。
设TCP的RTO值为1 s,攻击者在0时刻制造了一个运行中断。TCP发送者要等待1 s重传并且将RTO加倍。如果攻击者在1 s和RTT间又制造了一个运行中断,将迫使TCP再等2 s,攻击者可以利用KAM算法,在3 s,7 s,15 s,…时通过制造相似的运行中断。如此,就能用很低的平均速率进行攻击,使服务器对TCP流拒绝服务。可见,若DDoS周期和RTO相近,则TCP会一直发生丢包事件。于是,结束超时重传的状态就一直不变,最终导致吞吐量几乎为0。因此,低速率攻击的关键就是攻击者能否对RTO进行准确预测。另外,脉冲持续时间长短也很重要。文献[5]指出,当l=maxi{RTTi}且T=RTO时,攻击效率很高。
简言之,和高速率攻击相比,低速率DDoS攻击的一个最大特点就是集中在某一小时间范围内发送恶意数据,从而使得攻击数据流的平均速率比较小,以逃避常规IDS的检测。
2 IDS结构及功能
系统结构与功能
本文讨论的IDS主要由三个模块组成,各模块的名称及功能如下:
数据采集与萃取模块 此模块是基于LIBPCAP函数库实现的。封装为C++类,可方便嵌入入侵检测系统,作为前端流量采集与信息萃取模块。考虑到IDS是一类实时系统,该模块的设计原则是所测流量足够后面的异常检测用即可。就本文讲述的系统,信息萃取是从测得的数据包中提取包长度信息。
攻击识别与决策模块 由用户按设定的识别概率和漏报概率做异常流量检测。
报警模块 根据用户设定的识别概率和漏报概率对发生的攻击采取多种方式进行报警。系统结构如图1所示。下面分别描述各模块的结构。
2.2数据采集与萃取模块
网络数据包捕获
利用LIBPCAP函数库实现网络数据包的捕获,该库所提供的主要功能函数有(见LIBPCAP手册):
pcap_open_live():获取捕获数据包的描述符,用于查看网络数据包的传输;
pcap_lookupdev():返回供pcap_open_live()使用的设备指针;
pcap_open_offline():打开数据包文件以供离线分析;
pcap_dump_open():打开文件以供写入数据包;
pcap_setfilter():设置数据包过滤器程序;
pcap_loop():启动数据包捕获。
数据包捕获过程如图2所示。