一种基于机器学习的SDN流表溢出攻击检测与缓解方法转让专利

申请号 : CN202111323738.8

文献号 : CN114050928B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 汤澹严裕东张冬朔王思苑王小彩李诗宇

申请人 : 湖南大学

摘要 :

本发明公开了一种基于机器学习的SDN流表溢出攻击检测与缓解方法,属于网络安全领域。所述方法包括:基于OpenFlow协议,轮询OpenvSwitch流表项,形成原始数据;解析流表项的各字段,分为“特征”和“标识”两组,结合网络测量准则,计算流表项的五种特征及其属于“大象流”、“小鼠流”和“攻击流”的标签,作为原始数据集;采用监督学习训练流表项分类模型,并部署在OpenvSwitch中;OpenvSwitch中的实时攻击缓解系统监控流表占用率,若超过阈值,则判定发生流表溢出攻击,系统利用模型预测流表项的驱逐得分并排序,按顺序删除一定数量的流表项以释放流表空间。本发明中的流表溢出攻击检测与缓解方法检测率高,系统开销低,兼容SDN环境,能实现对流表溢出攻击的精准检测和实时缓解。

权利要求 :

1.一种基于机器学习的SDN流表溢出攻击检测与缓解方法,其特征在于,所述流表溢出攻击检测与缓解方法,包括以下几个步骤:

步骤1、流表数据采样:以SDN配置的软超时为采样周期,实时获取SDN交换机中的流表信息,记录流表中存储的每个流表项,形成流表溢出攻击检测的原始数据;

步骤2、流表字段划分:解析SDN流表数据中的各字段,并将所有的字段分为“特征”与“标记”两类,其中,“特征”类字段反映流表的常用程度和活跃水平,具体包括流表持续时间、流表匹配包数以及流表累计匹配字节数三个字段;“标记”类字段则是流表项的唯一标识,用作识别特定的流表项,具体包括流表中的匹配域,即流表项的IP源地址、IP目的地址、源MAC地址、目的MAC地址和网络协议类型五个字段;

步骤3、流量类型标记:将SDN流表中的流表项划分为三类,用于训练流表溢出攻击检测与缓解模型,具体是:将所有的正常流表项,依据其数据传输的紧急程度,分为“大象流”和“小鼠流”,标签分别为0和1;将对应攻击的流表项标记为“攻击流”类,标签为2;

步骤4、分类模型训练:基于步骤2中所提取的流表项三个“特征”字段,提取流表项的五个特征值,联合步骤3中流表项的三种不同标签,采用机器学习中的监督学习算法,训练一个流表项三分类模型;

步骤5、攻击判定检测:控制器每秒获取SDN交换机中的流表项数量,若某一时刻流表项的数量超过了预设的阈值,则判定发生了流表溢出攻击;

步骤6、流表溢出缓解:当步骤5判定发生了流表溢出攻击时,首先,利用步骤4中获取的流表项三分类模型,预测当前交换机中的所有流表项的标签,以检测哪些流表项可能属于“攻击流”;然后,基于步骤4训练得到的流表项三分类模型,计算全体流表项的概率向量,以三元组形式表示,分别表示该流表项可能属于“大象流”、“小鼠流”和“攻击流”的概率;然后,使用每条流表项的概率向量进行加权计算,即将该流表项分别属于各标签的概率与设定的权重相乘后累加,得到每条流表项的驱逐得分,其中,概率向量中的“攻击流”概率具有最高的权重,“小鼠流”权重次之,“大象流”的权重最低,接着,将交换机中所有的流表项,依据各自的驱逐得分从高到低排序,排名越靠前,流表项的驱逐优先级越高,此时,“攻击流”具有最高的驱逐优先级,属于正常流量但数据传输效率较低的“小鼠流”次之,而数据传输紧急程度高的“大象流”最不可能被驱逐;最后,使用OpenvSwitch命令行删除被预测为“攻击流”的流表项,并强制删除具有最高一定比例的驱逐得分的流表项,以释放流表空间。

2.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤1中的流表数据采样基于软件交换机OpenvSwitch,软件交换机以预先配置的软超时时间为间隔,采用OpenvSwitch命令行脚本程序,提取流表中的所有流表项记录,形成原始流表数据。

3.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤3中区分“大象流”和“小鼠流”两种正常流量的“数据传输紧急程度”的定义是流表项的平均数据传输速度,具体为:基于流表项“特征”字段,计算流表累计匹配字节数与流表持续时间两个字段的比值,得到流表项的平均数据传输速度,再基于网络测量指标,将具有最高20%的平均数据传输速度的流表项划分为“大象流”,其余80%的流表项则为“小鼠流”。

4.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤4中的流表项分类模型的训练,包含两个步骤:

步骤4.1:基于步骤2中所提取的流表项三个“特征”字段,提取流表项的五个特征值,分别是:流持续时间、流匹配包数、流匹配字节数、平均包大小以及平均包到达间隔;

步骤4.2:基于流表项在步骤4.1中所提取的五个特征值及其在步骤3中获取的标签,采用监督学习算法,训练一个流表项三分类模型,具体是:采用集成学习方法GBDT,设定特征个数等于所提取的特征值数量,进行多分类器的训练。

5.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤5中,流表溢出攻击检测的阈值是90%,即当前流表项数量达到或超过交换机流表最大容量的90%时,判定流表剩余空间不足,可能受到流表溢出攻击,需要进一步的攻击缓解措施。

6.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤6中的流表项驱逐得分的计算方式为:‑P(e)+P(m)+2P(a),其中,P(e),P(m),P(a)分别为流表项分别属于“大象流”、“小鼠流”和“攻击流”的概率,其中“大象流”、“小鼠流”和“攻击流”的权重分别为‑1,1和2。

7.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤6中,缓解流表溢出攻击时,若被预测为“攻击流”的流表项数量不足,该方法将强制删除具有最高一定比例驱逐得分的流表项,该比例的设定区间适中,为10%‑30%,一方面保证释放充足的流表空间,以缓解流表溢出攻击,另一方面,可以避免原有正常流表项被大量删除。

8.根据权利要求1中所述的流表溢出攻击检测与缓解方法,其特征在于,步骤6中,流表项的驱逐基于流表项的唯一标识,即使用“标记”字段定位所需驱逐的流表项,并执行删除动作。

说明书 :

一种基于机器学习的SDN流表溢出攻击检测与缓解方法

技术领域

[0001] 本发明属于计算机网络安全领域,具体涉及一种基于机器学习的SDN流表溢出攻击检测与缓解方法。

背景技术

[0002] SDN作为一种新兴的网络体系结构,将传统的TCP/IP网络中的网络层数据和控制平面解耦,降低了数据平面的复杂度,丰富了控制平面的功能,提供了良好的可编程性,极大便利了计算机网络领域内的应用部署和创新;然而,这种新型的网络结构同时也带来了一些独有的安全问题,SDN本身的安全性问题得到了广泛的关注。
[0003] SDN中简化的数据平面仅负责数据包的匹配与转发,该步骤在SDN交换机中进行。在SDN交换机中,流表是最为关键的组件,负责存放数据包转发规则。当数据包到达交换机时,数据包头部字段与流表中现有流表项的匹配域进行匹配。若匹配成功,则执行流表项指定的相应转发动作,否则SDN交换机以Packet‑In消息上报控制器,安装新的流表项。
[0004] SDN交换机中的流表通常存放于三元可寻址地址存储器(TCAM)中,TCAM具有良好的性能,能满足快速的流表项匹配需要,然而,受到芯片的物理条件限制,TCAM的功耗大,存储空间十分有限,这使得流表的容量通常较低,有时无法应对大量的网络流量场景。因此,攻击者有可能利用流表空间资源的强竞争性,发动恶意的资源消耗型攻击,使得流表空间被攻击流表项占满直到溢出,此时,流表不能够为正常流量提供转发服务。
[0005] 本发明针对SDN数据平面中所面临的交换机流表溢出攻击安全隐患,基于保护SDN安全性和可用性的目标,提出了一种基于机器学习的SDN流表溢出攻击检测与缓解方法。该方法直接部署在SDN交换机上,首先通过轮询流表,计算当前流表项的总数和流表占用率来判断是否发生溢出攻击;若发生了溢出攻击,则提取各流表项的流量数值统计特征和流量源与目的地址等标识信息,依据相关特征值和分类标签,采用GBDT监督学习算法,构建流表项的分类模型并进行分类预测;然后,对于流表中的每个流表项,依据其预测标签和概率向量,计算得到驱逐分数,并按照驱逐分数从高到低,重新排序流表;最后,SDN交换机删除被预测为攻击以及驱逐分数较高的流表项,实现流表溢出攻击的缓解。该方法能够实际部署在SDN体系结构上,实现对流表溢出攻击的实时检测与缓解,误报率和漏报率低,能适应多种网络状态。因此该检测方法可用于SDN网络,以准确检测与缓解流表溢出攻击。

发明内容

[0006] 针对SDN交换机所面临的流表溢出攻击安全隐患,并保护SDN流表在高流量场景下的可用性,提出了一种基于机器学习的SDN流表溢出攻击检测与缓解方法。该流表溢出攻击检测方法的检测精度较高,误报率和漏报率低,算法开销小,能作为用户程序部署在SDN交换机上,且能同时适应正常的高速率流量和恶意流表溢出攻击两种场景,因此该检测方法可普适于准确、实时检测SDN中的流表溢出攻击,并保护流表的可用性。
[0007] 本发明为实现上述目标所采用的技术方案为:该流表溢出攻击检测与防御方法主要包括六个步骤:流表数据采样、流表字段划分、流量类型标记、分类模型训练、攻击判定检测、流表溢出缓解。
[0008] 1.流表数据采样。基于软件定义网络所采用的OpenFlow协议,通过SDN控制器消息或SDN软件交换机OpenvSwitch的命令行程序,以一定的时间间隔周期,实时获取交换机中的流表项数据及其数量统计信息,并记录每次获取到的交换机全部流表字段数据,形成检测攻击的原始数据。
[0009] 2.流表字段划分。根据所提取的SDN流表项包含的不同字段,解析这些原始获取的流表项信息,将流表字段划分为“特征”和“标识”两类,形成初步的数据集。
[0010] 3.流量分类标记。根据所提取的“特征”类和“标识”类字段,计算每一条流表项的特征值,再将所有的流表项分为“大象流”、“小鼠流”和“攻击流”三类,并分别给予不同的标签,以供后续步骤中基于机器学习的流表分类器模型的构建。
[0011] 4.分类模型训练。对于每一条流表项,将其对应提取的特征值,与该流表项的实际标签联合,形成最终的数据集,再采用GBDT监督学习方法,训练一个流量的三分类模型。
[0012] 5.攻击判定检测。将训练好的流表项三分类模型部署在交换机上,并每隔一段较短的时间,计算一次当前流表中的流表项条目数量。若某一时刻流表项条目的数量高于流表最大容量的90%,则判定当前可能出现了流表溢出攻击。
[0013] 6.流表溢出缓解。当判定发生了流表溢出攻击时,流表项三分类模型将预测每一条流表项的标签和概率向量,以确定哪些流表项应当被删除以释放流表空间,并对相应的流表项执行驱逐操作。
[0014] 有益效果
[0015] 该SDN流表溢出攻击检测与缓解方法能够充分兼容SDN环境、OpenFlow协议和OpenvSwitch软件交换机,并能够实际部署在SDN交换机上,实现流表溢出攻击的实时检测和缓解。针对流表溢出攻击,本发明中的检测和缓解方法较为全面,一方面能够从宏观角度,准确识别流表溢出的整体现象,检出SDN交换机是否发生流表溢出,另一方面能够针对攻击的本质特征,即从每条流表项的微观角度入手,分析攻击流表项与正常流量之间的差别,并采用机器学习技术进行分类。该方法检测的准确率较高,针对流表项的分类较为精准,且攻击的缓解方法即时有效。因此,该检测方法可用于SDN网络环境,实现流表溢出攻击的精准、实时检测和缓解。

附图说明

[0016] 图1为正常网络环境下的流量统计特征图。在正常网络环境下,绝大多数的流量均为短连接,即持续时间较短,传输的包数和字节数均较小,而较为紧急、传输速率较快或传输大量数据的单个流量出现的频率很低。
[0017] 图2为SDN环境下的流表溢出攻击模型。该攻击模型包含三个参数:攻击周期(AP)是指为了维持攻击流表项,攻击者需要以一定周期不断重新发送攻击数据包,以确保攻击流表项不被流表的软超时机制清除;攻击步长(AS)是攻击者在两个相邻AP之间多发送的数据包数量,设定AS的目的一方面是为了维持较低的攻击速率,另一方面是保持较高的攻击隐蔽性,让攻击流表项缓慢增长,不易被发现;最大攻击强度(MAS)是指攻击者所拥有的全部攻击规则数量。
[0018] 图3为网络流量依据所提取的五维特征值所组成的特征向量进行三分类的示意图。基于流表项中的统计特征,可以通过机器学习技术,学习各种类别流量的形态特征,从而实现不同类别流表项以及攻击流的精准识别。
[0019] 图4为各类别流表项的ES分布示意图。“大象流”、“小鼠流”和“攻击流”经过模型预测、概率向量和ES加权计算之后,所得到的ES分布在三个显著的特定区间内。
[0020] 图5为未部署与部署了流表溢出攻击缓解系统情况下,流表中的流表项成分对比。
[0021] 图6为一种基于机器学习的SDN流表溢出攻击检测与缓解方法的流程图。

具体实施方式

[0022] 下面结合附图对本发明进一步说明。
[0023] 如图6所示,该流表溢出攻击的检测方法主要包括六个步骤:流表数据采样、流表字段划分、流量类型标记、分类模型训练、攻击判定检测、流表溢出缓解。
[0024] 1.流表数据采样。采用OpenFlow消息事件OFPFlowStatsRequest/OFPFlowStatsReply或OpenvSwitch命令行指令程序,对交换机流表进行轮询采样,获取当前交换机流表中的全部信息。
[0025] 对交换机流表的轮询采样间隔与SDN流表配置的软超时时间相同,避免非活动的流表项在数据集中产生大量的重复数据条目。
[0026] 轮询交换机流表时,同时统计当前流表中所包含的流表条目数量。该指标是后续步骤中及时预警并检测流表溢出攻击的重要依据。
[0027] 所提取的流表项数据至少应当包括如下几个字段:
[0028] 网络协议类型、流表持续时间、流表匹配包数、流表匹配字节数、IP源地址、IP目的地址、MAC源地址和MAC目的地址。
[0029] 2.流表字段划分。将步骤1中所提取的各流表字段划分为“特征”和“标识”两类,形成初步的数据集。
[0030] “特征”类字段反映流表项的活跃行为,可用于提取特征值以构建检测分类模型,具体包括以下三个字段:“流表持续时间”、“流表匹配包数”和“流表匹配字节数”。
[0031] “标识”类字段能够唯一标识特定的流表项,将被用于定位被驱逐流表项,执行释放流表空间的操作。该类字段包括“IP源地址”、“IP目的地址”、“MAC源地址”、“MAC目的地址”和“网络协议类型”五个字段。
[0032] 同一个流表项的“特征”类和“标识”类字段是对应关系,即该组“标识”用于唯一定位一条具有该“特征”的流表项。
[0033] 3.流量分类标记。根据每一条流表项的“特征”类和“标识”类字段,将每一条流表项标记为“大象流”、“小鼠流”和“攻击流”之一,并给予不同标签,形成最终用于训练流表项分类模型的数据集。
[0034] 具体的分类标记方法为:首先根据“标识”类字段中的“IP源地址”字段,区分正常流表项和“攻击流”。若“IP源地址”为攻击者的IP地址,则该流表项被标记为“攻击流”;其余的流表项将被视为“正常流”进入下一轮标签分类。
[0035] 对于所有正常IP对应的“正常流”流表项,计算其数据传输速率。根据网络测量的相关准则,具有最高20%数据传输速率的流表项被标记为“大象流”,其余80%的流量被标记为“小鼠流”。
[0036] 流表项的传输速率,为流表项“特征”类字段中“流表匹配字节数”与“流表持续时间”的比值。
[0037] 将正常流量划分为“大象流”和“小鼠流”的依据是:网络测量的相关指标。图1为正常网络环境下的流量统计特征图,展示了该指标的相关度量。在一个正常的网络环境中,大多数的流量都具有持续时间短、传输数据量少的特点,称为“小鼠流”;仅有少数的流量持续时间长、传输数据量大,被称作为“大象流”。
[0038] 将正常流量划分为“大象流”和“小鼠流”的目的是:保证网络数据的传输效率。“小鼠流”往往数据传输效率较低,而“大象流”负责大量数据的传输,传输时间长,效率高。为了有效保护“大象流”所对应的SDN流表项,本发明将正常流量划分为“小鼠流”和“大象流”两种类型,当流表受到溢出攻击时,“小鼠流”将优先于“大象流”被驱逐,从而有效保证了“大象流”的网络传输效率。
[0039] 在本发明中,“大象流”、“小鼠流”和“攻击流”的标签分别为0,1和2。
[0040] 在步骤2中,所得到的流表项分类标签和每条流表的“特征”类与“标识”类字段是一一对应关系,即数据集中的每条流表项均对应一个分类标签。
[0041] 4.分类模型训练。采用监督学习算法GBDT,对步骤3中带标签的流表项数据集进行训练,得到一个流表项三分类器模型。
[0042] GBDT模型训练所需的特征是反映流表项行为的五种特征值。该五种特征值均可以从流表项的“特征”类字段直接或间接提取,具体如下:
[0043] 持续时间(DT):即流表项的“流表持续时间”字段。
[0044] 传输包数(TP):即流表项的“流表匹配包数”字段。
[0045] 传输字节数(TB):即流表项的“流表匹配字节数”字段。
[0046] 平均包大小(APS):“流表匹配字节数”与“流量匹配包数”的比值,即:
[0047]
[0048] 平均包到达间隔(APAI):“流表持续时间”与“流表匹配包数的比值”,即:
[0049]
[0050] 若流表项的传输包数TP为零,则平均包大小APS为零,平均包到达间隔APAI等于流表持续时间DT。
[0051] 本发明可基于流表特征进行流量分类的依据为:相比于正常网络流量,流表溢出攻击的流量行为呈现如下几个异常特点:1)持续时间长:攻击流表项长期占据流表空间,即特征DT显著升高;2)流量行为异常:对于每个攻击流表项,攻击者仅需要在每个软超时周期内重发一次对应攻击数据包以触发匹配,无需持续传输数据,即特征APAI显著上升;3)传输数据少:攻击者仅需发送单个数据包,触发新的流表项安装,而无需传输任何有效数据,即特征TP、TB和APS较低。图2反映了SDN环境下的流表溢出攻击模型及其上述异常行为。
[0052] 本发明中,提取上述五种特征进行SDN流表项分类的依据主要有三:1)特征TP和TB越大,表明该流表项传输了越多的数据,即越有可能对应“大象流”;2)特征DT越高而TB和APS较小,表明该流表项传输数据的速度越低,也越有可能成为“低效率”的流表项替换对象;3)特征DT和APAI同时较高,符合流表溢出攻击的行为特征,更可能对应“攻击流”。本发明中使用上述五种特征融合,进行监督学习分类器的训练,以得到一个流表项的三分类器。图3为网络流量依据所提取的五维特征值进行三分类的示意图。
[0053] 训练上述的流表项五特征及其标签的GBDT算法参数设定如下:GBDT的分类器数量(n_estimator)被设定为100;训练特征数量等于流表项特征的总数,即n_features=5;为了防止过拟合现象发生,最大深度被设定为等同于特征数量,即max_depth=5。
[0054] 5.攻击判定检测。攻击检测模块安装在SDN交换机上并每1秒提取一次流表信息,判断流表中的流表项数量是否超过所设定的90%最大容量阈值,并指示是否需要启动流表溢出攻击缓解模块。
[0055] 当且仅当流表项的数量超过流表最大容量的90%时,流表溢出缓解模块才启动。在流表项数量不超过该阈值时,攻击检测模块仅监控流表项的数量,而不对流表项数据进行进一步处理,以降低系统资源开销。
[0056] 6.流表溢出缓解。当判定发生了流表溢出攻击时,所训练的流表项三分类模型将预测当前SDN交换机流表中每一条流表项的标签和概率向量,以确定哪些流表项最应当被删除以释放流表空间,并对相应的流表项执行驱逐操作,该步骤包含以下五个子步骤:
[0057] A.预测流表项的概率向量。向GBDT集成学习模型输入此时流表中每个流表项的五维特征,设定返回概率值方法为True,将返回一个三元组{P(e),P(m),P(a)},即为所述的概率向量,概率向量中的每个元素分别代表该流表项属于“大象流”、“小鼠流”和“攻击流”的概率。
[0058] B.预测流表项的标签。向GBDT集成学习模型输入此时流表中每个流表项的五维特征,并直接返回该流表项的预测标签。
[0059] 为了避免模型进行重复的预测,降低程序运行时间,流表项的真实分类标签可以使用概率向量中最大一项所对应的类别进行代替,即可以直接返回该流表项对应的概率向量中,最大元素的数组下标;
[0060] C.计算流表项的驱逐得分。设定一组权值{w(e),w(m),w(a)},即流表项属于“大象流”、“小鼠流”和“攻击流”的概率权值,并将该权值与流表项属于对应类的概率值相乘并求和,得到驱逐分数(ES),即:
[0061]
[0062] “大象流”、“小鼠流”和“攻击流”的概率权值必须满足w(e)<w(m)<w(a),以确保“攻击流”、“小鼠流”和“大象流”的驱逐分数依次降低。在本发明中,{w(e),w(m),w(a)}的值为{‑1,1,2}。
[0063] 图4为各类别流表项的ES分布示意图。经过概率预测和加权计算,“大象流”、“小鼠流”和“攻击流”三类流表项的ES分布区间较为离散,且呈现升序排列。因此,本发明中的流表溢出攻击缓解系统能够在有效地保护正常流表项的同时,优先驱逐攻击流表项。
[0064] D.按照ES从高到低的顺序重新排序流表。其中,越靠前的流表项具有越高的删除优先级。
[0065] 由于“攻击流”概率的权值最大,“小鼠流”次之而“大象流”权值最低,因此,在排序后的流表中,攻击流表项将被最先删除,而数据传输紧急的“大象流”能得到最好的保护。
[0066] E.流表项驱逐。对预测为“攻击流”的流表项和部分预测为“小鼠流”的流表项执行删除操作,具体是:
[0067] 首先删除所有被预测为“攻击流”的流表项,并计算已经删除的流表项数量。
[0068] 定义一个“强制驱逐比例”,即如果被预测为“攻击流”的流表项数量不足,流表释放效果有限时,将强制驱逐具有最高一定比例的ES对应的流表项。该比例设定在10%到30%之间,保证明显的流表空间释放效果的同时,减少正常流表项的损失数量。
[0069] 所有流表项的驱逐基于流表项的唯一标识,即使用流表项的“标记”字段定位所需删除的流表项。
[0070] 图5为未部署与部署了流表溢出攻击缓解系统情况下,流表中的流表项成分对比。在未部署本发明中的流表溢出攻击缓解系统的情况下,流表空间逐渐被攻击流占据;若部署了缓解系统,流表空间的流量成分结构得到改善,攻击流的占比大幅度降低。