一种SDN环境下的DDoS攻击检测和防御方法与流程

文档序号:26792443发布日期:2021-09-28 23:51阅读:259来源:国知局
一种SDN环境下的DDoS攻击检测和防御方法与流程
一种sdn环境下的ddos攻击检测和防御方法
技术领域
1.本发明涉及网络安全技术,尤其涉及一种sdn环境下的ddos攻击检测和防御方法。


背景技术:

2.sdn是一种新型的网络架构,它能够满足未来网络不断增长的需求。与传统的网络体系结构相比,sdn架构的核心在于控制平面与数据平面的分离。sdn架构通常由三个平面组成:数据平面,控制平面和应用平面。数据平面由充当转发设备的网络交换机组成。控制平面包含至少一个软件控制器,该软件控制器在逻辑上对网络进行集中管理,控制网络中这些转发设备的配置和行为。应用平面是控制器应用程序所在的位置。
3.控制器通过openflow等协议维持与数据平面交换机的联系,并获取当前网络的全局视图,收集网络信息。由于所有网络信息都集中到了控制器中,控制器可以根据所有设备的使用情况和全局流量行为分析下发策略,这有助于网络管理员主动监视和重新配置网络。因此,这种集中式控制使网络变得灵活,并大大简化了网络管理。同时,可编程的软件环境可以适应不断变化的业务需求,促进网络功能创新。
4.ddos攻击通过利用大量被操纵的分布式服务器,对目标发送大量的欺骗性ip数据包,快速耗尽目标的带宽或资源,从而导致目标服务器无法为合法用户提供正常的网络服务。ddos易于启动,难以防御和跟踪,因此很容易对网络造成严重破坏。
5.在sdn的架构中,ddos攻击可以针对于应用层、控制层、数据层中的任一层,ddos攻击在sdn环境下的攻击方法与其在传统网络中相比具有不一样的特点。现有的sdn上的检测和防御ddos攻击的方法多是移植传统网络下的方法实现,没有充分分析sdn环境下的ddos攻击流量特性并利用sdn的特点和优势。


技术实现要素:

6.本发明要解决的技术问题在于针对现有技术中的缺陷,提供一种sdn环境下的ddos攻击检测和防御方法。
7.本发明解决其技术问题所采用的技术方案是:一种sdn环境下的ddos攻击检测和防御方法,包括以下步骤:
8.1)根据数据平面上的交换机中的packet_in消息的统计信息实现检测触发机制,具体如下:
9.1.1)设置窗口值val与数据包速率阈值threshold;
10.1.2)统计源/目的ip无法匹配交换机中的流表项的数据包的个数;
11.1.3)当计数值达到val时,计算消息速率;
12.1.4)将消息速率与数据包速率阈值threshold比较,若消息速率大于数据包速率阈值,触发ddos攻击检测机制;
13.2)识别sdn网络流量特征,根据sdn网络流量特征判断可疑流量是否为ddos攻击;
14.2.1)sdn控制器收到触发ddos攻击检测的通知后,对交换机的流量特征进行提取;
15.用于ddos检测的流量特征如下:
16.a)字节率br(byte rate):单位时间间隔内的流量平均字节数。
[0017][0018]
其中,b
tn
和b
tn
‑1分别表示在t
n
和t
n
‑1之间的某条流比特数,br是在t
n
和t
n
‑1之间某条流的平均比特率。
[0019]
b)流平均持续时间adf(average durations per flow):平均每条流的持续时间。
[0020][0021]
其中,dur
i
表示第i条流的持续时间,num
f
表示采样周期t内流的数目;
[0022]
c)对称流量百分比ppf(percentage of pair

flow):单位时间内对称流数量占总流量数量的百分比。
[0023][0024]
其中,num
pf
表示采样周期t内对称流的数目。
[0025]
d)不对称流量变化率vrsf(variation rate of single flows):单位时间内不对称流的变化率。
[0026][0027]
其中,vrsf表示在时间t
n
‑1到t
n
内,不对称流量的变化率。
[0028]
e)带少量数据包的流量百分比pfsp(percentage of flows with small packets):带少量数据包的流量占总流量百分比;
[0029][0030]
其中,n
p
表示一条流f中的数据包数量,v是设定的数量阈值,f
i
(pn<v)表示第i条带少量数据包的流量。
[0031]
2.2)ddos检测
[0032]
2.2.1)基于k

means的训练数据预处理将所有训练集的数据聚类;
[0033]
输入包括正常组和异常组的训练集数据,每个数据包含5个维度的特征,簇类数为k,进行聚类后输出簇类c=(c1,c2,

,c
k
),质心集cen,半径集r;
[0034]
2.2.2)使用knn算法进行检测时,先比较待测点与各簇类中心的距离,如果离待测点最近的k个类均为正常组或攻击组,则判定该流量为正常流或攻击流;如果最近的k个类位于不同的组中,无法判定待测点类型,则计算待测点与这k个簇类中各点的距离并从中选取最近的k个点,根据这些点的标签来确定检测流。
[0035]
3)缓解可疑流量对于sdn网络的影响;
[0036]
3.1)若检测结果判定为ddos攻击流量,通过控制器收集攻击数据包的入口端口信息,然后通过openflow协议将流表的修改信息发送到发现ddos攻击的交换机,将匹配该ip地址的数据包丢弃;在将流表项插入交换机后,通过入口端口到达交换机的攻击流量将与
阻塞流条目进行匹配,交换机将攻击流量数据包直接丢弃,减轻ddos攻击,阻止攻击流影响网络,在阻断攻击流量后,删除恶意流表项,释放它们在交换机上占用的存储空间;
[0037]
3.2)检测到合法突发性流量后,控制器为其制定新的转发路径,分摊网络中流量的转发压力。
[0038]
本发明产生的有益效果是:
[0039]
1、本发明针对sdn网络控制平面与数据平面分离的特点,提出解决sdn的ddos攻击检测和防御方法,使网络安全和管理更加可靠、灵活,简化了网络管理,由此大大降低网络管理人员困难和劳动强度,显著提升ddos攻击检测和防御工作效率和智能化水平。
[0040]
2、本发明提出了能够更准确区分攻击流的特征,从而实现流量特征提取和ddos攻击检测。
附图说明
[0041]
下面将结合附图及实施例对本发明作进一步说明,附图中:
[0042]
图1是本发明实施例的检测触发机制流程图;
[0043]
图2是本发明实施例的ddos攻击检测机制示意图;
[0044]
图3是本发明实施例的基于k

means的knn检测算法流程图
[0045]
图4是本发明实施例的sdn环境下基于不同流量的防御策略示意图;
[0046]
图5是流表项结构示意图。
具体实施方式
[0047]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0048]
一种sdn环境下的ddos攻击检测和防御方法,包括以下步骤:
[0049]
图1为本发明的检测触发机制的工作流程,本发明通过统计交换机中的packet_in消息来实现检测触发机制。当ddos攻击控制器时,交换机上packet_in消息的出现速率将会急剧增大,因此packet_in消息的速率异常可以作为ddos攻击开始的标志。具体的步骤如下:
[0050]
1)设置窗口值val与数据包速率阈值threshold;
[0051]
2)统计源/目的ip无法匹配交换机中的流表项的数据包的个数;
[0052]
3)当计数值达到val时,计算消息速率(统计周期为当前记录时间和上一次记录时间之差);
[0053]
4)与阈值比较,从而判断是否有异常发生;
[0054]
作为优选,将检测触发机制部署于数据平面上。由于攻击流量会首先到达交换机,所以控制器感知到ddos攻击的时间会慢于交换机。因此将检测触发机制部署在数据平面上,能够减少控制器资源的占用以及控制器与交换机的通信开销。另外,将检测触发机制部署在交换机上,可以在提高检测性能的同时,减轻控制器的负担。
[0055]
图2为本发明的ddos攻击检测机制示意图,网络流量会首先到达数据平面上的交换机,所以本发明在数据平面上部署ddos检测触发模块,对各个交换机上经过的网络流量
进行筛选,找到可能为ddos攻击的异常流。检测触发机制利用交换机上的cpu资源对各个交换机上的数据包进行简单的速率统计,利用packet_in消息速率来判定异常流,如果发现网络中出现可疑流量则告警,通知控制器进行ddos检测。
[0056]
在控制器收到检测通知后,对通过该告警交换机的流量特征进行提取,利用ddos检测算法判定该可疑流是否为攻击流。ddos检测算法由两部分组成:基于k

means的训练数据预处理和基于k最近邻(knn)的流量检测。其中,训练数据包含普通数据和ddos攻击数据。
[0057]
本发明选取的用于ddos检测的流量特征如下:
[0058]
字节率br(byte rate):单位时间间隔内的流量平均字节数。
[0059][0060]
其中,b
tn
和b
tn
‑1分别表示在t
n
和t
n
‑1之间的某条流比特数,br是在t
n
和t
n
‑1之间某条流的平均比特率。
[0061]
流平均持续时间adf(average durations per flow):平均每条流的持续时间。
[0062][0063]
其中,dur
i
表示第i条流的持续时间,num
f
表示采样周期t内流的数目。
[0064]
对称流量百分比ppf(percentage of pair

flow):单位时间内对称流数量占总流量数量的百分比。
[0065][0066]
其中,num
pf
表示采样周期t内对称流的数目。
[0067]
不对称流量变化率vrsf(variation rate of single flows):单位时间内不对称流的变化率。
[0068][0069]
其中,vrsf表示在时间t
n
‑1到t
n
内,不对称流量的变化率。
[0070]
带少量数据包的流量百分比pfsp(percentage of flows with small packets):带少量数据包的流量占总流量百分比。
[0071][0072]
其中,n
p
表示一条流f中的数据包数量,v是设定的数量阈值,f
i
(pn<v)表示第i条带少量数据包的流量。
[0073]
交换机检测到异常流量后,控制器就对经过该交换机的异常流量进行检测。控制器将向交换机发出标准的ofpt_flow_mod消息,该消息可以要求交换机从异常流中缓冲数据包,并将其发送到控制器进行分析。控制器提取到流量的基本信息后,利用上述公式计算流量的五个特征值并存储到数据库中进行检测。
[0074]
传统的knn算法中,通过计算待测点与所有训练数据的距离,并从中选取k个最近的点来判断待测点的类别。
[0075]
作为优选,本实施例采用基于k

means和knn的组合机器学习算法对ddos攻击进行检测,该方法能够平衡检测的准确性以及检测效率。
[0076]
ddos检测算法由两部分组成:基于k

means的训练数据预处理和基于k最近邻(knn)的流量检测。基于k

means的训练数据预处理部分将所有训练集的数据聚类,这样在使用knn算法进行检测时,可以先比较待测点与各类中心的距离,如果离待测点最近的k个类均为正常组或攻击组,则可以直接判定该流量为正常流或攻击流。如果最近的k个类无法判定待测点类型,则计算待测点与这k个簇类中各点的距离并从中选取最近的k个点,不考虑k个簇类之外的训练数据,减少特殊数据对检测算法结果的影响。而在传统的knn算法中,则需要计算待测点与所有训练数据的距离,并从中选取k个最近的点来判断待测点的类别,计算量远大于比较待测点与各类中心的距离,所以当训练集规模越大时,算法的检测效率越低。
[0077]
k

means算法伪代码如下:
[0078]
[0079]
[0080][0081]
图3所示为本发明实现的基于k

means的knn检测过程,首先对数据进行归一化。然后,找到最接近检测到的流向量的k个簇。最近的簇是通过从检测到的流到簇质心的距离来测量的。如果最近的簇都在同一组中,将通过组的标签是正常还是异常来标识流量。如果簇位于不同的组中,则最近的簇中每个点将是新的训练数据集,找到新的数据集中与检测流最近的k个点,根据这些点的标签来确定检测流。这样可以提高knn的效率,并且能够避免一些特殊点对检测结果的影响。算法最终实现正常流和ddos攻击流识别。
[0082]
图4为基于不同流量的防御策略,本发明针对ddos攻击流和合法的突发性流量采取不同的手段来减轻它们对于网络造成的影响。
[0083]
1)ddos攻击流
[0084]
检测到ddos攻击流量后,攻击防御模块将启动。ddos攻击防御模块最重要的任务是阻止攻击流量。本发明中的ddos防御模块部署在控制器上,当控制器检测到ddos攻击流时,收集攻击数据包的入口端口信息,然后通过openflow协议将流表的修改信息发送到发现ddos攻击的交换机,将匹配该ip地址的数据包丢弃。
[0085]
控制器首先向发现异常流的交换机发送“ofpfc_add”信息,在交换机的流表中插入新的流表项,这些流表项用来实现将攻击数据包丢弃这一行为。在这些流表项中,header fields字段的ingress port设置为攻击流量的入口端口,ip dst address设置为攻击数据包的目标地址,actions字段设置为“drop”,这个流表项可以将符合条件的数据包丢弃,能够有效地阻止恶意攻击流。同时,该流表项的优先级需要比该交换机中的任何其他流条目都高,才能让交换机在收到ddos攻击数据包时首先匹配这一流表项,所以需要将该流表项设置为最高优先级。在将流表项插入交换机后,通过入口端口到达交换机的攻击流量将与阻塞流条目进行匹配,交换机将攻击流量数据包直接丢弃,减轻ddos攻击,阻止攻击流影响网络。图5所示即为交换机中的流表项结构
[0086]
但是,在成功阻止攻击流量后,交换机仍然会存在大量因ddos攻击产生的恶意流条目。这些流条目是无用的,同时,这些流条目会浪费交换机的存储空间。因此,在阻断攻击流量后,还需要删除这些恶意流表项,释放它们在交换机上占用的存储空间。控制器向ddos攻击流经过的交换机上发送“ofpfc_delete”信息,交换机收到该信息后,会删除掉对应的恶意流表项,释放交换机上的存储资源。
[0087]
2)合法的突发性流量
[0088]
如果检测触发机制检测到交换机上存在异常流,而对该流量检测时检测算法没有将该流判定为ddos攻击流,那么经过该交换机的流量可能为突发性的大流,此时需要对这种合法的突发性流量进行调度,防止它对网络造成拥塞。
[0089]
检测到合法的突发性流量后,为了避免它在网络中造成拥塞,控制器需要为其制定新的转发路径,分摊网络中流量的转发压力。要更改流量转发路径,首先需要生成流表项的更新信息,更改流表中原有的路径转发信息。然后,控制器通过openflow协议将流表项的修改信息发送到检测出异常流量的交换机,交换机收到更改流表项的指令后并执行后,根
据新的流表项将数据包从交换机上的另一个出端口发送出去,实现流量路径的重新规划。
[0090]
在sdn中,有两种方法可以用来对交换机上的流表项进行更新。其中一种方式是修改原流表项。控制器向交换机发送“ofpfc_modify”信息,直接修改交换机上原来的流表项。交换机收到控制器发送的指令后,开始在流表中查找与“ofpfc_modify”指令中信息匹配的流表项,成功匹配后按照该指令更新流表项,将原来流表项中的actions字段修改为将数据包从交换机的新的端口发送。如果没有找到对应的流表项,则交换机会向流表中增加一条新流表项,包含指定actions和匹配字段。
[0091]
另一种是增加新流表项。控制器向发现到异常流而未检测出攻击流的交换机上发送“ofpfc_add”信息,往该交换机的流表中增加新的流表项。同时为了让交换机能够按照新的流表项对数据包进行转发,控制器需要为新的流表项的设置比原流表项更高的优先级,当交换机收到数据包进行流表匹配时,会首先选择优先级较高的新流表项进行匹配,而不是匹配优先级较低的原流表项,一段时间后此流表项会被系统判定超时并进行删除。但是增加新流表项的方法与修改的方法相比,它需要占用更多的交换机的存储资源,增加交换机的负担,所以本发明采用修改原流表项的方法。
[0092]
应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1