1 引 言
DDoS[1]全名是 Distributed Denial of service ( 分布式拒绝服务攻击) ,它是一种分布式的协同发起的拒绝服务攻击,借助数百、甚至数万台被入侵后安装了攻击进程的主机同时发起的集团行为. 它是危害更大、更易于达到攻击效果、更难以抵御和追踪的一种拒绝服务攻击. 在这种严峻的形势下,对DDoS 攻击的研究逐渐称为热点,大量的 DDoS 检测和防御技术应运而生. 然而 DDoS 攻击技术在不断发展,呈现出一些新的发展趋势,这对攻击检测和防御提出了更高的要求. 主要表现有: 攻击方式不断更新、隐蔽性越来越强、攻击准备时间缩短、随着网络技术的发展,漏洞会不断产生、攻击工具更加智能以及攻击强度的不断拉大这些都给检测与防御造成很大的困难.根据防御策略防御可分为攻击前,攻击中,攻击后的三个阶段,防御技术可分为 4 大类[2]攻击预防、攻击检测、攻击源追踪和攻击缓解. DDoS 攻击的检测技术主要有异常检测和误用检测两大类. 如模式匹配[3]等. 本文研究重点在 DDoS 攻击的检测技术,怎样及时高效的识别 DDoS 攻击.传统的 DDoS 检测方法效率低下、系统开销大、易产生单点失效且单点的异常检测对分布式异常检测处理能力弱. 基于协议特征分析的 DDoS 检测方法不能检测没有明显协议区别特征的 DDoS 攻击,而基于网络流量统计的 DDoS 检测方法不能区分正常的大流量和 DDoS 的攻击流量,可能会发生误判且不可恢复. 由于存在这样的问题迫切需要一种及时快速有效的检测系统,尽早发现潜在的攻击从而可以采取必要的措施来使损失降到最低.本文在现在有的检测基础上提出了一种新的检测方法.我们通过在 P2P 骨干网的路由节点上部署 DDoS 检测系统,在单点局部检测的基础上对检测结果进行信息融合,采用全局决策的方式来判断是否产生了 DDoS 攻击. 目前单点检测存在的问题有准确性不高,单点检测阈值不好估算,计算量大,协同通信量大等问题,因此我们在单点检测上基础上修改了数据存储结构,采用了信息熵与子空间以及聚类算法的方式来提空检测效率.本文的贡献主要有: 突破传统集中式单点检测在分布式情况下的局限性,利用局部检测节点对网络流量进行监控并发现潜在的被攻击目标,再通过全网检测节点信息的协同融合,实现在攻击流量到达目标之前发现攻击行为的目的. 利用连续的概要矩阵存储采集得到的数据,对网络报文的目的 IP地址信息进行压缩存储,即便于数据分析,采用信息熵的理论对网络流量的变化进行统计,然后用子空间与聚类方法相结合的方式来来确认可疑的网络行为. 优化了存储空间,可以实时进行网络流量监控,提高了单点检测的准确性与及时性.通过对本文中分布式协同 DDoS 协同检测系统的功能进行模拟仿真测试表明本系统可以满足检测率和假阳率的要求,与其它方案相比也具有很好的及时性与准确性,能够及时准确的检测到 DDoS 的攻击.
2 相关研究
针对 DDoS 攻击流量的大幅度增加特点利用流量变化来检测 DDoS 是应用最广泛的方法. 由此可以将检测策略分为基于正常流特征和异常流特征的检测. 如文献[4,5]提到的基于 IPv6 下对泛洪 DDoS 攻击时发生时流量显着变化的特点进行检测的方法.Jin[6]提出了一种利用协方差分析检测 SYN flooding 攻击的方法,它是通过对单位时间内不同的 TCP 报文累积量化计算协方差矩阵来得出其变化情况从而判断是否发生了攻击.此外,基于熵的攻击检测方式也越来越受到关注,如: 文献[7]提到的基于小波理论与信息相结合的方式进行 DDoS攻击的检测方法以及 文献[8]提到的应用滑动窗口理论的目的 IP 熵计算方法来检测 DDoS 攻击. 但是存在存储空间大、只是单点检测没有多个节点协同检测的缺点.由此可见,仅通过攻击流特征或者正常流特征难以准确识别 DDoS 攻击. 根据现在检测方法的不足,提出了基于 DHT技术的协同分布式拒绝服务攻击检测系统,攻击检测平台的工作内容主要着眼为: 单个检测点和全局协同判断. 单点检测描述了如何收集和压缩大量的网络信息,并从中判断出可疑行为. 全局检测主要介绍在分布式网络中运行 DHT 技术贮存信息的优势,并解释为了使用网络中单个检测节点协同工作,是如何运用 DHT 技术进行信息共享从而做出全局决策的. 本文着重介绍了基于熵的聚类算法来分析流量特征的单点检测技术.3 熵聚类的单点检测技术。
网络中分布部署的单个检测点共同构成了协同检测平台,当检测点获取到网络流量信息后对数据进行压缩,并利用其结果更新连续概要矩阵,存储数据. 检测点根据信息熵与聚类算法对连续概要矩阵中的内容对流量做出初步的判断,得到局部检测结果,生成可疑目的 IP 的概要信息.
3. 1 熵理论
熵是用来度量随机事件的不确定性[9]. 通过熵理论来判断单位时间内数据的离散程度,从而进行异常发生的判断[10]. 本文中,我们把采集到的流量信息中的源 / 目的 IP 以及的端口信息作为随机事件的离散信息,然后应用熵理论对其进行分析. 设集合 X = { ni,i =1,2,…N} ,表示事件 i 在总的事件集中发生了 ni次,则熵的定义就是:
其中,S = ∑Ni = 1ni. 代表所有事件总的发生次数. 熵的取值范围在[0 - logN2]之间,当所有事件为同一事件时,分布最大化集中,此时熵值为 0. 当 ni= n2= … = nN,即等概率分布的情况出现时,分布最大化分散,此时熵取最大值.DDoS 攻击主要有准备阶段、控制阶段与攻击发起阶段,在每一阶段都可选取关键参数或方法进行判断. 如文献[11]中提到的选取源目 IP 地址和源目端口数等特征分别进行熵估算,从而判断是否有攻击发生. 如果为了达到更准确的效果,可以选择更为详细的参数,但是这样会增加运行时间,因此本文只选取最关键的流量特征. 这样可以在不加系统负担的情况下提高检测的及时性而又不损失检测的准确性.为了保证检测的敏感性,系统需要频繁大量的采集网络流量数据信息,这样才能及时的掌握攻击行为. 为此我们利用Sketch 数据结构[12]压缩流量信息生成网络流量信息的概要矩阵. 局部检测将在连续概要矩阵收集的信息中做出判断. 然后对可疑概要矩阵的每一行进行反向散列运算,根据可疑 IP地址概要信息对可疑概要矩阵的各行进行反向散列运算后的结果做交集,得到交集的结果即为可疑 IP 地址.选用 m 个长度均为 s 的 hash 函数 h1( ·) ,h2( ·) ,…,hm( ·) 来检测网络流量中的源 IP 地址跟目的 IP 地址,这种邻近的源地址跟目的地址能够落入 hash 矩阵中相同的位置.首先进行局部检测来计算本地 sketch. 每个路由器 Ri,i = 1,2,…,N 来收集某一时刻进行该网络的网络流量. 对于网络 IP 流的 5-元组中的二个特征( SIP,DIP) 利用 m-sketches来计算相应位置. 由于采用这和结构因此每个结点每个时刻就有 2 × m 个 sketches. 在这里我们采用信息熵来衡量异常分布情况[10]. 为了实现这个,每个路由 Ri维持2 × m 个长度为 s的 histogram-sketches 概要矩阵,对于每一个 SIP 和 DIP 有 m个 sketches. 如下页图 1 所示. 对于每一个 j,j =1,2,…,m,网络流 T =〈F,P,T〉可以 hash 到 k 位置,k = hj( HashKey( F) ) ,即: 网络流 < SourceAddress( F) ,P > 被加入到 SIP sketches 中的 hj中的 k 位置,相应的记录会分别加入到 DIP 和 SIP 的相应位置.在每一个时间间隔 T 中,都会形成一个网络流量的目的IP 的分布,我们来计算这个分布的信息熵. 在以信息熵为基础的体系中,每一个时间段内,每个特征的信息熵都是变化的,这里我们使用三维矩阵 H( t,p,k) 来表示时间段 t 时刻内,p 个 OD 数据流,每 k 个特征的信息熵[10].
3. 2 子空间方法
计算流量测量数据的信息熵之后,先应用 PCA( PrincipalComponents Analysis,简称 PCA) 对数据做预处理[13],再使用子空间方法进行异常检测. 子空间算法的基本思想是按照一定的规则从通过 PCA 求得的主成分中选择部分主成分作为正常子空间,其余的作为异常子空间. 将正常的对已生成的熵矩阵采用主成分分析法( Principal Components Analysis,简称PCA) 进行分析[13],以此来检测异常的发生. PCA 方法主要是采用降维思想在保持总方差不变的情况下将多维数据转换为低维数据. 通过转换后可以求得网络流量特征的正常流子空间与异常流子空间,如: 源 IP 地址,目的 IP 地址.为了应用子空间方法,我们把这个多路特征矩阵展开成一路特征矩阵 H,即应用多路子空间方法[13]. 一旦转换完成,子空间方法就可以应用到检测到不同的 OD 交叉流和不同的交叉特征中,如图 1 所示. 每一个 OD 数据流都可以表示成正常与异常成分之和. 具体如下: 在 t 时刻,把网络流量分解投影到正常与异常子空间: x =^x+珓x,其中 x 表示特殊时刻 t 的流量向量,^x 表示正常的流量向量,x珓 表示异常流量向量. 可以通过检察珓x 向量的大小‖珓x‖2. 来检测异常流量. 一般取平方预测误差方法( SPE) : SPE = ‖x珓‖2≤δ2α,其中 δ2α表示 1 - α置信度下的阈值[14]. 此时应用 PCA 方法,矩阵中每行都被分解成为 x =^x+珓x. 对于每个 hash 函数都应用子空间方法.
3. 3 聚类算法
应用子空间将 SIP 和 DIP 特征生成的子空间进行动态聚类操作,从而对异常流量进行划分.聚类算法是将相似信息不断划分为同类的迭代过程. 通过聚类分析可以分类正常的流量跟 DDoS 攻击的流量.k-means 算法[15]是一种 Cluster analysis 的算法,其主要是来计算数据聚集的算法,主要通过不断地取离种子点最近均值的动态聚类算法,其要点是以误差平方和为准则函数. 基本思想是[16]: 把 n 个对象分为以输入量 K 为参数的 K 个聚类,并满足以下条件: 同聚类中的对象相似度较高,不同聚类之间的对象相似度较低. 而聚类相似度的计算是通过一个聚类中对象的平均值所得到的中心对象来进行的. 处理流程[17]为:首先从 n 个数据对象中任意选取 K 个作为初始聚类中心; 其次根据每个聚类对象的均值,计算其余每个对象与各个聚类中心的距离,并将它们重新分配到与之最相匹配的聚类中,然后重新计算每个聚类的中心. 不断重复上述过程,直到每个聚类不再变化为止. 一般采用平均误差和方法作为聚类准则函数,公式如下:
k-means 分类过程如图 2 所示. 经证明,该方法能够满足异常类型划分的要求[18].
3. 4 局部检测
经过上述步骤后,单个检测点对网络流量进行实时处理,当有检测到异常流量时生成完整的连续概要矩阵. 局部检测的任务是从连续概要矩阵中存储的简化信息中分析判断得出可疑的概要信息,完成局部检测,进一步简化对 DDoS 全局检测有用的信息.对于 SIP,DIP 每一个特征,生成可疑概要矩阵. 然后将存储两个概要信息的连续概要矩阵通过上述过程获得可疑SIPSt、DIPSt地址. 由于查询可疑概要信息对应的目的 IP 地址会使检测节点的负担加重到不能容忍的地步,因此引用了概要矩阵反编技术( Reverse Sketch)[19]解决上述问题. 这样能够在不牺牲本地资源的条件下识别可疑的 IP 地址. 如图 3所示,步骤如下: 首先对可疑概要矩阵的每一行进行反向散列运算,其次根据运算后的结果做交集,得到的交集中的 IP 地址即为原始可疑 IP 地址.3. 5 信息融合及全局决策每一个中间检测节点发送共享信息时,检测节点以每个可疑 IP 地址和其概要信息为关键字,利用 DHT 构建聚合树进行路径共享. 检测平台上的单个检测点完成局部检测后,将局部检测结果作为全局决策中确认 DDoS 攻击的根本依据汇集到最终决策点. 本文中采用的是 P2P 网络,它是对待连接,每个节点都有共享网络资源并提供服务. 这里所有单个节点都会产生随机的局部检测结果,即所有的节点都均匀的分布保存着用于全局决策的证据信息. 按照 P2P 网络对资源的查找方式,我们利用 DHT 查找方法生成共享路径,生成最终的决策点.为了更好的对单点信息进行融合处理采用分布式哈希表( Distributed Hash Table,简称 DHT) 查找方法. DHT 查询网络不存在中心服务器,每个节点负责一定范围的路由,并在本地保存部分路由信息,实现存储和查找的方法.当查找某一个资源的时候,查询节点把查询信息转发到当前节点所存路由表中距离目标资源所在节点最近的节点.然后该目标节点重复这一过程,因为每次都是向与所寻找的节点的位置相近节点发送请求信息,这样能够保证在有限次转发后,找到所需位置[20].协同检测系统信息共享网络的目的就是把检测到相同可疑概要信息的检测节点快速有效的组织起来生成信息共享拓扑路径,并最终让所有信息汇聚在一个点从而做出最终的全局决策. 在融合过程中,尽量让局部检测信息最大限度的融合简化,而不是直接上传到最终目标节点,减少最终决策点的负荷.
在进行信息融合的过程中,对所产生的异常子空间的信息熵也进行融合,从而产生全局的子空间信息熵矩阵,然后对这个矩阵进行分析,再次通过聚类算法来确定阈值,对其是否有异常进行全局判断,以保证全局决策的正确性. 当检测到异常时,通过对全局信息进行整合,简化处理过程,生成最终的检测结果,然后再进行 DHT 查找. 我们用改进的 Chord 算法[21]进行 DHT 查找,使得每个节点都可以成为根节点,动态的建立聚合树,利用改进后 Chord 算法构建用于确定融合路径的聚合树[22],促使产生相同可疑目的 IP 地址的局部检测点组织生成聚合树,局部检测信息根据聚合树产生的路径,经过多跳路由逐步融合信息,最终汇聚在根节点进行全局决策.系统结构图如图 4 所示.
4 性能评估
DDoS 攻击的协同检测方案实验中,我们部署了由 65 个节点组成的大型网络,由15 个边缘节点对处于区域7 内的67号节点采用“多对一”的方式发起 DDoS 攻击,以求达到很快耗尽服务器的资源达到拒绝服务的目的. 我们采用 TFN2k 软件,通过主控端利用15 个攻击节点的资源对目标节点发起攻击.实验环境网络拓扑图如图 5 所示.
4. 1 系统及时性分析
在对两种不同的检测方案的及时性分析上,以检测到攻击与开始攻击的时间差 Δt 为指标,对比分析不同方案的及时性,并检测方案产生报警时目标节点的攻击程度,攻击程度由目标节点的 CPU 使用率、内存占用、带宽占用等指标综合评判.其中,分布式协同检测方案的检测时间为 3. 4s,单点检测方案的检测时间为 11. 2s,如图 6 所示.分析上实验数据可以发现,从及时性这一指标上来看,我们的检测方案相比单点检测方案,具有更加及时的特点,相应的,检测方案作出攻击报警时,目标节点的攻击程度是最低的.
4. 2 系统准确性分析
在对两种不同的检测方案的准确性分析上,我们采用了检测率和假阳率两项指标.针对两种不同的检测方案,分别进行了 10 组实验,每组实验中攻击节点分批次发送了 10 次攻击流,并统计了每组实验中不同检测方案的攻击发送总次数、检测方案报警次数以及检测方案误报次数. 最后计算了两种不同检测方案的检测率和假阳率的平均值,进行比较分析.其中分布式协同检测方案的检测率为 98%,单点检测方案的检测率为 73%.其中分布式协同检测方案的假阳率为 1%,单点检测方案的假阳率为 19%,如图 7 所示.经过分析实验结果我们发现,分布式协同 DDoS 检测方案具有较高的检测率和较低的假阳率,但单点检测方案的检测率较低,假阳率也较高.
5 结论与未来展望
本文主要研究在在 DHT 协同 DDoS 检测系统中单点检测功能的设计与改进,针对目前分布式检测存储数据流量消耗过大、检测效率不高的问题,我们使用 Sketcher 结构存储流量信息,通过使用基于信息熵和子空间的聚类算法生成概要矩阵,在此基础上设计了局部检测模块进行初步可疑信息过滤. 然后将可疑信息进行全局融合,通过 DHT 算法,生成聚合树,将检测节点协同工作,实现检测信息的传递共享从而达到分布式协同检测的效果,最后设计了全局决策模块进行最后的决策. 局部检测异常流量的筛选主要是通过聚类算法中的k-means 方法来确认,然后再进行信息共享,达到及时快速准确的检测目的.在最后的测试阶段,对协同 DDoS 检测系统的及时性、准确性进行了详细的测试分析,并与单点检测方案和集中式单点检测方案进行了比较,证明本文设计实现的分布式协同 DDoS检测系统达到了良好的效果,能有效完成攻击检测任务.进一步工作我们将对大规模网络流量异常检测进行深入挖掘,了解最新的检测方法与技术. 对局部检测的 sketches 存储结构做进一步的优化,尽量减少存储空间,改进聚类算法,缩短检测时间,减少测量数据的传输,提高节点路由的检测效率,达到更好的分类与检测的效果,从而提高全局检测的效率与最终决策的决策.