1.本发明涉及一种基于深度学习和软件定义网络来防御工业网络系统中的分布式拒绝服务(distributed denial of service,ddos)攻击的方法,属于网络安全防御技术领域。
背景技术:
2.随着智能制造技术的不断发展,个性化定制和网络化协作等新的制造模式得到了广泛发展。这些新的制造模式需要制造机器和工业信息系统之间通过网络频繁进行数据交换,并根据订单、业务和环境的变化进行动态调整。
3.然而,现有的工业网络架构不能满足上述制造模式的需求。例如,有许多工业网络协议,形成了一个复杂的工业异构网络,这严重影响了底层设备和上层应用系统之间的互连。此外,工厂内的分层信息技术网络和操作技术网络阻碍了工业网络和智能制造的发展。因此,迫切需要建立一个高效、灵活的工业网络。
4.软件定义网络(software defined network,sdn),通过分离数据平面和控制平面来提高网络的可控性。sdn不需要引入新的链路层协议就可以与现有的工业通信协议兼容,并根据各种服务质量需求灵活地修改和重构网络。实现软件定义的工业网络(software defined industrial network,sdin)可以极大地简化大范围异构网络中的通信协议,网络状态管理和流量控制可以通过部署一个集中式控制中心来实现。拥有对整个网络的全局视图,为sdin提供了多种潜在的系统优化潜力。例如,sdn可以促进电力通信网络中复杂网络状态的全局管理,从而满足智能电网的要求。
5.尽管sdin优势显著,但在工业网络环境中仍然存在一些威胁。其中,分布式拒绝服务(distributed denial of service,ddos)攻击是sdin面临的关键威胁之一。
6.在传统网络中,ddos攻击通常借助协议/系统漏洞进行大规模流量攻击。由于sdin系统的中心化架构的特殊性,还面临其他ddos攻击方式。首先,攻击者可以利用sdn应用层下的可编程接口。第二,中心化的sdn控制器是一个常见的攻击目标,容易造成单点故障。最后,由于物联网设备的防御能力有限,随着sdin中大量物联网设备的部署,ddos威胁进一步扩大。因此,sdin系统迫切需要一种有效的针对ddos攻击的防御方法。
7.目前,有很多关于ddos攻击检测的方法,包括基于阈值的、基于信息熵的以及基于人工智能(artificial intelligence,ai)的检测机制。其中,ai方法中的深度学习算法可以在没有任何先验专业知识的情况下提供更好的攻击检测准确性。然而,深度学习模型在检测对抗性ddos攻击时往往变得敏感。对抗性攻击通常是指攻击者故意向输入样本添加某种难以察觉的干扰,导致预测模型误判的情况。
8.辅助分类生成对抗网络(auxiliary classifier generative adversarial networks,ac-gan),是在传统生成对抗网络(generative adversarial networks,gan)中添加了辅助分类的标签信息,使生成器可以为特定的标签生成数据,且模型允许判别器重建标签信息来提高生成数据的质量。
9.利用不同条件下的人工智能辅助的sdn,可以在企业网络、校园网络等多种情况下进行网络管理、决策、攻击检测及缓解。因此,人工智能和sdn的结合在工业网络增强方面,具有相当大的应用潜力。
技术实现要素:
10.本发明的目的为了解决软件定义工业网络(sdin)面临的分布式拒绝服务(distributed denial of service,ddos)攻击的技术问题,创造性地提出一种防御工业网络系统分布式拒绝服务攻击的方法。
11.本方法的创新点在于:基于辅助分类生成对抗网络(ac-gan)算法和软件定义网络(sdn)架构,能够对ddos攻击进行有效检测并给予缓解。
12.为了达到上述目的,本发明采取以下技术方案。
13.定义1:软件定义网络
14.软件定义网络(software defined network,sdn),是一种通过将网络设备的控制平面与数据平面分离来提高网络可控性的一种网络架构,可以实现灵活的网络管理和流量控制。
15.定义2:软件定义工业网络
16.软件定义工业网络(software defined industrial network,sdin),是通过软件定义网络来实现的工业网络架构,可以满足工业信息系统之间通过网络进行频繁地数据交换,并根据业务环境的变化对网络状况进行动态调整。
17.定义3:分布式拒绝服务攻击
18.分布式拒绝服务攻击(distributed denial of service,ddos),是指攻击者通过控制僵尸主机发送合理的服务请求来占用大量的服务资源,从而使合法用户无法得到服务的响应。
19.定义4:对抗性攻击
20.对抗性攻击是指在机器学习模型训练中,攻击者构造对抗性数据作为模型输入,从而导致预测模型的误判。
21.定义5:辅助分类生成对抗网络
22.辅助分类生成对抗网络(auxiliary classifier generative adversarial networks,ac-gan),是在传统生成对抗网络(generative adversarial networks,gan)中添加了辅助分类的标签信息,使生成器能够为特定的标签生成数据,且模型允许判别器重建标签信息来提高生成数据的质量。
23.定义6:控制器
24.控制器是软件定义网络中用于网络状态管理和流量控制的应用程序,该应用程序能够同时控制所有联网设备的数据平面的活动。
25.一种防御工业网络系统分布式拒绝服务攻击的方法,包括以下步骤:
26.步骤1:数据预处理。
27.首先对原始的ddos数据集进行预处理,通过数据清洗,删除对于检测攻击无意义的特征列。然后对缺失数据进行插补。
28.步骤2:特征工程,包括定性特征的数值化、特征选择和特征构建。
29.从ddos数据集中提取和构建关键特征,用于模型训练。通过特征工程,可以减少模型学习过程中的噪声干扰,防止过拟合。
30.具体地,步骤2包括以下步骤:
31.步骤2.1:由于ac-gan模型的输入是数值型数据,因此,将定性特征转换为数值型数据。
32.步骤2.2:进行特征缩放,对不同特征进行归一化,保证特征具有相似的尺度。
33.步骤2.3:对原始ddos数据集的特征进行重要性排序,并选取对于模型训练重要性排名前n位的特征。
34.其中,n根据准确率accuracy提升的幅度来决定。如果在第n个特征之后,准确率accuracy的提升幅度低于0.2%,则选取前n个特征。
35.步骤2.4:计算原始ddos数据集中攻击流量的统计特征值。
36.步骤3:模型训练。构建深度学习分类器进行对抗性ddos攻击检测训练,包括以下步骤:
37.步骤3.1:分别定义ac-gan模型生成器和判别器的网络结构;
38.步骤3.2:分别定义生成器和判别器的损失函数;
39.步骤3.3:给生成器一个随机的输入,生成器输出带标签的假样本,并与原来的真样本一起,构成ddos攻击真假数据集;
40.步骤3.4:固定生成器参数,利用现有真假数据集对判别器进行训练。
41.训练过程包括两个有监督的分类问题,一个分类任务是判别是真样本还是假样本,另一个任务是判别所给数据流的种类。本发明中,涉及的流量种类包括:tcp flood攻击、udp flood攻击、icmp flood攻击和正常流量。
42.步骤3.5:完成判别器的训练后,将生成器与判别器串接,固定判别器的参数不变,对生成器进行训练,给生成器一个随机输入,通过步骤3.2中定义的损失函数对生成器的参数进行更新。
43.完成生成器的训练后,将判别器与其串接,固定新得到的生成器的参数不变,对判别器进行训练。给生成器一个随机输入,得到更为逼真的新的假样本,将新的ddos攻击真假样本输入到判别器训练,通过步骤3.2中定义的损失函数对判别器的参数进行更新。
44.步骤3.6:重复步骤3.5,直至达到设定的训练次数或满足设定的循环终止条件。
45.步骤3.8:保存训练好的深度学习模型(可以保存在pmml文件中)。
46.步骤4:流量获取。
47.通过控制器,获取软件定义工业网络中的实时流量数据,其中包含攻击检测模型所需要的特征信息。
48.步骤5:ddos攻击检测。
49.调用步骤3训练过的深度学习模型完成ddos攻击检测。将步骤4中获得的流量特征作为分类预测的输入,输出流量是否为ddos攻击流的预测结果。
50.步骤6:ddos攻击缓解。
51.当检测到流量正常时,按照流表中原来的转发规则安全传输,一旦步骤5中检测到攻击,系统将自动触发ddos攻击缓解,下发数据包丢弃规则并添加防火墙策略。
52.有益效果
53.本发明方法,与现有技术相比,具有如下优点:
54.1.本方法融合了深度学习和软件定义网络技术来构建防ddos攻击的工业网络。深度学习技术进行攻击检测具有灵活准确的特点,sdn实现了工业网络的整体网络管理和流量控制。
55.2.本发明基于ac-gan构建了一种深度学习分类算法,生成器可以为特定的标签生成数据,判别器通过重建标签信息来提高生成数据的质量。所述方法通过生成对抗性攻击样本提高模型的灵敏度,提高了在软件定义工业网络中检测对抗性ddos攻击的准确率。
56.3.本方法通过sdin控制器提取和监控实时流量信息,当检测到攻击流量时,系统会自动触发攻击缓解功能,添加防火墙规则并下发丢弃的流表项策略,从而及时缓解ddos攻击。
附图说明
57.图1为本发明方法的流程图。
具体实施方式
58.下面结合附图和实施例,对本发明方法具体实施过程做进一步详细说明。
59.实施例
60.如图1所述,具体地,本实施例阐述了在sdin场景中使用ac-gan算法来检测ddos攻击,并利用sdn控制器来下发攻击缓解策略的过程。但是,本发明不应该局限于该实施例和附图所公开的内容。凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明的保护范围。
61.一种防御工业网络系统分布式拒绝服务攻击的方法,包括以下步骤:
62.步骤1:数据预处理。
63.具体地,用于离线模型训练的原始数据集包括tcp泛洪攻击流、udp泛洪攻击流和icmp泛洪攻击流,以及benign正常流量。使用标签标记四种流量,0表示正常流量,1表示icmp,2表示tcp,3表示udp。
64.对原始数据集进行预处理,当一条流的缺失值超过2/3时,直接删除。对于缺失值小于2/3的特征列,可以使用热卡填充法,即从数据集中找到与该条流最相似的对象值来完成填充。
65.步骤2:特征工程。
66.从ddos数据集提取和构建关键特征用于模型训练。通过特征工程可以减少模型学习过程中的噪声干扰,防止过拟合。
67.特征工程包括定性特征的数值化,特征选择以及特征构建,包括以下步骤:
68.步骤2.1:由于ac-gan模型的输入是数值型数据,首先将定性特征(包括源ip地址,目的ip地址,源端口号,目的端口号,协议类型)转换为数值型数据。
69.步骤2.2:由于特征数值不属于同一量纲,不能直接比较,因此,通过式1特征缩放对不同特征进行归一化,保证特征具有相似的尺度:
[0070][0071]
其中,x为特征的初始值,min(x)为x所在特征列的最小值,max(x)为x所在特征列的最大值。x
′
为特征的标准化结果,其取值范围为[0,1]。
[0072]
步骤2.3:可以使用随机森林算法等,对原始ddos数据集的特征进行重要性排序。其中,n根据准确率accuracy提升的幅度来决定。如果在第n个特征之后,准确率accuracy的提升幅度低于0.2%,则选取前n个特征。
[0073]
本实施例中,选取对于模型训练重要性排名前10位的属性特征。
[0074]
步骤2.4:计算原始ddos数据集中攻击流量的统计特征值,包括给定时间间隔内的数据包数量和平均包字节大小、给定时间间隔内的源ip地址的熵、目的ip地址的熵、源端口号的熵、目的端口号的熵、端口增长率和ip地址增长率。
[0075]
步骤3:模型训练。
[0076]
构建深度学习分类器进行对抗性ddos攻击检测训练。ac-gan模型在生成器和判别器中都使用带标签的数据进行训练,使得生成器能够为特定的标签生成数据,判别器通过重建标签信息来提高生成数据的质量。
[0077]
其中,基于ac-gan的攻击检测算法,具体如下:
[0078]
输入为:带分类标签的ddos攻击数据集
[0079]
输出为:训练好的ac-gan模型
[0080][0081]
上述流程,对应如下步骤:
[0082]
步骤3.1:分别定义ac-gan模型生成器和判别器的网络结构。如第(1)至(11)行所示。
[0083]
步骤3.2:分别定义生成器和判别器的损失函数。如第(12)至(23)行所示。
[0084]
步骤3.3:进行数据预处理和特征工程。如第(24)至(31)行所示。
[0085]
首先将数据集的划分为训练集和测试集,如第(32)行所示。然后,为生成器产生一个随机的输入,如第(33)行所示。之后,生成器输出带标签的假样本,如第(36)行所示,其与原来的真样本一同构成ddos攻击真假数据集。
[0086]
步骤3.4:固定生成器参数,如第(37)至(38)行所示,利用现有真假数据集对判别器进行训练,训练过程包括两个有监督的分类问题,一个分类任务是判别是真样本还是假样本,另一个任务是判别所给数据流的种类,本发明中涉及的流量种类包括tcp flood攻击,udp flood攻击,icmp flood攻击以及正常流量四种。
[0087]
步骤3.5:完成判别器的训练后,将生成器与上一步中的判别器串接,固定判别器的参数不变,对生成器进行训练,给生成器一个随机输入,通过步骤3.2中定义的损失函数对生成器的参数进行更新,如第(39)行所示。
[0088]
完成生成器的训练后,将判别器与其串接,固定新得到的生成器的参数不变,对判别器进行训练。给生成器一个随机输入,得到更为逼真的新的假样本,将新的ddos攻击真假样本输入到判别器训练,通过步骤3.2中定义的损失函数对判别器的参数进行更新,如第(40)行所示。
[0089]
步骤3.6:重复步骤3.5,直至达到设定的训练次数或满足设定的循环终止条件。
[0090]
步骤3.7:使用测试集测试模型性能。如第(41)行所示。
[0091]
具体地,分别从准确率accuracy、召回率recall、精确率precision,以及总和指标f1,共四个维度来测试模型的表现。四个维度衡量指标的值越高,说明测试模型性能越好。
[0092]
其中,准确率accuracy是指所有样本(包括ddos攻击流和正常流)被模型正确判断的比例;
[0093]
召回率recall是指正确判断为ddos攻击流的样本占所有ddos攻击流样本的比例;
[0094]
精确率precision是指在所有判断为ddos攻击流的样本中,真正是ddos攻击流的比例。
[0095]
上述四个维度衡量指标的计算方法,如式2至式5所示,其中,tp表示检测结果为正常的非攻击样本数,tn表示检测结果为异常的攻击样本数,fp表示检测结果为异常的非攻击样本数,fn表示检测结果为正常的攻击样本数。
[0096][0097][0098][0099][0100]
其中,准确率accuracy、召回率recall、精确率precision、总和指标f1的值,均不低于95%,认为模型达到性能要求。
[0101]
步骤3.8:将训练好的深度学习模型保存。具体可以保存在pmml文件中。如第(42)行所示。
[0102]
步骤4:流量获取。
[0103]
本实施例中,sdin模型采用openflow协议,该协议基于流的概念来识别网络流量。其中,流是指在指定时间间隔内通过网络中设置观察点的数据包序列,流中的数据包具有相同的属性,如传输协议、ip地址和端口号。sdn基于流表和流表项目转发数据包很容易获取和处理。因此,利用流表项的特征作为分类的基础,能够有效地提高分类器的精度,减少
任何额外的系统开销。
[0104]
使用流表的特性来表征原始数据的本质需要三个阶段:分析原始数据、选择适当的特征和特征转换。当ddos攻击发生时,流包的平均数量相对于正常情况会大幅增加。为了增加网络攻击的频率,ddos攻击通常最小化流包的平均字节,因此,来自ddos攻击的流包的平均字节远小于正常流。ddos通常攻击单个网站,而特定网站的端口一般是固定的,当ddos攻击到来时,端口流量将比正常流量显著增加。在正常生活或工作条件下,交换机中的流量呈稳定趋势,变化不大,然而当ddos攻击即将到来时,交换机的流量增长率将大幅增长。为了防止ip地址被禁用,ddos攻击者通常不会使用自身ip地址发起攻击,而是通过伪造一系列ip地址的方式,因此通常关注被攻击的目的ip来推断网络是否正在经历ddos攻击。
[0105]
当进行流量采集时,通过sdin的控制器监控软件定义工业网络中的实时流量数据,获取并构建步骤2中涉及的攻击检测时所需要的特征信息(属性特征和统计特征)。
[0106]
步骤5:ddos攻击检测。
[0107]
ddos攻击检测是通过调用步骤3训练过的深度学习模型来完成的,将步骤4中获得的流量特征作为分类预测的输入,输出流量是否为ddos攻击流的预测结果。
[0108]
步骤6:ddos攻击缓解。
[0109]
系统前端接口,可以实时展示目前网络状态。当检测到流量正常时,按照流表中原来的转发规则安全传输,一旦步骤5中检测到攻击,系统自动触发进行ddos攻击缓解,下发数据包丢弃规则并对相应的ip地址添加防火墙策略。同时,当有ddos攻击出现时,也会向系统管理员发送报警信息。系统管理员也可以通过rest api来及时对网络进行人为管控。
转载请注明原文地址:https://tc.8miu.com/read-1162.html