于是,鉴于SDN网络体系结构具备的特点,构建兼具高效性与合理性的安全防御机制,以此保障网络用户正常的信息安全,这是在设计与部署整个SDN网络架构之际必须予以认真考量的关键问题中的一个。并且当下针对DDoS攻击检测以及防御的研究仍旧不够成熟,所以,就怎样有效防护SDN网络免遭DDoS攻击这一问题而言,当前已然成为SDN安全领域的研究热点。尽管网络管理员能够识别潜在的攻击,然而要持续地实时且有效地识别已然发生的攻击是极为困难的。所以,深入去研究对SDN里DDoS攻击进行能快速检测以及可有效抵御的办法,具备相当重要的理论指向意义,还有实践方面的意义。
依据上述所说,本系统主要是针对传统网络里预防DDoS攻击时存在的配置复杂的问题,以及设备昂贵等问题,进行尝试,并在SDN环境当中去实现DDoS的预防以及处理,以此保证网络安全。会模拟创建以控制器作为中心的SDN网络,利用深度学习算法针对DDoS攻击流量建立预测模型,从而使得在新流量到达之际能够及时地做出准确无误的判断,接着通过开源控制器来实现流量调度,进而增强整个网络环境的安全性。
研究价值:
DDoS攻击向来是SDN网络遭遇到的最大威胁当中的一个,还是互联网上极具破坏性的攻击当中的一个,可是当下针对SDN网络里DDoS攻击检测以及防御的研究仍旧尚不成熟。
于是,存在着这样一种必要性,那就是去设计并且实现一个网络管理系统,这个系统是面向客户端的,它要在SDN环境之中,运用深度学习算法来检测DDoS攻击,还要借助回溯策略以及使用控制器下发策略去抵御攻击。该系统的后端能够提供DDoS攻击检测以及抵御服务,系统的前端则依靠RESTAPI以展示全局网络信息,。以控制器为核心,运用Mininet模拟创建SDN网络,借助上述运算方法针对DDoS攻击流量构建预测模型,以便在新流量抵达之际能够迅速给出精准判定,接着借助开源控制器Floodlight达成流量调度,强化整个网络环境的安全系数。最终运用Hping3工具模拟DDoS攻击来证实系统能够开展实时且高效的防御。本系统借助SDN架构所具备的优势特性,针对传统DDoS攻击检测与抵御策略里存在的如下问题进行应对,这些问题包括配置繁杂、设备价格高昂,并且检测精准度低、反应时间迟缓、抵御成效欠佳等,进而提出了一套面向SDN的DDoS深度防御办法。经过搭建采用控制器作为中心的SDN网络,借助利用深度学习算法构建预测模型,达成在新流量抵达的时候能够及时予以准确判断,经由开源控制器达成流量调度,运用回溯策略下达控制方案对恶意流量作区别处理,并实现对于DDoS攻击的检测与防御功能,以此增强整个网络环境的安全性。与此同时,网络拓扑的设备信息、路径信息、流量信息之类能够通过RESTAPI在图形化界面予以显示,从而方便用户操作 。本系统主要针对传统DDoS攻击检测与抵御策略里的各类问题,这些问题包括配置复杂,设备昂贵,检测精度较低,反应时间偏慢,抵御效果欠佳等,尝试于SDN环境中达成DDoS的预防以及处理,以保证网络的安全。将运用深度学习算法,依据训练集自动构建模型,当实际流量经过之时,可以实现实时动态应对,进而缩短应对时间,让设备遭受攻击的时间得以进一步缩短,减少网络资源的损失。
这是一种被称作分布式拒绝服务攻击的行为,其攻击的种类以及攻击的方式呈现出复杂且多样的特点。本系统所主要针对的,乃是建立在SYN泛洪攻击基础之上的检测以及防御工作。SYN泛洪攻击属于一种协议DDoS攻击,进行攻击的一方会利用TCP三次握手协议所存在的漏洞,借助伪造的IP地址向目标服务器攻击者发出TCPSYN,SYN属于TCP三次握手中的首个数据包,而等服务器返回ACK之后,该攻击者却不对其展开再确认,如此一来这个TCP连接便陷入挂起状态,等同于所谓的半连接状态,情况如图所示。要是服务器收不到再确认的话语,那么就会再次重复发送ACK给进行攻击的人,如此一来便会进一步地造成服务器资源的浪费。攻击者朝着服务器发送数量非常巨大的这种TCP连接,于是系统就得在内存里维持一个规模庞大的等待队列,用以维护全部的半开连接,最终致使连接超时。在连接超时以前,恶意数据包达到了积压队列的限制,从而使得所有新到来的SYN请求都会被舍弃掉,合法用户也会被拒绝提供服务,也就是服务器没办法为用户给予正常的服务。
SYN泛洪攻击,于一般情形下,检测以及防御颇为困难,缘由是它们伪装成源自多个地址的正常流量,借由组织单个来源的方式,没能真正达成对SYN泛洪攻击的防御。SYN泛洪攻击,如图所展示的那样:
实践理论依据:
针对SDN网络里的DDoS攻击,当下已然存在诸多研究成果,主要划分成基于信息熵以及基于流表特征的检测技术。基于信息熵的DDoS攻击检测技术,熵是信息论里用以表征随机程度的概念,能够借助熵值去衡量网络中的随机性。基于流表特征的DDoS攻击检测技术,鉴于SDN网络把数据的转发与控制相分离,数据的转发规则是由控制器指定并下发到交换机中,然后由交换机依照规则开展流量的匹配转发。所以,交换机流表项里存有极为丰富的信息,这里面涵盖了传统网络从一层到三层网络的详尽信息。所以,能够借助设置流表项的匹配规则,来针对经由交换机的数据流量开展统计计数,从其中提炼出一组流量特征去检测DDoS攻击。我们所选用的技术是在基于流表特征实施检测的基础之上,考量了熵值引发的影响,进而达成更优的准确率和时效性。
本系统的总体架构,其整体架构被构成包含四部分,这四部分分别是仿真网络环境,以及深度学习模型,还有Floodlight控制器,另外是客户端,如图所呈现的那样。
借助Mininet网络仿真,搭建起来SDN网络环境,模拟真实情境以产生流量,并实施主机之间的流量传输;Mininet是一个基于LinuxContainer架构所开发的轻量级网络仿真以及测试平台,同时是当前研究SDN架构的首选仿真平台。该网络仿真平台能够于单一操作系统之上模拟网络设备,比如主机呀,交换机呀,路由器等,这些网络设备属于真实的实体,只不过借助软件来达成,然而在多数情形下,运用软件定义的网络设备,其行为特征都和硬件元素相类似,并且还能够把在Mininet上开展的仿真实验,毫无缝隙地迁移到实际应用场景里。凭借深度学习算法构建预测模型,把已训练完成的那个模型转变为PMML文件,并将其封装成一个类,当控制器提取出相关流量特征之后,调用这个类去实时查证网络里是不是存在DDoS攻击。通过使用Floodlight控制器来开展流量控制,达成了能动态调整的攻击抵御方案;Floodlight控制器是基于Java语言研发的,具备颇为高的性能以及可靠性,属于业界最受认可的商业控制器软件。Floodlight控制器借助模块化这一设计思路来达成有关应用的目标。组成 Floodlight 的有三部分,分别是控制器核心服务模块,普通应用模块 ,以及 REST 应用模块 。其架构如图所示:
客户端借助控制器给出的接口,呈现全局网络信息,去查询设备信息,并且能够凭借下发流表之类的操作来开展网络流量管理。
系统架构:
深度学习训练模块
三个部分构成此模块,即数据预处理模块,还有特征处理模块,以及模型训练模块。数据预处理模块,主要承担初步处理用于训练的原始数据集的职责。它要过滤数据,把一些明显无意义的数据删掉,还要插补缺失值,对非数值类型数据做数值化处理等。特征处理模块,主要负责筛选特征。它要借由筛选关键特征,来减少噪声对模型的干扰,并且尽可能防止出现过拟合的现象。模型训练模块承担着主要职责,通过对关键参数予以调整,来构建DNN分类模型,展开针对模型的训练,目的是让模型能够得到尽可能高的准确率,最终把训练好的深度学习模型的关键参数,保存至PMML文件里。
DDoS攻击检测模块
该模块是基于Java语言所开发的,它主要属于流量获取模块,此模块负责经由中央控制器Floodlight获取流量分类所需要的关键特性,像MAC地址、IP地址、数据包长度、Seq字段以及ACK字段等。它会把这些已经获取到的流量特征当作调用分类预测模块时候的输入,最终输出该流量是不是DDoS攻击流的预测结果。
DDoS攻击防御模块
这个模块是依据Java语言打造的,主要是对着DDoS攻击检测模块的结果,借助中国高校计算机大赛-网络技术挑战赛选拔赛阶段作品设计文档13/39中央控制器Floodlight经由南向接口OpenFlow协议达成相应的控制处理。要是检测到某流量属于正常流,就会依照原规则安全转发。要是检测到某流量是攻击流,就会自动把防火墙规则设定为阻塞对应IP,并且通过控制器下发流表来设定相应的丢弃策略。基于此情况,我们达成了那借助网络流量自适应调度的DDoS攻击防御算法,充分运用受害者相邻处的交换机去减轻DDoS攻击的恶意流量。并且达成回溯动态调度,依靠过滤器更新评分机制落实流表项动态掌控。
数据介绍:
对采用CICDS2017和CICDDoS2019(这个数据预处理数据集)来说,其总流量条数超过200万,经由Scapy库中的rdpacp()方法,把它的数据格式转换为csv格式,进而为流量分类并打上标签,其中0表示正常流量,1表示SYNflood流量,还运用sklearn的preproccessing库处理训练所用的原始数据集 。
在那样相对较大的数据集合当中,难以避免地会出现某些存在错误的数据,所以呢,需要开展数据清洗工作,把一部分明显没有意义的特征列,或者特征值缺失超过三分之二的数据给删除掉。能够采用Imputer的热卡填充法来处理缺失的数据,也就是从数据集合里寻找到一个跟该条流极为相似对象的值,以此来达成填充的目的。要把非数值类型的数据转化为数值型的数据,以便于后续的输入。
特征处理

在运用机器学习算法针对高维数据开展处理分析之际,合理地挑选数据的特征,对于算法的实现效果有着极大的影响,通过简化数据能够让数据集更易于使用,而且具备去除噪声以及降低算法的计算开销等诸多优点,原的数据存在着大量特征,所以我们要针对此进行特征降维,在确保不影响结果的前提条件下,降低数据集中特征的数目,挑选关键的特征来进行分析,如此一来,不但能够减少噪声对模型的干扰,还能够提高模型的准确率,并且能够尽可能地避免过拟合 !用以进行特征处理的常用办法涵盖时间戳处理,离散型变量的独热编码,交叉特征,特征缩放,特征选择以及特征提取。在此处的特征处理之中,主要运用的是特征缩放以及特征选择手段。
特征缩放
对于那些数据特征量纲不一样的数据,是不可以放在一块儿进行比较的。所以呢,我们思索着把数据进行归一化,把它的取值范围映照到区间,让它不再受到取值范围的作用,进而提升分类的精准度。针对这个情况,我们运用MinMaxScaler最大最小值归一化方式,就像下面这个式子所呈现的那样,这里面x是变量,min是最小值,max是最大值。
特征选择
先从原始特征数据集中去找出,能让分类达成效果最优的特征子集用作关键特征,接着删减掉冗余的特征,以此降低特征间的不相关或者冗余信息,进而使模型评估实现最优,随后使用随机森林算法对特征的重要性予以排序,情况如图所示。
以上图进行观察,我们能够从中看出,重要性排在前 6 位的特征,分别是 tcp.seq,也就是 TCP 的 seq 字段,还有 ip.len,即 IP 数据包的长度字段,以及 tcp.ack,也就是 TCP 的 ACK 字段,再者是 tcp.hdr_len,这是 TCP 的头部长度,另外还有 tcp.tsval,此为 IP 数据包的生存时间字段。按照上述所得到的结果,将数据集中对于模型性能提升影响较小的那些特征予以删除,这样做既能够保证准确率,又可以提高模型的训练速度。
借助Sklearn库当中的MLPclassifier去达成DNN模型,Sklearn乃是机器学习范畴内颇为知名的python模块,Sklearn涵盖了诸多类不同的机器学习途径,其中有分类模块,有回归模块,有数据降维模块,还有模型回归等模块,核心代码呈现如下:
进行DDoS攻击检测的模块,该模块又被区分成两个子模块,其中一个是流量获取模块,另一个是分类预测模块。
流量获取模块
在以OpenFlow协议为基础构建出的SDN网络范畴内,当交换机于某特定端口那里承接收到一个数据包之时,会把当下这个数据包拿去跟默认流表的流表项进行匹配,要是匹配顺利成功了依据情况执行流表项当中所含有的相应动作,若匹配不成功则会触发去执行下发流表模式。交换机把该数据包的头部进行封装从而形成Packet_IN消息之后交予控制器去进行决策,其余的部分则存储在TCAM里面,Packet_IN消息的信息结构如同表格所呈现的那样 。
于Floodlight模块里要获取Packet_IN消息,仅需对相应消息类型予以监听就行,接着在receive方法当中能够对监听到的Packet_IN消息的header以及payload实施操纵与解释。借由基于Java的中央控制器Floodlight从而监听获取Packet_IN消息,在得到Ethernet对象后,能够借助其内置的get和set方法去提取流量的相关特征信息。此次所讲到的这个模块,它提取出来的那些特征字段,涵盖了源mac地址,还有目的mac地址,另外也包含源ip地址,以及目的ip地址,除此之外,还有tcp的seq字段,并且还有tcp的ack字段等等 。
分类预测模型所需的输入,是由流量提取模块提取出来的流量特征,该流量特征被分类预测模块作为依据拿来使用。流表所展现的特征信息,具体表现在这样的状况之中:
DDoS攻击防御模块
DDoS攻击防御新流量,主动下发调度流,到达OpenFlow交换机,进行流表项匹配,若成功,依据流表信息处理流量,否则,封装成Packet_IN消息,交给Floodlight控制器决策,由控制器监听并提取特征,调用分类预测模块,使用深度学习模型,且该模型已训练好。倘若那个流量预测表现结果为0即正常的流的话,那么下达action是输出的流表项,把数据包传运输送到目标所属服务器的端口那儿,不然的话就调用DDoS攻击防御模块,下达丢弃规则。系统整个处理流程的图示是像这样的:
DDoS检测模块发觉攻击流之后,DDoS防御模块会被开启用以抵御DDoS攻击,借助基于Java的中央控制器Floodlight向交换机发送相应流表项,防止再度触发Packet_IN消息致使资源殆尽,下面这张表是所规划的流表项内容,策略是舍弃抵达被攻击端口的数据包,并且将优先级设定为最小以使现存流表项依旧能够匹配对应数据包,也就是用户的合法服务请求不会被禁止。采用此种方式,防止DDoS攻击者运用大量Packet_IN消息,对中央控制器Floodlight展开冲击,最终达成防御DDoS攻击之目的。
有一种基于网络流量自适应调度的 DDoS 攻击防御算法,它是在主动下发调度流规则技术的基础上形成的。当把受害者交换机里未匹配到流表项的数据包调度到邻居交换机时,并非平均分配给每个邻居交换机,而是依据邻居交换机总的 Packet - in 报文实时上传速率,自适应地去调整调度到每个邻居交换机的网络流量大小,从而让每个邻居交换机最后上传到控制器的 Packet - in 报文速率趋向于相等。存在这样一个流程图,它所展示的是,基于网络流量自适应调度的,DDoS攻击防御算法的流程情况,具体呈现如图所示 。
该流量自适应调度块,其任务是把那个受害者交换机的网络流量,调度至邻居交换机;接着是流表下发模块,它负责把网络流量调度模块所定制的调度流规则下发到受害者交换机。有一种情况是,在控制器主动去下发调度流程规则的时候,能够达成把受害者交换机的网络流量调度到邻居交换机这个目的。有一种基于网络流量自适应调度的DDoS攻击防御算法,当它在调度受害者交换机那儿的网络流量到邻居流量时,会依据邻居交换机总的上传Packet-in报文状况,去实时调整调度到每一个邻居交换机的网络流量大小。系统整体处理流程图如图:
实验结果:
归根结底的测试结果显示出来,系统能够于毫秒级别的时间当中,快速地检测出 DDoS 攻击,准确率处于 99.5%以上,并且能够及时地自动去下发缓解策略,达成防御 DDoS 攻击的成效。