本发明涉及一种异常网络行为检测防护技术方法,特别是一种基于流表信息的网络异常流量行为识别阻断的方法,属于网络异常检测技术领域。
背景技术:
近年来,网络技术高速发展使得网络成为人们日常生活中不能缺少的部分。然而,固然网络给用户带来了方便,然则针对网络的攻击也越来越多。虽然很多组织机构和政府企业已建立起相对安全的保护机制,但是攻击手段也越来越呈现多样化,而且后果也越来越严重。在如斯严峻的情况下,采取措施阻止网络生态环境的恶化的需求越来越迫切。但是保证网络犯罪绝对不发生是不可能的,只能通过采取有效的手段检测到网络异常并能够及时处理,该方式称为异常网络行为检测。
目前异常网络行为检测技术主要两种:一、基于主机。该技术主要检测主机日志和操作指令。缺点是:只能实现“事后”调查,不能实时检测。二、基于网络。对网络行为做了分类:“正常”和“异常”行为。可是,原有的异常检测的方法准确度低,误报率高,特别是在如今大数据时代,针对海量网络数据流信息的处理,执行时间太长,没有办法跟的上时代的需求。在这样的情况下,需要提出新的技术来提高检测的效率。
技术实现要素:
为了克服现有技术中存在的不足,本发明提供了一种基于流表信息的网络异常流量行为识别阻断的方法,用于解决现有的异常网络行为检测效率低,误报率高的问题。本发明利用软件定义网络技术,提出了一种在软件定义网络场景下软件定义网络的控制器选择合适的交换机下发控制流表项,不仅能够快速检测异常网络行为,而且能够识别出具体的异常网络行为类型。该发明一定程度上解决了异常网络检测误报率的特点,也为后续处理提供了新的思路。并且该发明能够实现异常网络行为的阻断,缓解整个网络在遭受攻击时的拥堵现象,提高网络的传输效率。
为实现上述目的,本发明采用的技术方案为:一种基于流表信息的网络异常流量行为识别阻断的方法,具体包括以下步骤:
步骤1、异常网络流量检测;首先基于openflow协议以轮询的方式收集所有交换机的流表信息,并对信息进行处理和统计;然后选择总流表数、总数据包数、总字节数、源ip地址的熵、目的ip地址的熵,作为标记异常网络行为的典型特征,并且构造多维序列;最后利用阈值自适应的累加算法对异常流量进行检测;
步骤1.1、流表信息采集:记信息采集周期为t_poll,每隔t_poll该模块向网络中所有交换机发送收集信息的请求,即ofp_flow_stats_request类型的报文;每个交换机在收到请求后,向控制器回复ofp_flow_stats_reply报文,报文中包含了流表项统计信息:
receivedpackets、receivedbytes、duration(seconds)、duration(nanoseconds);
控制器收到交换机回复的报文后,将每条流表项与其对应的计数器信息取出;其次从流表项计数器中记录中计算得到当前时间周期的统计信息,其计算方法为当前周期时间节点的流表项计数器统计信息减去上一个周期时间节点的流表项计数器统计信息,二者之差为该流表项在该时间周期内的统计信息。至此,控制器完成流表信息的处理;
步骤1.2、特征提取和分析:定义向量ci,表示流表中第i个流表项的信息:
ci=[dpidi,srcipi,dstipi,pktsi,bytesi,speedi],
其中,下标i表示流表项的序号,dpid表示该流表项所在交换机的id,srcip和dstip分别表示流表项中匹配域内的源ip地址和目的ip地址,pkts、bytes和speed表示与该流表项匹配的数据包的统计信息:数据包数、总字节数、流速。
由于异常网络流量不尽相同,以上状态并非同时出现,因此,提取流量特征时需要考虑多个维度,以尽量覆盖不同攻击所引起的网络状态变化。本专利选择表1所示的三个特征来粗粒度地表示网络流量的变化:总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)。
表1表征网络流量变化的典型特征
步骤1.3、构造多维特征序列:共提取四个维度的特征来表示网络流量,分别是总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)和新出现流数pkt_incount。每隔时间周期t_poll,提取到的特征构成一个向量,记为ct:
ct=[pktcount,h(srcip),h(dstip),pkt_incount].
ct即为异常探测所需的特征向量。而异常检测算法需要通过观测特征序列来探测异常,采用如下图所示的滑动窗口机制来构造特征序列,窗口长度为8。每隔时间t_poll,最新的特征向量ct被加入已构造的特征序列中,同时,滑动窗口向右滑动一个单位,虚线框内新的特征序列被输入到检测算法中。
步骤1.4、采用阈值自适应的累加算法实现异常流量检测:
根据流程图,本文提出的阈值自适应的累加算法的完整步骤如下:
首先,确定长度为l的滑动窗口,提取该窗口中的k个特征序列并记为{xi,k},表示第k维特征中的第i个样本点,μk表示第k维特征序列的均值:
σk表示第k维特征序列的方差:
对每个特征序列中的样本点,计算其累积和的上下界ui,k以及li,k:
经过l次计算,即i=l时得到该窗口中每个特征序列最终的上下界ul,k和ll,k,简记为uk和lk;定义第k个特征序列的判决函数:
其中,nk表示第k个特征序列的阈值:
nk=h*σk,
其中,h表示自适应阈值与方差的线性系数,此处不同特征序列采用相同的系数。将计算得出的k个上下界:uk和lk,分别带入k个判决函数中,得到k维的判决向量d=(d1,d2,……,dk),此时,每个维度的特征序列均已判决完毕,记r(d)为最终的判决函数:
将特征向量d带入判决函数中,得到当前滑动窗口的最终结果:1表示异常,0表示正常。至此,完成对一个滑动窗口(序号为1至l)的检测。
将每个特征序列的滑动窗口同时后移一个值,即序号为2至l 1,重复上述步骤,完成对下一个滑动窗口的检测。在真实的网络环境中,每隔周期t_poll产生一个特征向量,该向量触发滑动窗口的后移行为。检测算法对当前滑动窗口内的序列进行异常检测实际上是对该窗口内最后一个样本点进行异常检测。由此,每次实时采集的新样本均能结合历史数据信息被及时处理,低延时地完成检测。
步骤2、异常网络行为识别:首先在步骤1获取的交换机流表信息基础上,再增加不对称数据包数、不对称字节数和流表匹配率作为检测异常网络行为的特征;接着,根据基于决策树的adaboost算法以及训练好的模型,实时地对特征向量进行分类,识别异常网络行为。
步骤2.1、信息采集和特征提取:控制器通过轮询的方式从交换机获取流表信息并实时更新,每隔时间t_poll,控制器获取该周期内的所有流表信息,记为矩阵c:
为了更细粒度、更全面地刻画流量特征,在此基础上,新增以下几个特征:不对称数据包数和不对称字节数、流表匹配率,作为识别异常网络行为的依据。
基于上述分析,本专利从流表信息中提取8个特征以尽可能细粒度地表示网络流量的变化,作为识别是否存在异常网络行为的依据,8个特征为:总流表数,总数据包数,总字节数,源ip地址的熵,目的ip地址的熵,不对称数据包数,不对称字节数以及流表匹配率,其计算方法见表2。
表2表征网络流量变化的特征
表2中,n表示该时间内收集到的各个交换机中流表项的总数,k表示ip地址对的总数,d表示交换机的总数,asypkgsi表示第i个ip地址对的不对称数据包的数目,asybytesi表示第i个ip地址对的不对称数据包的字节数目,matchesi表示第i个交换机匹配成功的次数,lookupsi表示第i个交换机尝试匹配流表的次数。
上述八个特征构成表征网络流量变化的特征向量,记为dt:
步骤2.2、基于adaboost算法的异常行为识别:如下图所示,基于adaboost算法的异常行为识别包括训练和检测两个阶段:
(1)训练阶段:使用训练集训练出分类器。在系统投入使用前,采集网络中的正常流量信息以及模拟攻击时的流量信息作为训练样本,提取特征向量并结合对应的标签,送入基于决策树的adaboost分类算法,训练分类器;
(2)实时识别阶段:使用训练好的分类器进行攻击识别。该识别模块由步骤一检测模块发起的预警信号启动。一旦启动,当前的网络流量特征向量被送入分类算法,进行判决并输出结果。
步骤3、异常网络行为阻断:在检测到异常网络行为之后,控制器基于动态流表对异常报文实时过滤,从而对异常网络行为进行阻断;同时利用基于黑名单的流表保护机制有效地减小了交换机被无效流表占满导致溢出的可能性。
步骤3.1、异常网络行为的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对异常网络行为终端的流表项,其规则为在异常网络行为终端所接入的端口号上对终端ip的数据报文执行丢弃操作,从而实现异常网络行为的阻断。
步骤3.2、基于黑名单的流表保护机制:下图描述了结合流表保护机制的报文过滤方案。
结合了流表保护机制的报文过滤方案的流程如下:
a)检测系统发现异常网络行为并定位异常网络行为终端;
b)控制器生成流表项(ip=a,action=drop,idle_timeout=5)并下发至对应的交换机;同时,更新黑名单数据库,增加a的ip地址这一项;
c)交换机解析流表,根据规则对来自主机a的所有报文执行丢弃操作;该流表项在交换机中的存留时间为5秒,超时后,交换机将自动删除该流表项,以防止流表溢出;
d)超时后异常网络行为再次发生,主机a再次发出数据包,交换机则无法找到与其匹配的流表项,将向控制器发送请求以获取处理该数据包的新的流表项;
控制器通过查询发现主机a存在于黑名单数据库中,直接下发流表项(ip=a,action=drop,idle_timeout=5),命令交换机丢弃来自该ip的报文。
相对于现有技术,本发明的优点如下:本发明提供的一种基于流表信息的网络异常流量行为识别阻断的方法,该方法首先利用阈值自适应的累加算法对异常网络流量进行检测;然后利用机器学习算法对异常网络行为进行识别,得以针对具体的异常网络行为采取后续的应对措施;同时结合黑名单的流表保护机制对异常网络行为进行阻断。与现有的入侵检测相比,本发明在交换机上通过采集流量特征实现快速异常网络行为检测,并在此基础上识别具体异常网络行为类型,降低了异常网络行为检测的误报率;同时本方明通过交换机的流表项控制在交换机上对异常网络行为进行了阻断,与现有常见的防火墙阻断方案相比,其控制在底层,其对网络异常的实时响应和可控性更强。
附图说明
图1是本发明的一种基于流表信息的网络异常流量行为识别阻断的方法的整体框图。
图2为构造多维特征序列的滑动窗口机制;
图3为阀值自适应的累加算法流程图;
图4为基于adaboost的攻击检测示意图;
图5为结合流表保护机制的报文过滤方案。
具体实施方式
为了加深对本发明的认识和理解,下面结合附图对本发明作更进一步的说明。
实施例1:参见图1-图5,一种基于流表信息的网络异常流量行为识别阻断的方法,具体包括以下步骤:
步骤1、异常网络流量检测;首先基于openflow协议以轮询的方式收集所有交换机的流表信息,并对信息进行处理和统计;然后选择总流表数、总数据包数、总字节数、源ip地址的熵、目的ip地址的熵,作为标记异常网络行为的典型特征,并且构造多维序列;最后利用阈值自适应的累加算法对异常流量进行检测;
步骤1.1、流表信息采集:记信息采集周期为t_poll,每隔t_poll该模块向网络中所有交换机发送收集信息的请求,即ofp_flow_stats_request类型的报文;每个交换机在收到请求后,向控制器回复ofp_flow_stats_reply报文,报文中包含了流表项统计信息:
receivedpackets、receivedbytes、duration(seconds)、duration(nanoseconds);
控制器收到交换机回复的报文后,将每条流表项与其对应的计数器信息取出;其次从流表项计数器中记录中计算得到当前时间周期的统计信息,其计算方法为当前周期时间节点的流表项计数器统计信息减去上一个周期时间节点的流表项计数器统计信息,二者之差为该流表项在该时间周期内的统计信息。至此,控制器完成流表信息的处理;
步骤1.2、特征提取和分析:定义向量ci,表示流表中第i个流表项的信息:
ci=[dpidi,srcipi,dstipi,pktsi,bytesi,speedi],
其中,下标i表示流表项的序号,dpid表示该流表项所在交换机的id,srcip和dstip分别表示流表项中匹配域内的源ip地址和目的ip地址,pkts、bytes和speed表示与该流表项匹配的数据包的统计信息:数据包数、总字节数、流速。
由于异常网络流量不尽相同,以上状态并非同时出现,因此,提取流量特征时需要考虑多个维度,以尽量覆盖不同攻击所引起的网络状态变化。本专利选择表1所示的三个特征来粗粒度地表示网络流量的变化:总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)。
表1表征网络流量变化的典型特征
步骤1.3、构造多维特征序列:共提取四个维度的特征来表示网络流量,分别是总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)和新出现流数pkt_incount。每隔时间周期t_poll,提取到的特征构成一个向量,记为ct:
ct=[pktcount,h(srcip),h(dstip),pkt_incount].
ct即为异常探测所需的特征向量。而异常检测算法需要通过观测特征序列来探测异常,采用如下图所示的滑动窗口机制来构造特征序列,窗口长度为8。每隔时间t_poll,最新的特征向量ct被加入已构造的特征序列中,同时,滑动窗口向右滑动一个单位,虚线框内新的特征序列被输入到检测算法中。具体参见图2构造多维特征序列的滑动窗口机制
步骤1.4、采用阈值自适应的累加算法实现异常流量检测:阈值自适应的累加算法流程见下图3阈值自适应的累加算法流程图所示:
根据图3,本文提出的阈值自适应的累加算法的完整步骤如下:
首先,确定长度为l的滑动窗口,提取该窗口中的k个特征序列并记为{xi,k},表示第k维特征中的第i个样本点,μk表示第k维特征序列的均值:
σk表示第k维特征序列的方差:
对每个特征序列中的样本点,计算其累积和的上下界ui,k以及li,k:
经过l次计算,即i=l时得到该窗口中每个特征序列最终的上下界ul,k和ll,k,简记为uk和lk;定义第k个特征序列的判决函数:
其中,nk表示第k个特征序列的阈值:
nk=h*σk,
其中,h表示自适应阈值与方差的线性系数,此处不同特征序列采用相同的系数。将计算得出的k个上下界:uk和lk,分别带入k个判决函数中,得到k维的判决向量d=(d1,d2,……,dk),此时,每个维度的特征序列均已判决完毕,记r(d)为最终的判决函数:
将特征向量d带入判决函数中,得到当前滑动窗口的最终结果:1表示异常,0表示正常。至此,完成对一个滑动窗口(序号为1至l)的检测。
将每个特征序列的滑动窗口同时后移一个值,即序号为2至l 1,重复上述步骤,完成对下一个滑动窗口的检测。在真实的网络环境中,每隔周期t_poll产生一个特征向量,该向量触发滑动窗口的后移行为。检测算法对当前滑动窗口内的序列进行异常检测实际上是对该窗口内最后一个样本点进行异常检测。由此,每次实时采集的新样本均能结合历史数据信息被及时处理,低延时地完成检测。
步骤2、异常网络行为识别:首先在步骤1获取的交换机流表信息基础上,再增加不对称数据包数、不对称字节数和流表匹配率作为检测异常网络行为的特征;接着,根据基于决策树的adaboost算法以及训练好的模型,实时地对特征向量进行分类,识别异常网络行为。
步骤2.1、信息采集和特征提取:控制器通过轮询的方式从交换机获取流表信息并实时更新,每隔时间t_poll,控制器获取该周期内的所有流表信息,记为矩阵c:
为了更细粒度、更全面地刻画流量特征,在此基础上,新增以下几个特征:不对称数据包数和不对称字节数、流表匹配率,作为识别异常网络行为的依据。
基于上述分析,本专利从流表信息中提取8个特征以尽可能细粒度地表示网络流量的变化,作为识别是否存在异常网络行为的依据,8个特征为:总流表数,总数据包数,总字节数,源ip地址的熵,目的ip地址的熵,不对称数据包数,不对称字节数以及流表匹配率,其计算方法见表2。
表2表征网络流量变化的特征
表2中,n表示该时间内收集到的各个交换机中流表项的总数,k表示ip地址对的总数,d表示交换机的总数,asypkgsi表示第i个ip地址对的不对称数据包的数目,asybytesi表示第i个ip地址对的不对称数据包的字节数目,matchesi表示第i个交换机匹配成功的次数,lookupsi表示第i个交换机尝试匹配流表的次数。
上述八个特征构成表征网络流量变化的特征向量,记为dt:
步骤2.2、基于adaboost算法的异常行为识别:如下图所示,基于adaboost算法的异常行为识别包括训练和检测两个阶段:
1)训练阶段:使用训练集训练出分类器。在系统投入使用前,采集网络中的正常流量信息以及模拟攻击时的流量信息作为训练样本,提取特征向量并结合对应的标签,送入基于决策树的adaboost分类算法,训练分类器;
2)实时识别阶段:使用训练好的分类器进行攻击识别。该识别模块由步骤一检测模块发起的预警信号启动。一旦启动,当前的网络流量特征向量被送入分类算法,进行判决并输出结果,参见图4,基于adaboost的攻击检测,
步骤3、异常网络行为阻断:在检测到异常网络行为之后,控制器基于动态流表对异常报文实时过滤,从而对异常网络行为进行阻断;同时利用基于黑名单的流表保护机制有效地减小了交换机被无效流表占满导致溢出的可能性。
步骤3.1、异常网络行为的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对异常网络行为终端的流表项,其规则为在异常网络行为终端所接入的端口号上对终端ip的数据报文执行丢弃操作,从而实现异常网络行为的阻断。
步骤3.2、基于黑名单的流表保护机制:下图描述了结合流表保护机制的报文过滤方案,具体参见图5,结合流表保护机制的报文过滤方案;
基于上图,结合了流表保护机制的报文过滤方案的流程如下:
a)检测系统发现异常网络行为并定位异常网络行为终端;
b)控制器生成流表项(ip=a,action=drop,idle_timeout=5)并下发至对应的交换机;同时,更新黑名单数据库,增加a的ip地址这一项;
c)交换机解析流表,根据规则对来自主机a的所有报文执行丢弃操作;该流表项在交换机中的存留时间为5秒,超时后,交换机将自动删除该流表项,以防止流表溢出;
d)超时后异常网络行为再次发生,主机a再次发出数据包,交换机则无法找到与其匹配的流表项,将向控制器发送请求以获取处理该数据包的新的流表项;
控制器通过查询发现主机a存在于黑名单数据库中,直接下发流表项(ip=a,action=drop,idle_timeout=5),命令交换机丢弃来自该ip的报文。
应用实施例1:图1所示为本发明的一种基于流表信息的网络异常流量行为识别阻断的方法的整体框图,包括以下步骤:
步骤1、异常网络流量检测;首先基于openflow协议以轮询的方式收集所有交换机的流表信息,并对信息进行处理和统计;然后选择总流表数、总数据包数、总字节数、源ip地址的熵、目的ip地址的熵,作为标记异常网络行为的典型特征,并且构造多维序列;最后利用阈值自适应的累加算法对异常流量进行检测。
步骤1.1、流表信息采集:记信息采集周期为t_poll,每隔t_poll该模块向网络中所有交换机发送收集信息的请求,即ofp_flow_stats_request类型的报文;每个交换机在收到请求后,向控制器回复ofp_flow_stats_reply报文,报文中包含了下表所示的流表项统计信息。
控制器收到交换机回复的报文后,将每条流表项与其对应的计数器信息取出;其次从流表项计数器中记录中计算得到当前时间周期的统计信息,其计算方法为当前周期时间节点的流表项计数器统计信息减去上一个周期时间节点的流表项计数器统计信息,二者之差为该流表项在该时间周期内的统计信息,计算公式如下:
其中,k表示统计量编号,
步骤1.2、特征提取和分析:定义向量ci,表示流表中第i个流表项的信息:
ci=[dpidi,srcipi,dstipi,pktsi,bytesi,speedi],
其中,下标i表示流表项的序号,dpid表示该流表项所在交换机的id,srcip和dstip分别表示流表项中匹配域内的源ip地址和目的ip地址,pkts、bytes和speed表示与该流表项匹配的数据包的统计信息:数据包数、总字节数、流速。
由于异常网络流量不尽相同,以上状态并非同时出现,因此,提取流量特征时需要考虑多个维度,以尽量覆盖不同攻击所引起的网络状态变化。本专利选择表3.2所示的三个特征来粗粒度地表示网络流量的变化:总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)。
表征网络流量变化的典型特征
其中熵的概念源于热力学,后来由shannon将其引入信息论中,称为信息熵,用于度量信息的不确定性。随机性越大,表示不确定性越多,信息熵越大;反之则信息熵越小。以目的ip地址为例,其信息熵的计算方法是:
其中,n表示目的ip地址的总数量,pi表示第i个ip地址出现的概率,pi的计算方式如下:
w={(x1,y1),(x2,y2),(x3,y3),...},
其中,w代表了一个时间周期内采集的目的ip地址的集合,xi表示某一个目的ip地址,yi表示该地址出现的次数。
当每个ip地址均出现一次时,目的ip地址的熵h(srcip)达到最大值,当网络中出现异常行为,多个数据包的目的ip地址均集中到被攻击者ip上,随机性变小,熵值也将明显变小。
步骤1.3、构造多维特征序列:共提取四个维度的特征来表示网络流量,分别是总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)和新出现流数pkt_incount。每隔时间周期t_poll,提取到的特征构成一个向量,记为ct:
ct=[pktcount,h(srcip),h(dstip),pkt_incount].
ct即为异常探测所需的特征向量。而异常检测算法需要通过观测特征序列来探测异常,采用如下图所示的滑动窗口机制来构造特征序列,窗口长度为8。每隔时间t_poll,最新的特征向量ct被加入已构造的特征序列中,同时,滑动窗口向右滑动一个单位,虚线框内新的特征序列被输入到检测算法中。
步骤1.4、采用阈值自适应的累加算法实现异常流量检测:将每个特征序列的滑动窗口同时后移一个值,即序号为2至l 1,重复上述步骤,完成对下一个滑动窗口的检测。在真实的网络环境中,每隔周期t_poll产生一个特征向量,该向量触发滑动窗口的后移行为。检测算法对当前滑动窗口内的序列进行异常检测实际上是对该窗口内最后一个样本点进行异常检测。由此,每次实时采集的新样本均能结合历史数据信息被及时处理,低延时地完成检测。
步骤2、异常网络行为识别:首先在步骤1获取的交换机流表信息基础上,再增加不对称数据包数、不对称字节数和流表匹配率作为检测异常网络行为的特征;接着,根据基于决策树的adaboost算法以及训练好的模型,实时地对特征向量进行分类,识别异常网络行为。
步骤2.1、信息采集和特征提取:为了更细粒度、更全面地刻画流量特征,在此基础上,新增以下几个特征,作为识别异常网络行为的依据。
不对称数据包数和不对称字节数:衡量流量的不对称性,指两个通信的ip地址间收发数据包的差的总数以及字节总数。若存在两个ip地址a和b,记(a,b)为一个ip地址对,a发往b的数据包集合记为a,b发往a的数据包集合记为b,则集合a与b的元素数量之差为收发数据包的差。异常网络行为发生时,网络中的流量将呈现明显的非对称性:攻击者将发出更多的数据包而受害者将收到更多的数据包,网络中的不对称数据包数和字节数将出现明显波动。
流表匹配率:衡量交换机中数据包与流表的匹配率,指匹配成功的流表项数与尝试匹配流表项次数的比率,该指标与网络中新出现的流的数量呈负相关。异常网络行为发生时,网络中出现较多尚未存在于流表项中的流,流表匹配率这一指标将明显减小。
基于上述分析,本专利从流表信息中提取8个特征以尽可能细粒度地表示网络流量的变化,作为识别是否存在异常网络行为的依据,8个特征为:总流表数,总数据包数,总字节数,源ip地址的熵,目的ip地址的熵,不对称数据包数,不对称字节数以及流表匹配率,其计算方法见下表。
表征网络流量变化的特征
其中,n表示该时间内收集到的各个交换机中流表项的总数,k表示ip地址对的总数,d表示交换机的总数,asypkgsi表示第i个ip地址对的不对称数据包的数目,asybytesi表示第i个ip地址对的不对称数据包的字节数目,matchesi表示第i个交换机匹配成功的次数,lookupsi表示第i个交换机尝试匹配流表的次数。
上述八个特征构成表征网络流量变化的特征向量,记为dt:
步骤2.2、基于adaboost算法的异常行为识别:基于adaboost算法的异常行为识别包括训练和检测两个阶段:
(1)训练阶段:使用训练集训练出分类器。在系统投入使用前,采集网络中的正常流量信息以及模拟攻击时的流量信息作为训练样本,提取特征向量并结合对应的标签,送入基于决策树的adaboost分类算法,训练分类器;
(2)实时识别阶段:使用训练好的分类器进行攻击识别。该识别模块由步骤一检测模块发起的预警信号启动。一旦启动,当前的网络流量特征向量被送入分类算法,进行判决并输出结果。
步骤3、异常网络行为阻断:在检测到异常网络行为之后,控制器基于动态流表对异常报文实时过滤,从而对异常网络行为进行阻断;同时利用基于黑名单的流表保护机制有效地减小了交换机被无效流表占满导致溢出的可能性。
步骤3.1、异常网络行为的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对异常网络行为终端的流表项,其规则为在异常网络行为终端所接入的端口号上对终端ip的数据报文执行丢弃操作,从而实现异常网络行为的阻断。
步骤3.2、基于黑名单的流表保护机制:控制器通过查询发现主机a存在于黑名单数据库中,直接下发流表项(ip=a,action=drop,idle_timeout=5),命令交换机丢弃来自该ip的报文。
需要说明的是上述实施例仅仅是本发明的较佳实施例,并没有用来限定本发明的保护范围,在上述技术方案的基础上做出的等同替换或者替代,均属于本发明的保护范围。
1.一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于,所述方法包括以下步骤:
步骤1、异常网络流量检测;首先基于openflow协议以轮询的方式收集所有交换机的流表信息,并对信息进行处理和统计;然后选择总流表数、总数据包数、总字节数、源ip地址的熵、目的ip地址的熵,作为标记异常网络行为的典型特征,并且构造多维序列;最后利用阈值自适应的累加算法对异常流量进行检测;
步骤2、异常网络行为识别:首先在步骤1获取的交换机流表信息基础上,再增加不对称数据包数、不对称字节数和流表匹配率作为检测异常网络行为的特征;接着,根据基于决策树的adaboost算法以及训练好的模型,实时地对特征向量进行分类,识别异常网络行为;
步骤3、异常网络行为阻断:在检测到异常网络行为之后,控制器基于动态流表对异常报文实时过滤,从而对异常网络行为进行阻断;同时利用基于黑名单的流表保护机制有效地减小了交换机被无效流表占满导致溢出的可能性。
2.根据权利要求1所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:所述步骤1按照以下步骤顺序进行:
步骤1.1、流表信息采集:记信息采集周期为t_poll,每隔t_poll该模块向网络中所有交换机发送收集信息的请求,即ofp_flow_stats_request类型的报文;每个交换机在收到请求后,向控制器回复ofp_flow_stats_reply报文,报文中包含了流表项统计信息:
receivedpackets、receivedbytes、duration(seconds)、duration(nmoseconds);
控制器收到交换机回复的报文后,将每条流表项与其对应的计数器信息取出;其次从流表项计数器中记录中计算得到当前时间周期的统计信息,其计算方法为当前周期时间节点的流表项计数器统计信息减去上一个周期时间节点的流表项计数器统计信息,二者之差为该流表项在该时间周期内的统计信息;至此,控制器完成流表信息的处理;
步骤1.2、特征提取和分析:定义向量ci,表示流表中第i个流表项的信息:
ci=[dpidi,srcipi,dstipi,pktsi,bytesi,speedi],
其中,下标i表示流表项的序号,dpid表示该流表项所在交换机的id,srcip和dstip分别表示流表项中匹配域内的源ip地址和目的ip地址,pkts、bytes和speed表示与该流表项匹配的数据包的统计信息:数据包数、总字节数、流速;
步骤1.3、构造多维特征序列:共提取四个维度的特征来表示网络流量,分别是总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)和新出现流数pkt_incount,每隔时间周期t_poll,提取到的特征构成一个向量,记为ct:
ct=[pktcount,h(srcip),h(dstip),pkt_incount].;
ct即为异常探测所需的特征向量,而异常检测算法需要通过观测特征序列来探测异常,采用如下图所示的滑动窗口机制来构造特征序列,窗口长度为8。每隔时间t_poll,最新的特征向量ct被加入已构造的特征序列中,同时,滑动窗口向右滑动一个单位,虚线框内新的特征序列被输入到检测算法中。
步骤1.4、采用阈值自适应的累加算法实现异常流量检测:将每个特征序列的滑动窗口同时后移一个值,即序号为2至l 1,重复上述步骤,完成对下一个滑动窗口的检测;在真实的网络环境中,每隔周期t_poll产生一个特征向量,该向量触发滑动窗口的后移行为,检测算法对当前滑动窗口内的序列进行异常检测实际上是对该窗口内最后一个样本点进行异常检测,由此,每次实时采集的新样本均能结合历史数据信息被及时处理,低延时地完成检测。
3.根据权利要求2所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:步骤1.2中的特征选择的具体步骤如下:
选择总数据包数pktcount,源ip地址的熵h(srcip),目的ip地址的熵h(dstip)这三个特征来粗粒度地表示网络流量的变化。
4.根据权利要求2所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:步骤1.4中阈值自适应的累加算法实现异常流量检测的具体步骤如下:
首先,确定长度为l的滑动窗口,提取该窗口中的k个特征序列并记为{xi,k},表示第k维特征中的第i个样本点,μk表示第k维特征序列的均值:
σk表示第k维特征序列的方差:
对每个特征序列中的样本点,计算其累积和的上下界ui,k以及li,k:
经过l次计算,即i=l时得到该窗口中每个特征序列最终的上下界ul,k和ll,k,简记为uk和lk;定义第k个特征序列的判决函数:
其中,nk表示第k个特征序列的阈值:
nk=h*σk,
其中,h表示自适应阈值与方差的线性系数,此处不同特征序列采用相同的系数。将计算得出的k个上下界:uk和lk,分别带入k个判决函数中,得到k维的判决向量d=(d1,d2,……,dk),此时,每个维度的特征序列均已判决完毕,记r(d)为最终的判决函数:
将特征向量d带入判决函数中,得到当前滑动窗口的最终结果:1表示异常,0表示正常,至此,完成对一个滑动窗口(序号为1至l)的检测;
将每个特征序列的滑动窗口同时后移一个值,即序号为2至l 1,重复上述步骤,完成对下一个滑动窗口的检测,在真实的网络环境中,每隔周期t_poll产生一个特征向量,该向量触发滑动窗口的后移行为,检测算法对当前滑动窗口内的序列进行异常检测实际上是对该窗口内最后一个样本点进行异常检测,由此,每次实时采集的新样本均能结合历史数据信息被及时处理,低延时地完成检测。
5.根据权利要求1所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:所述步骤2按照以下步骤顺序进行:
步骤2.1、信息采集和特征提取:控制器通过轮询的方式从交换机获取流表信息并实时更新,每隔时间t_poll,控制器获取该周期内的所有流表信息;
步骤2.2、基于adaboost算法的异常行为识别:基于adaboost算法的异常行为识别包括训练和检测两个阶段:
(1)训练阶段:使用训练集训练出分类器,在系统投入使用前,采集网络中的正常流量信息以及模拟攻击时的流量信息作为训练样本,提取特征向量并结合对应的标签,送入基于决策树的adaboost分类算法,训练分类器;
(2)实时识别阶段:使用训练好的分类器进行攻击识别,该识别模块由步骤一检测模块发起的预警信号启动,一旦启动,当前的网络流量特征向量被送入分类算法,进行判决并输出结果。
6.根据权利要求5所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:步骤2.1中选择特征的具体步骤如下:
为了更细粒度、更全面地刻画流量特征,在此基础上,新增以下几个特征:不对称数据包数和不对称字节数、流表匹配率,作为识别异常网络行为的依据。
7.根据权利要求1所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:所述步骤3按照以下步骤顺序进行:
步骤3.1、异常网络行为的阻断:控制器向阻断点所在的交换机发送openflow协议的“controller-to-switch”消息,该消息包含针对异常网络行为终端的流表项,其规则为在异常网络行为终端所接入的端口号上对终端ip的数据报文执行丢弃操作,从而实现异常网络行为的阻断;
步骤3.2、基于黑名单的流表保护机制。
8.根据权利要求7所述的一种基于流表信息的网络异常流量行为识别阻断的方法,其特征在于:步骤3.2中基于黑名单的流表保护机制具体如下所述:
a)检测系统发现异常网络行为并定位异常网络行为终端;
b)控制器生成流表项(ip=a,action=drop,idle_timeout=5)并下发至对应的交换机;同时,更新黑名单数据库,增加a的ip地址这一项;
c)交换机解析流表,根据规则对来自主机a的所有报文执行丢弃操作;该流表项在交换机中的存留时间为5秒,超时后,交换机将自动删除该流表项,以防止流表溢出;
d)超时后异常网络行为再次发生,主机a再次发出数据包,交换机则无法找到与其匹配的流表项,将向控制器发送请求以获取处理该数据包的新的流表项;
控制器通过查询发现主机a存在于黑名单数据库中,直接下发流表项(ip=a,action=drop,idle_timeout=5),命令交换机丢弃来自该ip的报文。
技术总结