基于软件定义物联网的分布式拒绝服务攻击检测方法

2020-06-06 02:06刘向举刘鹏程朱晓娟
计算机应用 2020年3期
关键词:数据包聚类控制器

刘向举,刘鹏程,徐 辉,朱晓娟

(安徽理工大学计算机科学与工程学院,安徽淮南232001)

(*通信作者电子邮箱liupengcheng1194@163.com)

0 引言

随着物联网(Internet of Things,IoT)技术的广泛应用,物联网涉及到大量相互连接的设备,包括公共设施、可穿戴设备和无人机等[1-5];但是其安全问题日益凸显,物联网设备所处的环境十分复杂,而且庞大的网络规模使得管理起来十分困难,存在安全漏洞的物联网设备相较于传统网络更容易被黑客攻陷,形成僵尸网络并发动分布式拒绝服务(Distributed Denial of Service,DDoS)攻 击[6-7]。鉴 于 软 件 定 义 网 络(Software Defined Network,SDN)在网络管理和安全维护等方面的成功[8],越来越多的国内外研究学者尝试将其控制与转发分离的设计理念引入到物联网中,提出新型软件定义物联网(Software Defined Internet of Things,SD-IoT)体系架构[9-10]。SD-IoT 屏蔽了底层设备的硬件差异,简化物联网设备的配置和管理,降低了网络的运营成本,实现了物联网设备的灵活部署。更重要的是,SD-IoT可以将传统物联网中难以部署的、能量消耗大的DDoS攻击检测系统部署在控制器中,为改善物联网的安全问题带来了重大机遇。

1 相关工作

目前,在SD-IoT 与传统物联网领域内的DDoS 攻击检测研究成果较少,针对传统物联网的DDoS 攻击检测问题,胡向东 等[11]提 出 一 种 基 于K均 值(K-means)+主 成 分 分 析(Principal Component Analysis,PCA)算法的轻量级入侵检测方法。虽然该方法较为轻量化并能够有效检测DDoS攻击,但是其检测特征数量较多也增加了算法的复杂度。针对SD-IoT中的DDoS 攻击检测问题,Liu 等[12]设计了基于SDN 的采用数据流抽象和启发式算法的数据传输中间件保护(Middlebox Guide,M-G)安全模型,该模型可以降低网络延迟,并进行适当的数据流管理以确保网络安全运行。Yin 等[13]提出基于SD-IoT 的利用边界SD-IoT 交换端口的Packet_in 消息速率向量的余弦相似度检测DDoS 攻击的算法。姬生生[14]提出了基于SDN 的无线传感器网络流量异常检测机制和通过计算网络流量自相似参数(Hurst 值)来区别网络流量异常的方法。以上两种方法根据流量的自相似度来判断网络中是否有DDoS攻击发生,优点是算法轻量化,执行速度快,但是网络流量是动态变化的,判断自相似度的阈值难以确定。同时还有许多SDN 网络中的DDoS 攻击检测方法可以借鉴:肖甫等[15]提出了一种采用优化的K-近邻(K-Nearest Neighbors,KNN)算法对选取的SDN 网络的5个关键流量特征进行异常检测。张雨龙等[16]提出基于SDN 的六元组流特征值的DDoS 攻击检测判断研究。陈超等[17]提出了一种利用攻击检测四元组特征并通过自适应改变监控流表粒度以定位潜在受害者的检测方法。华辉有等[18]提出了一种适应大样本集的网络入侵检测算法,该算法先在离线预处理阶段建立大样本集的聚簇索引,然后在在线实时分类阶段则利用聚簇索引搜索得到近邻,最终得出分类结果。马乐乐等[19]提出了一种基于支持向量机(Support Vector Machine,SVM)+K-means 算法的DDoS 攻击检测方法,该算法首先使用熵值检测流是否异常,如异常则使用SVM+K-means 算法检测DDoS 攻击。以上几种SDN 环境中的DDoS 攻击检测算法都利用DDoS 攻击流量的特征进行检测,虽然准确但是其高复杂度并不适合应用在传统的物联网环境中。

针对以上问题,本文提出了在SD-IoT环境中,利用SD-IoT架构的优势,将检测结果准确但是资源消耗大的检测算法放置在能量和资源充足的SD-IoT 控制器中。根据SD-IoT 中DDoS攻击的七元组特征,使用均分取值区间长度-K均值算法(Equal Length of Value RangeK-means,ELVR-Kmeans)进行DDoS攻击检测。

2 SD-IoT架构

传统的物联网的三层架构越来越不能满足安全、管理、应用等方面的需求[20],将新兴网络架构SDN 引入物联网之后,在应用层与网络层之间加入了控制层,变成了四层结构,SDIoT架构如图1所示。

1)感知层。不同于传统物联网中的感知层,SD-IoT 中感知层设备采用了控制平面与数据平面分离的方式,只负责采集数据和转发数据,而链路发现和拓扑维护等功能则放在控制器中。SD-IoT 感知层设备的数据处理流程与SDN 模式相同[21]。

2)转发层。SD-IoT 的转发层将感知层接入到互联网中,实现高效、可靠和安全的数据传输。SD-IoT 转发层不仅包括SDN 交换机等SDN 设备还包含多种类型的SD-IoT 网关设备,使异构网络实现了相互通信。

3)控制层。控制层由SD-IoT 控制器构成,SD-IoT 控制器通常具有较高的计算能力和较多的存储资源,通过南向接口管理SD-IoT 转发层中的OpenFlow 交换机和SD-IoT 网关设备,并且利用南向接口收集来的感知层节点信息建立全局视图,可以提供安全检测、拓扑维护、服务质量(Quality of Service,QoS)管理等功能,同时通过北向接口提供相应的应用程序接口供应用层调用。

4)应用层。开发人员可以通过控制器提供的北向接口在应用层非常便捷地进行智能物联网应用开发、安全管理、网络维护等操作。

图1 SD-IoT架构Fig. 1 Architecture of SD-IoT

3 本文方法

3.1 特征选取方法

传统物联网中的DDoS 攻击可以根据攻击消耗的资源类型分为带宽消耗型攻击和资源消耗型攻击,也可以根据攻击速率分为高速攻击和慢速攻击。由于目前DDoS 的攻击形式以高速带宽消耗型为主,所以本文以高速带宽消耗型DDoS攻击为研究对象。

与传统物联网的DDoS攻击的具体表现相比,基于软件定义架构下的物联网需对其DDoS 攻击的特征进行实际的数据收集分析,为下一步的DDoS攻击检测做准备。

许多关于SDN 网络攻击检测的研究[22]都提到了大量的Packet_in 数据包是发生DDoS 攻击的显著特征之一,但是在基于软件定义物联网的DDoS攻击检测中,要根据网络内流量的特征进行相应的变化,以提高检测算法的检测准确率。特征的选择分为两部分,分别是流量中不同数据包的数量和流量中不同参数的熵值,具体选择过程如下:

1)流量中不同数据包的数量。根据攻击收集到的数据可以看出在DDoS攻击发生时,不仅每秒发送的数据包的数量会显著上升,而且会有大量的包含伪造源地址的Packet_in 数据包,这与SD-IoT 架构的流表下发特性有关,交换机会把未匹配的数据包封装成Packet_in 消息发送给控制器,等待控制器下发新的流表。在交换机向控制器发送含有虚假源地址的Packet_in消息后,控制器也会为了寻找该地址,而向所有交换机广播发送大量的Packet_out 消息。另外,在攻击结束的最后几秒内,Packet_in 中的源地址熵值和Packet_in 数量会回归正常,但是Packet_out的数量还是没有下降太多。

例如图2 中显示的一段20 s 的流量数据是在InstantContiki3.0 环境下使用ONOS(Open Network Operation System)控制器、SDN-WISE-CONTIKI 和Mininet 仿真软件模拟SD-IoT环境,在SD-IoT环境中模拟DDoS攻击时收集到的。在4~9 s 发起攻击,第7 s 时Packet_in 中源地址熵值已经回归正常,但是此刻仍是处于攻击之中,可以看到7~9 s 内的数据包总量、Packet_out数量还是很多,所以由此可判断4~9 s处于攻击之中。若不把Packet_out 数量作为特征之一,则在进行检测的时候就会因为Packet_in 中源地址熵值的下降而误把该流量分类成正常流量,所以将Packet_out 数量作为特征之一可以提高DDoS攻击检测的精度。

图2 流量构成变化Fig. 2 Change in flow composition

根据以上分析,选取数据包总量、Packet_in 数据包数、Packet_out 数据包数、平均数据包长度作为检测DDoS 攻击的特征。具体表示如下。

①平均数据包长度:

其中:Δt是收集流表的时间间隔,n为Δt内的流表总数;

②数据包总量:num(Δt);

③Packet_in数据包数:packet_in_num(Δt);

④Packet_out数据包数:packet_out_num(Δt)。

2)流量中不同参数的熵值。根据相关的DDoS 攻击检测的研究[22]表明:可以通过单位时间内源地址、目的地址、数据包协议类型三个属性的信息熵(式(2))变化情况来判断是否有攻击发生。

其中:H(X)表示信息熵;随机变量X表示所有的随机变量,它包含n个随机事件;xi是其中可能出现的随机事件,p(xi)表示事件xi出现的概率。信息熵可反映一个系统的稳定程度:信息熵值越低,系统越有序;相反,信息熵值越高,系统越混乱。

所以本文选取Δt时间内Packet_in 数据包中的源地址熵值、目的地址熵值和协议类型熵值作为检测特征。具体计算如式(3)~(5)所示:

其中:S为源地址总数

其中:D为目的地址总数,个数。

其中:P为Δt内数据包协议类型总数,为不同的协议类型的个数。

在未发生DDoS攻击时,数据包中的源地址与目的地址大多都是网络中已知的地址,和控制器向交换机发送的交换机状态请求报文和交换机向控制器的应答报文,一旦网络遭受DDoS 攻击,控制器将收到大量的伪造源地址的Packet_in 消息,并且攻击流量中协议类型相同,协议类型的熵值较低。所以,应该统计Packet_in 数据包中的源地址熵值、目的地址熵值和协议类型熵值。

同样以1)中的一段20 s 的流量数据为例,可以看出在4~7 s发生攻击时,Packet_in 数据包中封装的目的地址因为是随机生成的伪造地址所以熵值会接近增大接近于1(熵值的区取值范围为0~1),而被攻击的主机的IP 地址相对固定,所以目的地址的熵值会接近于0。如图3所示。

图3 Packet_in数据包中地址熵值变化Fig. 3 Change in address entropy value in Packet_in packet

3.2 流量解析

在使用Wireshark 收集SD-IoT 控制器与交换机之间相互通信的数据之后,得到的数据都为pcapng文件,需要将pcapng文件解析并保存为csv文件,并且存储到数据库中。存储在数据库中的数据项包括:1)时间,这里的实现以开始收集流量的时间(0 s)为起点,用秒表示;2)Packet_in 数据包中的源地址、目的地址、协议类型;3)每个数据包的长度(大小);4)数据包的Info信息。如表1中的流量数据表所示。

将数据存储在数据库中后,按照3.1 节中选择的特征以及计算方法计算每一秒的流量的所有特征,并存储到数据库中,数据表如表1中的流量特征数据表所示。

将计算好的数据导出为csv 文件并去除ID 和时间属性,作为实验数据集,数据集内容如图4所示。

图4 实验数据集(部分)Fig. 4 Part of experimental dataset

表1 数据表结构Tab. 1 Structure of data table

3.3 ELVR-Kmeans算法

根据3.1节收集到的数据显示,对流量分类影响最大的7个特征其在正常流量和DDoS 攻击流量中的表现存在较大差异,例如:在DDoS 攻击流量中,Packet_in 数据包中封装的源地址与目的地址的熵值会分别接近熵值取值范围的两个端点,而在正常流量中熵值则不会这样。DDoS攻击流量中每秒的数据包总量、Packet_in 数据包数量和Packet_out 数据包数量的变化也十分明显,会比正常情况下多出许多。

根据环境的需要,传统的K-means 算法并不适合检测软件定义物联网中的DDoS攻击,因为其在进行初始的分类中心点的选择是随机选取,会造成分类结果的不稳定,同时分类误差较大。为了使每个聚类都尽可能远离并相似度尽可能小,采用属性取值区间平均划分来确定初始聚类中心。所以本文提出一种均分取值区间长度-K均值(ELVR-Kmeans)算法,根据以上分析的数据分布的区间,改变K-means 算法的初始聚类中心的选择方式。算法具体过程如下:

1)在选择k(k∈[0,2])个聚类中心时:首先在数据集中选择每个特征取值的最大和最小值,组成两个聚类中心,因为聚类算法是根据数据之间的相似度进行分类,所以要首先选择两个相距最远的样本作为初始聚类中心。

2)当分类的个数k大于2 时:除了1)中的两个聚类中心外,还需生成k-2个聚类中心,具体步骤为:

①计算1)中两组数据对应位置的差值,假设数据样本为四元组特征A、B、C、D:

[Amax-Amin,Bmax-Bmin,Cmax-Cmin,Dmax-Dmin],其 中Amax、Bmax、Cmax、Dmax和Amin、Bmin、Cmin、Dmin分别是A、B、C、D这4 个特征的取值区间最大值与最小值;

②算出的对应位置的差值,

③除了最大最小值组成的聚类中心以外,第i个聚类中心由1)中的每个特征的最小值组成的聚类中心对应位置的数值加上i倍的2)中算出的差值,第i个聚类中心为:

具体的初始聚类中心选择过程描述如下:

按照上面步骤选取初始分类中心之后,开始进行下一步的分类,算法具体流程如下。

本文提出的ELVR-Kmeans 采用欧氏距离作为相似性评价指标,若两个对象的欧氏距离越小,则它们之间的相似性就越大。对于一组数据,将其看成若干个簇,簇由距离靠近的对象组成,每个簇就是一个聚类,由于同一个聚类中对象之间的距离最小,那么相似度也就最大,使用ELVR-Kmeans 算法可以将所有对象按相似度聚类,并计算出每一类的聚类中心。ELVR-Kmeans 聚类算法对每个数据进行k次迭代,对于样本x,通过式(6)找到欧氏距离最小的聚类中心,以最后得到的k个平均聚类中心为数据的最优聚类中心,按照最小欧氏距离依次为各个测试数据进行聚类操作,使最终类内对象相似性最大,类间对象相似性最小。

其中:xik与xjk分别为i与j在第k个特征上的数据。

具体的处理方法描述如下:

3.4 基于ELVR-Kmeans算法的DDoS攻击检测过程

本文提出的检测方法部署在SD-IoT 控制器内,因为SDIoT控制器通常具有较多的计算和存储资源,可以运行传统物联网中难以实现的攻击检测算法,而且将SDN 技术引入到物联网之后,物联网的控制平面与数据平面分离,无论物联网拓扑如何变化,控制平面中的SD-IoT 控制器始终拥有整个网络的全局拓扑视图,可以对所有物联网设备进行集中控制和流量管理等操作。并且根据本文3.1节中关于SD-IoT 环境中发生DDoS攻击时流量特征的变化,以及检测方法主要是通过提取控制器与SD-IoT 交换机之间通信流量的特征进行DDoS 攻击的检测,所以检测方法与物联网拓扑无关。检测方法主要包括流表收集、特征提取和攻击检测3 个部分,具体过程如下:

1)流表收集:该部分负责周期性地收集网络中的流表信息,并且将每个数据包的所有信息都存储在数据库中,请求周期为t。

2)特征提取:该部分负责按照3.1 节中通过分析SD-IoT中DDoS 攻击流量的特征所得出的七元组特征,如表2 所示,对存储在数据库中的ts内的数据进行特征提取。

表2 七元组特征Tab. 2 Seven-tuple feature

3)攻击检测:该部分按照3.3节中提出的ELVR-Kmeans算法,对已经提取出七元组特征的流量进行分类,分类过程如下:

①计算初始分类中心,首先分别找出每个特征上的最大值和最小值确定每个特征的取值区间,然后将7 个特征的取值区间均分为k个子区间,并且将k个子区间的最小值与整个取值区间的最大值作为初始的k个聚类中心,如式(7)~(9)所示:

在以上3个公式中,ui为聚类中心,ti为第i个特征的取值区间,i={1,2,…,7}。

②计算所有样本到初始聚类中心{u1,u2,…,ui,…,uk}的欧氏距离dij:

xj与ui分别是样本与聚类中心,在每个样本中标记离它最近的聚类中心标号,这样就将每个样本划入到离它最近的类中Ci=Ci∪{xj}。

③在每个聚类中计算新的均值向量u′i作为新的聚类中心。

其中:u′i为新的均值向量,|Ci|为为第i个聚类中样本的总数。并且根据新的均值向量产生新的分类中心,通过对比新旧分类中心是否一致来判断是否进行新一轮的迭代:如果新产生的聚类中心和上一轮迭代产生的聚类中心不一致,则重新计算每个样本到各个聚类中心的欧氏距离,然后标记离它最近的分类标号进行划分;如果本次迭代产生的新聚类中心与上轮迭代产生的聚类中心一致,则不再进行重新计算,将本次分类结果输出。

4 实验与分析

本章首先描述实验环境设置,然后对攻击检测算法的实验结果进行分析和评估。

4.1 实验环境

本文使用SDN-WISE-CONTIKI 和Mininet 网络模拟器来模拟真实的软件定义物联网环境,实验使用开源控制器ONOS(Open Network Operation System),操 作 系 统 为Ubuntu18.04LTS,在i5 CPU 和4 GB RAM 的计算机上完成。首先使用Mininet 搭建一个由12 台主机和6 台OpenFlow 交换机组成的树形网络并且连接到Internet,同时使用SDN-WISECONTIKI创建一个具有2个SDN-WISE Sink类型的汇聚节点,8 个随机分布的SDN-WISE mode 类型的传感节点,并且使两种网络都连接上ONOS 控制器。整个网络的拓扑在控制器中的全局视图如图5 所示。本文使用经典的DDoS 攻击工具TFN,在交换机1 右侧所连子网中的H9 向S3 所连子网中的H1 发起TCP SYN flood、UDP flood、ICMP flood 等典型网络流量攻击。

图5 实验拓扑Fig. 5 Experimental topology

对上述产生的流表进行收集,实验一共进行了44 min 36 s,共收集到2 046 373 个数据包,取其中含有攻击流量的1 400 s数据并分为7 组,作为实验的测试样本,每组样本均由正常流量和DDoS 攻击流量组成,并且DDoS 攻击流量所占比例依次下降。具体分组情况如表3所示。

表3 分组情况Tab. 3 Grouping situation

4.2 实验结果分析

本节通过真正例(Ture Positive,TP)、真反例(Ture Negative,TN)、假正例(False Positive,FP)和假反例(False Negative,FN)计算以下3 个参数来评判算法的性能,3 个参数分别是:

1)检测率(Detection Rate,DR):检测率是被正确识别的攻击流的数量除以测试样本中所有攻击流的数量的比值,它的大小与随机误差相关。检测率越高说明识别DDoS 攻击的精度越高。

2)准确率(Accuracy,ACC):准确率是正常流和攻击流分别被正常识别的数量除以测试样本中的总体流的数量的比值,它的精度与系统误差相关。准确率越高,流量分类更精确。

3)错误率(Error Rate,ER):错误率是被识别为攻击流的正常流的数量与被识别为正常流的攻击流的数量的和,除以测试样本中所有流的数量。错误率越低,分类效果越好。

首先在4.1节中模拟的SD-IoT环境中,对本文提出的SDIoT 环境下基于ELVR-Kmeans 算法的DDoS 攻击检测方法和经典的K-means 算法进行性能比较分析,两个算法都分别对表4 中的七组数据进行分类测试,比较它们的检测率(DR)随k值的增加而产生的变化。

由于K-means 算法中k值的选取会对分类结果造成较大的影响,所以分别测试k值在3 至7 的情况。分类结果如表4所示。由表4 中的数据可以看出在k=7 时本文算法的分类结果最好,而且随着k值的增加,本文提出的算法的检测率也在不断上升,对于不同k值下的同组数据而言,本文算法的检测率均高于K-means 算法,且算法较为稳定,而K-means 算法的检测率是不规则变化的。

七组数据在k的不同取值下的平均检测率如图6所示,可以看出,本文提出的算法相较于K-means 算法检测率会随着k值的增加而上升,而且在不同的k值下的检测率都好于K-means算法。

由以上实验得知在k=7 时算法的分类检测率最好,然后与文献[19]中提出的基于SVM+K-means 的检测方法、SVM 算法进行比较,使用检测率、准确率和错误率三个参数来评判算法的性能。

表4 不同k值下的检测率Tab. 4 Detection rate with different k values

图6 平均检测率Fig. 6 Average detection rate

表5 揭示了四种算法的检测率、准确率和错误率,在k=7时,本文提出的算法的检测率最高,为96.43%。相较于Kmeans 算法、SVM 算法和SVM+K-means 算法的检测率分别提升了4.89 个百分点、3.31 个百分点和1.07 个百分点。在准确率的比较中,本文提出的算法的准确率同样是最高的,为98.71%,相较于K-means 算法、SVM 算法和SVM+K-means 算法的准确率分别提升了1.42个百分点、5.88个百分点和3.11个百分点。从表5 中的错误率的比较中可以看出,本文所提出的算法错误率最低,为1.29%。由此可以看出本文算法的性能优于K-means算法、SVM算法和SVM+K-means算法。

表5 四种算法性能比较 单位:%Tab. 5 Performance comparison of four algorithms unit:%

5 结语

本文提出了一种SD-IoT 环境中基于ELVR-Kmeans 算法的DDoS 攻击检测方法,该方法有如下特点:1)将软件定义技术引入到物联网中,从而可以将原本难以部署在物联网中的高性能的、资源消耗大的DDoS 攻击检测系统部署在SD-IoT控制器中;2)通过分析SD-IoT 环境下DDoS 攻击流量的特性,提取出与DDoS 攻击相关的七元组特征;3)针对SD-IoT 中DDoS 攻击检测七元组的特征,提出了ELVR-Kmeans 算法。最后在模拟环境中对本文提出的算法进行测试。测试结果表明,该算法的检测率和准确率相较于SVM+K-means 算法有提升,而错误率则大幅下降。然而,该算法的执行时间略高于传统的K-means 算法,下一步的工作就是要降低算法的执行时间。

猜你喜欢
数据包聚类控制器
一种傅里叶域海量数据高速谱聚类方法
南京溧水电子3款控制器产品
二维隐蔽时间信道构建的研究*
一种改进K-means聚类的近邻传播最大最小距离算法
AR-Grams:一种应用于网络舆情热点发现的文本聚类方法
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
面向国产化的MCU+FPGA通用控制器设计
基于NFV的分布式SDN控制器节能机制
C#串口高效可靠的接收方案设计
基于Spark平台的K-means聚类算法改进及并行化实现