基于深度学习的IPv6网络DDoS攻击检测系统及方法与流程

文档序号:18160723发布日期:2019-07-13 09:19阅读:409来源:国知局
基于深度学习的IPv6网络DDoS攻击检测系统及方法与流程

本发明属于入侵检测系统技术领域,具体涉及一种基于深度学习的ipv6网络ddos攻击检测系统及方法。



背景技术:

近些年来简单有效的ddos攻击依旧是互联网所面临的十分严峻的安全威胁之一,如何及时地检测与有效地防御ddos攻击一直是网络相关工作者的热点研究问题。而ipv6(internetprotocolversion6)网络的出现解决了现有的ipv4(internetprotocolversion4)网络的地址资源有限、严重制约互联网发展的问题。虽然ipv6网络考虑了ipv4网络中的诸多安全问题,并将ipsec作为内置安全协议,但是ipv6中部分协议仍存有安全漏洞,这导致ipv6网络并非更加安全,ddos作为常见的网络安全威胁,继续以各种形式在ipv6网络中存在。目前还没有一种完整且有效的针对ipv6网络的ddos攻击检测与防御方案。而传统的ddos检测方法,根据检测模式分类分为误用检测、异常检测、混合检测三种类型。基于误用的检测是建立负面行为模型,误报率低,但存在检测率不高的问题,且特征提取困难。基于异常的ddos检测是建立正面行为模型,检测率很高,但误报率也很高。已有的检测方法基本都是通过混合检测,让异常检测和误用检测产生互补作用,达到一个较好的检测效果。

早在2006年就提出了基于机器学习的入侵检测系统,利用传统的遗传算法和贝叶斯分类器能对已有的攻击和未知的攻击都能获得较好的识别准确率。而基于传统机器学习算法的ddos攻击检测技术存在着样本数量过多时易发生过拟合和未充分利用上下文信息等不足之处。深度学习的兴起掀起了人工智能领域的热潮,基于深度学习的相关衍生技术的优势大家有目共睹,因此基于深度学习的ipv6网络ddos攻击检测方法在检测速度和检测准确率有着明显的进步。



技术实现要素:

发明目的:针对传统机器学习方法对ddos攻击检测的局限性,本发明提出了一种基于深度学习的ipv6网络ddos攻击检测系统及方法,结合ipv6网络数据包的相关特点以及深度学习神经网络的特点,完成对关键节点的网络数据流量的采集、储存、解析、检测等步骤,能快速高效地检测当前时刻网络中是否出现ddos攻击。

本发明所采用的技术方案为:一种基于深度学习的ipv6网络ddos攻击检测系统,包括:数据采集模块、ddos攻击检测控制模块以及响应模块;

所述数据采集模块与ddos攻击检测控制模块连接,所述ddos攻击检测控制模块与响应模块连接,所述响应模块与数据采集模块连接;

所述ddos攻击检测控制模块包括预检测模块、数据预处理模块、深度攻击检测模块;所述预检测模块与数据预处理模块连接,所述数据预处理模块与深度攻击检测模块连接;

所述深度攻击检测模块中包含模型训练模块;

所述数据采集模块用于网络流量的采集处理,通过完成流量的拦截、采集、储存操作,将捕获得到流量文件输入ddos攻击检测控制模块进行检测;

所述ddos攻击检测模块通过感知测量对当前网络流量进行监控,并在其预检测模块发现疑似ddos攻击的流量后进行数据处理和深度检测。

所述预检测模块用于对网络中的流量进行统计并进行感知测量,根据流量值和ip熵的大小以及它们的变化趋势来判断是否存在疑似攻击,若检测到疑似攻击则发动预警,并陆续调用预处理模块和深度检测模块对网络流量进行深度检测。

所述数据预处理模块用于对采集的流量文件进行字段拆解、格式转换、标准化以及窗口分段处理,将流量文件形成用来输入神经网络进行训练或判断的格式数据;

所述深度攻击检测模块用于执行两种操作:若经过预处理的网络流量数据是历史攻击流量数据,则作为训练集对神经网络模型进行训练;若是待检测的流量数据,则作为测试集输入神经网络进行检测,得到检测结果,判断是否出现攻击,未发现攻击则本次攻击检测结束。

所述模型训练模块用于搭建训练模型,利用存在的历史攻击流量数据处理得到的数据集对神经网络进行训练,得到模型的权重文件;

所述响应模块用于根据检测模块的结果对ip地址黑名单进行管理,并同时对所连接交换机发送指令,在其防火墙中对来自攻击ip的数据包进行拦截。

一种基于深度学习的ipv6网络ddos攻击快速检测方法,采用前述的一种基于深度学习的ipv6网络ddos攻击快速检测系统实现,包括以下步骤:

步骤1:将基于深度学习的ipv6网络ddos攻击快速检测系统部署在实际网络中,用以检测被监控网络下整个子网的网络;

步骤2:系统部署主机与所监控网络的中高端交换机直接相连,对流经交换机的ipv6数据流量进行实时镜像操作,备份保存至系统主机所在的本地存储媒介,并进行响应解析处理操作;

步骤3:统计步骤2所采集的流量信息,通过隶属函数u判断当前流量是否属于大流量且流量是否处于持续增长,然后对当前流量的ip熵值的变化进行判断,从而判断是否疑似出现ddos攻击;

步骤4:若步骤3中检测到疑似存在ddos攻击,则选取该流量信息的部分字段,并对地址字段进行分割,对流量信息进行归一化;基于窗口的模式对流量信息进行分段得到二维矩阵,根据流量数据种类不同,将二维矩阵分别处理成不同的数据集合,得到可以直接输入神经网络的数据;

步骤5:使用keras(封装框架)与tensorflow(神经网络核心计算流程)框架完成神经网络模型搭建,将历史攻击流量数据处理为训练集和测试集对模型进行训练,根据训练结果对模型结构和训练周期进行参数调整,所述参数包括模型层数,各层神经元个数,dropout大小,训练周期数,当模型识别率a≥α时,得到此时的神经网络模型,并保存模型权重至检测系统所在主机本地。α为被监控网络历史攻击流量数据采集量占比;

其中b为监控节点历史发生ddos攻击次数,a为历史捕捉ddos攻击流量次数;

步骤6:读取已保存的神经网络模型权重,将预处理后的测试集输入训练神经网络进行攻击检测,通过softmax分类器,输出检测结果1或0;其中1为攻击,0为正常。

步骤7:检测系统维护一个ip地址黑名单表,发现当前网络出现攻击则对系统中的ip地址黑名单管理单元进行更新,同时对交换机发送指令拦截攻击ip地址的流量。

所述的步骤2的具体步骤为:

步骤2.1:系统维护所连接的交换机的防火墙,对其要拦截流量的ip地址进行管理,以数组的形式分别保存黑名单中信用等级从0到5的ip地址,对连接的交换机下达流量控制指令;

步骤2.2:系统部署主机使用wireshark捕获流经交换机的所有ip数据包,选择以太网流量捕获接口并设置过滤器为“ipv6only”,指定捕获流量保存地址每隔20秒自动创建文件。

步骤2.3:wireshark将网络数据包保存于本地,字段信息格式为:时间、源地址、目的地址、协议种类、长度和其他信息,文件格式为pcap文件;

根据流量特征工程对该流量信息进行特征提取,对已经收集并保存的历史攻击流量也进行相同处理。

所述步骤3的具体步骤为:

步骤3.1:基于历史流量的统计信息,对步骤2采集的流量进行算数计算,统计流量信息。包括下述统计量:t时刻网络的瞬时流量为t(t),整体平均流量为t_avg(t),目的ip熵为e(t),平均值为e_avg(t);

步骤3.2:设计隶属函数,判定流量是否为大或小;

ut为流量的隶属函数,当瞬时流量小于等于m倍的平均流量时,当前流量属于大流量的程度为0;同理,当流量大于平均流量的m倍,小于等于n倍时,公式中展示了它属于大流量的程度,瞬时流量大于平均流量的n倍时,认为流量属于大流量的程度为1。m、n通过对部署节点收集的历史流量数据进行概率分布统计得出。

熵隶属函数为:

ue定义了ip熵的隶属函数,当ip熵大于y倍的平均ip熵时,当前ip熵属于大ip熵的程度为0;同理,当流量大于平均流量的x倍,小于等于y倍时,公式中展示了它属于大ip熵的程度,瞬时流量的熵小于等于平均熵的x倍时,认为流量属于大流量的程度为1。x、y也是通过对部署节点收集的历史流量数据进行概率分布统计得出。

若感知到流量异常,则进入步骤4,否则删除数据采集模块保存的当前流量信息,并重复预检测工作,继续对实时捕获流量进行检测。

所述步骤4包括以下步骤:

步骤4.1:读取采集的流量数据文件,提取部分字段内容,并依次进行字段分割、格式转化、标准化操作,最后保存为csv格式文件。

步骤4.2:加载已保存的所有训练流量,使用基于窗口的流量分割模式,经过特征提取后得到p*q的二维矩阵,p为二维矩阵的行数,q为二维矩阵的列数,p的取值根据系统部署主机的性能进行设置;

对于历史攻击数据将处理好的数据集转化为训练集和测试集。

对于实时检测的数据流量处理成测试集。

所述步骤6包括以下步骤:

步骤6.1:检测系统发现被检测的流量中出现攻击。保存这部分已处理好的数据流量,作为新的训练集。加载现有好的模型权重,离线状态下重复步骤5中对模型的训练的操作,使用新的训练集对模型再次进行训练,更新神经网络权重。离线状态完成模型训练后,模型现权重文件替换原有模型权重文件。

所述步骤7包括以下步骤:

步骤7.1:若经过系统的预检测发现网络流量出现波动,同时检测到攻击时,记录当前流量csv文件中所有的ip地址,添加到ip地址黑名单管理名单中,并初始化所有出现的地址的信用等级为5。在深度攻击检测中发现攻击时,记录所有csv文件中ip地址,若已经存在与ip地址黑名单中的ip再次出现在攻击流量ip地址中时,则该地址的信用等级减1。对于ip地址黑名单中地址,如果在时间t内未再次出现再攻击流量中,则信用等级加1,并将此ip地址黑名单列表同步到数据采集模块的ip地址黑名单列表;

步骤7.2:部署主机中数据采集模块对交换机防火墙发送指令,添加ip地址黑名单列表中等级为0的ip地址,拦截其所发出的数据包。

本发明的有益效果为,该检测方案与其对应的检测系统对环境变化的有着较好的适配力和变通力,不单单检测一种特定环境的具有固定攻击特点的攻击,当部署节点发生移动时,针对改变的网络状态可以重新进行学习。对于普通的ddos攻击检测方案只能针对终端的攻击进行检测的问题,本发明使用的深度学习技术对于抽象特征有着更好的学习能力,在骨干网路由节点上仍然有效。而深度学习技术的特长不仅在于对“黑匣”特征的学习准确度高,而且通过对神经网络模型的模型减重和结构改进,可以大幅度提高训练速度,进而提高了模型的识别速度。在不干扰正常流量的处理与转发的情况下,利用预检测对网络异常状态进行监控,寻找可疑攻击,并通过深度学习对网络流量中的ddos攻击行为进行深度检测,不但做到对已有类型的攻击进行快速检测,并且能够对未知类型的攻击进行预测和分析。

附图说明

图1为本发明具体实施方式中ddos检测系统结构图;

图2为本发明具体实施方式中系统工作流程图;

图3为本发明具体实施方式中沈阳核心节点示意图;

图4为本发明具体实施方式中网络基础特征提取示意图;

图5为本发明具体实施方式中预检测算法流程图;

图6为本发明具体实施方式中二维特征矩阵示意图;

图7为本发明具体实施方式中ip地址黑名单列表结构图。

具体实施方式

下面结合附图与具体实施例对本发明进行详细说明。

如图1所示,一种基于深度学习的ipv6网络ddos攻击检测系统,包括:数据采集模块、ddos攻击检测控制模块以及响应模块;

所述ddos攻击检测控制模块包括预检测模块、数据预处理模块、深度攻击检测模块;所述预检测模块与数据预处理模块连接,所述数据预处理模块与深度攻击检测模块连接;

所述深度攻击检测模块中包含模型训练模块;

所述数据采集模块用于网络流量的采集处理,通过完成流量的拦截、采集、储存操作,将捕获得到流量文件输入ddos攻击检测控制模块进行检测;

所述ddos攻击检测控制模块通过感知测量对当前网络流量进行监控以及在发现疑似ddos攻击流量出现后的数据处理和深度检测;

所述预检测模块用于对网络中的流量进行统计并进行感知测量,根据流量值和ip熵的大小以及它们的变化趋势来判断是否存在疑似攻击,若检测到疑似攻击则发动预警,并陆续调用预处理模块和深度检测模块对网络流量进行深度检测。

所述数据预处理模块用于对采集的流量文件进行字段拆解、格式转换、标准化以及窗口分段处理,将流量文件形成用来输入神经网络进行训练或判断的格式数据;

所述深度攻击检测模块用于执行两种操作:若经过预处理的网络流量数据是已经打标签后的历史攻击流量数据,则作为训练集对神经网络模型进行训练;若是未打标签、待检测的流量数据,则作为测试集输入神经网络进行检测,得到检测结果,判断是否出现攻击,未发现攻击则本次攻击检测结束。

所述模型训练模块用于搭建训练模型,利用存在的历史攻击流量数据处理得到的数据集对神经网络进行训练,得到模型的权重文件;

所述响应模块用于根据检测模块的结果对ip地址黑名单进行管理,并同时对所连接交换机发送指令,在其防火墙中对来自攻击ip的数据包进行拦截。

如图2所示,本发明公开的一种基于深度学习的ipv6网络ddos攻击检测方法,具体步骤为:

步骤1:本检测方法涉及一方实体来实现具体的检测任务,即部署于网络中的检测系统。本方法所面对的具体检测环境是整个子网的网络,如图3所示以沈阳核心节点为例,为监控沈阳核心节点下的子网流量情况,本检测系统应检测流经沈阳节点核心路由器或交换机的流量。所以将检测系统部署于高性能主机上,主机与核心节点的路由器直连进行检测任务;

步骤2:系统部署主机与所监控网络的中高端交换机直接相连,占用交换机端口,对流经交换机的ipv6数据流量进行实时镜像操作,备份保存至系统主机所在本地存储媒介,并进行响应解析处理操作;

步骤2.1:系统维护一个ip地址黑名单列表。以数组的形式分别保存黑名单中信用等级从0到5的ip地址。对连接的交换机下达流量控制指令:黑名单列表中信用等级为0的ip地址,在交换机防火墙中加入该ip地址,拒绝该地址通过交换机所有的数据包。

步骤2.2:系统部署主机使用wireshark捕获流经交换机的所有ip数据包。首先选择以太网流量捕获接口,设置过滤器为“ipv6only”并在捕获选项中设置输出模式:选择输出格式为“pcap”,并选择“自动创建新文件”,设置为“30秒”,指定捕获流量保存地址。

步骤2.3:wireshark将网络数据包保存于本地,字段信息格式为:时间、源地址、目的地址、协议种类、长度和其他信息,文件格式为pcap文件。由于ipv6数据报报头增加了流标签位,可以根据流标签位和源地址、目的地址判断数据包是否属于同一个流。所以根据流量特征工程对该流量信息进行特征提取,具体提取字段及描述内容如图4所示。使用python程序脚本中,打开捕获的流量文件,for循环逐行导入封装好的csv包,利用csv.writer(out,dialect)函数保存为csv格式文件,文件名格式为时间戳。对历史攻击流量也进行相同处理,文件名格式为时间戳+标志位,攻击csv文件标志位为1,正常流量为0。

步骤3:预检测模块的主要功能是对网络流量进行粗粒度的分析与监控。预检测模块通过隶属函数u判断当前流量属于大流量的隶属度,并根据结果进行下一步检测。如果当前的流量不属于大流量,则不进行下一步检测;若认为当前网络属于大流量状态,则进入下一步检测。然后,系统会检测当前流量变化趋势;若流量处于增大趋势,则认为有可能处于被攻击状态,若系统流量处于减小状态,则认为当前系统没有处于被攻击的状态。然后对当前流量的ip熵值进行判断。若当前熵值较小,则表示当前的网络流量并未处于混乱状态,很有可能存在着攻击,则进行下一步判断。此后,判断熵值变化趋势。若熵值在降低,则认为很有可能存在ddos攻击;若当前的熵值在增大,则证明网络流量正在往混乱的趋势进行发展,则认为不是处于ddos攻击状态。

步骤3.1:对步骤2采集的流量进行算数计算,统计流量信息,主要包括下述属性:t时刻网络的瞬时流量为t(t),整体平均流量为t_avg(t),目的ip熵为e(t),平均值为e_avg(t),以上信息基于历史流量统计信息经过算数方法得到。

步骤3.2:本方法所设计隶属函数利用模糊数学中隶属函数的概念,构造隶属函数来衡量网络流量的大小。

ut为流量的隶属函数,当瞬时流量小于等于m倍的平均流量时,当前流量属于大流量的程度为0;同理,当流量大于平均流量的m倍,小于等于n倍时,公式中展示了它属于大流量的程度,瞬时流量大于平均流量的n倍时,认为流量属于大流量的程度为1。m、n通过对部署节点收集的历史流量数据进行概率分布统计得出。

熵隶属函数为:

ue定义了ip熵的隶属函数,当ip熵大于y倍的平均ip熵时,当前ip熵属于大ip熵的程度为0;同理,当流量大于平均流量的x倍,小于等于y倍时,公式中展示了它属于大ip熵的程度,瞬时流量的熵小于等于平均熵的x倍时,认为流量属于大流量的程度为1。x、y也是通过对部署节点收集的历史流量数据进行概率分布统计得出。

具体预检测算法流程如图5所示。只有预检测模块检测出网络流量出现异常波动,感知到流量异常疑似出现攻击并报警时,则开始数据预处理模块并进行深度攻击检测;如果没有感知到攻击,则删除数据采集模块保存的当前流量信息,并重复预检测工作继续对实时捕获流量进行检测。

步骤4:在步骤3预检测模块感知到攻击后对数据采集模块的流量数据进行更深入的处理。选取部分字段并对地址字段进行分割以便神经网络更好的拟合,对流量信息进行归一化并基于窗口的模式对流量信息进行分段,最后处理为可以直接输入神经网络的数据。

步骤4.1:向训练模块加载检测系统处理后的csv格式的流量数据。根据流量工程特征提取,获取ip数据流的19个字段,后8个字段信息冗余量较大,会对神经网络模型的训练造成困难。根据本发明所处理的ipv6数据包的特点,保存图4中前11个字段内容,并将两个ip地址各自拆分为8个字段。最后将字段拆解成共25个字段。对数据进行格式转换,通过for循环读取每个特征值string_num并returnstr(int(string_num.upper(),16))将所有的特征十六进制转化为十进制以便之后输入神经网络,导入包sklearn,利用封装好的preprocessing.minmaxscaler(feature_range=(0,1))函数对之前m个特征数值进行0-1标准化。对于历史攻击数据流量,根据读取的每个csv文件的标志位0或1,对每条数据包进行标记,csv文件中每行共26列,最后一位为攻击标志位,取值为0或1。

步骤4.2:导入pandas包使用read方法循环加载已保存的所有训练流量csv文件,读取所有csv文件内容至内存,保存至变量all_df。这里使用基于窗口的流量分割模式,设窗口大小为p(根据系统部署主机性能不同,对应本发明中数据集的设置,此处p=1000等),数据字段个数为q(此处q为26),则原本数据样本经过特征提取后得到p*q二维矩阵,如图6所示。理论上p越大越能体现一段网络数据包的序列状态的特点,也就更加准确地描述一次攻击行为。具体p的取值应根据系统部署主机的性能进行设置,以神经网络训练效果最优为准。

对于历史攻击数据将处理好的数据集转化为训练集和测试集。通过调用numpy包中的random.rand(len(all_df)<8)方法将数据集分为训练集和测试集,占有比例分别为0.8和0.2,并打乱顺序。至此数据分为四个集合,x_train,x_test,y_train,y_test。数据大小参数为:

x_train.shape=(50000,1000,25),x_test.shape=(10000,1000,25),

y_train.shape=(50000,1),y_test.shape(10000,1).

对于实时检测的数据流量,不需要分为两部分,只处理成测试集。

步骤5:使用keras+tensorflow框架完成神经网络模型搭建。ddos攻击是一个具有时间序列的行为,如果我们已知某次攻击中前半阶段出现的攻击行为,那么我们可以更好的推理出后半阶段的攻击,这样在检测攻击行为在lstm模型的训练中表现得好。利用keras和tensorflow框架实现神经网络模型的代码部分,模型构建部分代码如下:

加载自定义函数defmodel_chose(amodel,x_train,x_test,y_train,y_test):开始模型训练,将历史攻击流量数据处理为训练集和测试集对模型进行训练,根据训练结果对模型结构和训练周期进行参数调整,参数包括模型层数,各层神经元个数,dropout大小,训练周期数,当模型识别率a≥α时,得到此时的神经网络模型,并保存模型权重至检测系统所在主机本地。α为被监控网络历史攻击流量数据采集量占比;实际中每次模型训练结束后都会显示模型识别率,α的值要根据被监控网络实际情况确定;

其中b为监控节点历史发生ddos攻击次数,a为历史捕捉ddos攻击流量次数;

当最后返回训练好的神经网络模型,通过model包中的save_weights()方法保存模型权重至本地,格式为h5。

步骤6:调用keras.models包中的read_weight()方法,读取已保存的神经网络模型权重,预处理后的测试集输入训练神经网络进行攻击检测,通过softmax分类器,输出检测结果,1为攻击,0为正常。

步骤6.1:检测结果为1,检测系统发现被检测的流量中出现攻击。保存这部分已处理好的数据流量,作为新的训练集。加载现有好的模型权重,离线状态下重复步骤5中对模型的训练的操作,使用新的训练集对模型再次进行训练,更新神经网络权重。离线状态完成模型训练后,模型现权重文件替换原有模型权重文件。

步骤7:检测系统维护一个ip地址黑名单表,发现当前网络出现攻击则对系统中的ip地址黑名单管理单元进行更新,同时对交换机发送指令拦截攻击ip地址的流量。此步骤可以在刚发现出现ddos攻击时尽最大可能拦截攻击流量,保证系统的正常运行。

步骤7.1:步骤4中系统经过预检测发现网络流量出现波动,再经过深度检测检测到攻击出现时,记录当前流量csv文件中所有的ip地址,添加到ip地址黑名单管理名单中,并初始化所有出现的地址的信用等级为5。其中有的ip地址为正常流量,部分ip地址为真是攻击源的ip地址,ip地址黑名单列表结构如图7所示。以6个数组分别保存黑名单中信用等级从0到5的ip地址。在深度攻击检测中发现攻击时,记录所有csv文件中ip地址,若已经存在与ip地址黑名单中的ip再次出现在攻击流量ip地址中时,则该地址的信用等级减1。对于ip地址黑名单中地址,如果在时间t=10imn内未再次出现再攻击流量中,则信用等级加1,并将此ip地址黑名单列表同步到数据采集模块的ip地址黑名单列表;。

步骤7.2:部署主机的数据采集模块对交换机防火墙发送指令,添加ip地址黑名单列表中等级为0的ip地址,拦截其所发出的数据包。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1