防御DDoS攻击的实时监测模型(3)
3、基于RBF-NN的实时监测DDoS攻击的模型
3.1、模型概述
实时监测模型包括三个模块:
1)数据采集器
因为TCP协议是应用最广泛的协议而且WWW是Internet上应用最广的服务。所以这个模型是针对TCP洪水攻击的,当然这种模型也可以用到UDP和ICMP协议中。
TCP数据报格式如图2所示。
图2 TCP数据报格式
数据采集器用sniffer嗅探器抓到每个数据包的如下字段:源端口号,客户端的SEQ序列号,窗口大小,和SYN,ACK,FIN,PSH,URG,RST六个标志位。同时把每个数据包的时间戳也记录下来以便把数据包分到重叠的时间帧中。不同的源端口和窗口大小的数目用来评估每一个时间帧。SEQ序列号是由客户端产生的32位的随机数作为TCP连接的认证。估算出不同的SEQ序列号需要很大的存储空间和计算能力。实验结果显示,尽管客户端的SEQ序列号不同,但是用高16位足够可以估算出SEQ序列号的特征。16位可以存储65535字节长的信息。
每一时间帧的统计信息是来自下面六个标志出现时被设置的频率:SYN,ACK,FIN,PSH,URG,RST。实验显示,这些标志在DDoS攻击的出现时提供了重要的信息。
需要强调的是尽管源IP地址提供了重要的信息,但在采集过程中没有用到,主要是基于以下几方面的原因:
①它需要很高的计算能力来存储每个地址;
②它不能够提供有关包长度的信息;
③IP源地址可能已经被更改,而被设置成随机的地址;
由TCP/IP传输的数据包中的其它一些域例如Time- To-Live域,就没有包含关于DDoS攻击出现时的信息,所以也不记录。
2)特征估计器
用六个标志位出现的频率,源端口的地址,SEQ序列号和窗口大小来评估每个时间帧。六个标记的每个时间帧的统计特性是每个标记被设置的概率。用源端口,SEQ序列号和窗口大小的每个时间帧的数据包的总数来划分不同的值。
3)DDoS检测器
每个时间帧用9个特征向量来激活有两个输出的基于RBF的神经网络。最活跃的输出神经元检测出DDoS攻击的出现,或者判断出时间帧是常规的流量。研究显示,少量的隐单元用来检测DDoS攻击就能够获得很高的检测效率。评价RBF-NN区分是DDoS攻击流量还是常规的数据流的分类的能力,用一个仅包含三个特征的输入向量来实现。
3.2、RBF—NN的学习过程
收集来的数据用来产生两个不同学习场景。在第一个场景中,DDoS监测器用常规的WWW和纯粹的DDoS攻击流量来学习。在第二个场景中把纯粹的DDoS流量换成正在发起DDoS攻击时,正在提供正常服务的服务器时的混合的数据流。在这两个学习场景中,分别用单一种类的数据流和混合的数据流用来估计RBF-NN的效率。
混合的高斯函数用来作为RBF的非线性函数。高斯函数的阀值和变量用K-means聚族算法来获得。K-means初始中心的选取将会严重影响学习过程的质量。选择好的初始中心对不同的网络拓扑都能够获得很好的分类效率。因此,用不同的初始值和K-means算法可以得到多个局部的K-means中心。在从多个局部的K-means中心中选取出最适当的一个中心作为最终K-means中心,以便使分类错误率达到最小。
在重新估计K-means中心的过程中,K-means算法中一些标记的变量为0(例如,RST,URG标志)或者非常接近于零,这样就会造成局部最小化问题.为了解决这个问题,我们可以从具体的实验中获得一个小的数值,作为估计变量的值,这样将会得到很好的分类速率。
3.3、特征集的描述
用两个不同的特征集来评价RBF-NN监测DDoS攻击的效率,这两个特征集是由建立输入向量的特征的数目来决定的。在很多情况下用最初的9个统计特征就能够进行正确分类,而且正确率超过98%。进一步的研究,发现到许多输入向量的域,例如Time-To—Live,窗口大小和一些标记没有包含很多可以用来监测DDoS攻击的信息。这就预示好的系统可以减少输入向量,所以我们设计的这个监测模型可以把输入向量集减少到3个,即只运用源端口,SEQ序列号,SYN标志作为输入向量。这个特征的集用常规的低性能的计算机系统就能够用来评价实时的监测情况。我认为这三个特征是除了源IP地址之外最重要的,我们在基于RBF-NN的网络检测DDoS攻击中没有用IP源地址是为了节省计算资源,减少在存储方面的需求。
4、总结
本文阐述的这种实时监测DDoS攻击的模型,能在受害者机器受到DDoS攻击发生时或者发生后来追查攻击源,并且响应速度快,不需要增加任何网络流量,并可以监测出当前存在的所有类型的DDoS攻击。今后的工作是在模型的基础上进一步改进和实现。最后应该强调的是,安全是所有的网络用户共同努力的目标,不仅仅是网络管理员的事情,更是每个网民的问题,一旦自己的机器不幸成为DDoS攻击中的一员,我们有义务去及时关闭机器(或者离线),进行杀毒清除DDoS攻击程序,不要成为控制端或代理端,更不要成为攻击者。