发明内容
本发明针对网络环境的日益复杂以及现有的入侵检测技术计算量大、计算过程复杂、误报率高,不能及时发现关键网络节点等问题,提出基于图熵的网络入侵检测方法和装置。
本发明基于熵运算的网络入侵检测方法,包括:捕获网络节点数据包,经预处理后得到目标数据;利用目标数据构建关系图;计算所有网络节点的交叉熵;对所有网络节点的交叉熵进行排序,找出活跃度高的关键网络节点;所述网络节点为受监控的服务器、终端或者路由设备中的任意一种或者任意几种的组合。
所述捕获网络节点数据包采用普通网卡并结合Libpcap软件,所述Libpcap软件提供了一整套数据包捕获函数库。
所述预处理包括数据清洗,数据格式转换,数据集成中的任意一种或任意几种操作的组合。
所述利用目标数据构建关系图包括:通过提取数据特定片段,包括网络节点的源IP地址IPS,目标IP地址IPD以及网关信息,建立IPS与IPD之间的关系图,即将IP地址为IPS的网络节点和IP地址为IPD的网络节点之间存在的关系用图的方式描述。
所述计算所有网络节点的交叉熵,包括:
203-1、计算每个网络节点i的熵;
其中,p(i)表示网络节点i在整个图中的概率分布;
203-2、丢弃网络节点i,以及与网络节点i相连的所有的边,计算去除网络节点i后的关系图的图熵:
式中|V|表示图中节点个数,j表示网络节点序号;
203-3、计算网络节点i的交叉熵;
E(i)是网络节点i的熵,H(G,p)是去除网络节点i后的关系图的图熵。
203-4、判断是否所有网络节点都已计算,若是,则得到所有网络节点的交叉熵,否则,重复步骤203-1至步骤203-4。
本发明基于熵运算的网络入侵检测装置,包括:
目标数据获取模块50,用于捕获网络节点数据包,对网络节点数据包进行预处理,得到目标数据;
关系图构建模块60,用于利用目标数据构建关系图;
交叉熵计算模块70,用于计算所有网络节点的交叉熵;
关键网络节点检测模块80,用于对所有网络节点的交叉熵进行排序,找出活跃度高的关键网络节点。
优选的,目标数据获取模块(50)所述捕获网络节点数据包采用普通网卡并结合Libpcap软件,所述Libpcap软件提供了一整套数据包捕获函数库;所述预处理包括数据清洗,数据格式转换,数据集成中的任意一种或任意几种操作的组合。
交叉熵计算模块70所述计算所有网络节点的交叉熵,包括:
203-1、计算每个网络节点i的熵;
其中,p(i)表示网络节点i在整个图中的概率分布;
203-2、丢弃网络节点i,以及与网络节点i相连的所有边,计算去除网络节点i后的关系图的图熵:
式中|V|表示图中节点个数,j表示网络节点序号;
203-3、计算网络节点i的交叉熵;
E(i)是网络节点i的熵,H(G,p)是去除网络节点i后的关系图的图熵
203-4、判断是否所有网络节点都已计算,若是,则得到所有网络节点的交叉熵,否则,重复步骤203-1至步骤203-4。
本发明将网络结构转化为图结构,并根据图中网络节点的属性特征,利用图熵理论找出网络节点在图结构中的影响大小,并以此作排序,可以很容易得到活跃度最大的关键网络节点。以便于进一步对网络节点信息分析,以确定是否发生网络入侵行为,或者采取相应的措施。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部份而不是全部的实施例。应当理解,所描述的具体实施方式或者实施例仅用以解释本发明,并不用于限定本发明,并且基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
为便于理解本发明,作为一个特例,构建一个网络环境,如图3所示,图中包括三个PC机(PC1、PC2和PC3),三个路由器(L1、L2和L3)以及五台服务器(S1、S2、S3、S4、和S5)。(本发明所述网络节点为受监控的服务器、终端或者路由设备中的任意一种或者任意几种的组合,所述终端包括不限于PC机、手持式移动终端、笔记本终端等,所述路由设备是指具有路由功能的网络设备,如路由器、交换机、集线器等,本实施例中,图3中路由器、服务器和PC机均是网络节点)。路由器记录所有与之相连的PC机和服务器的路由信息,其中,L1与S1、S3连接,L2与PC2、S1、S3、S4、L3连接,L3与S2、S5、L2连接。应当理解,以上作为特例构建的网络环境仅用以解释本发明,并不用于限定本发明。
本发明基于熵运算的网络入侵检测方法,优选实施例,如图4所示,包括。
步骤201、捕获网络节点数据包,经预处理后得到目标数据
从网络捕获数据包是入侵检测实现中非常重要的一环,它是入侵检测的基础,而实现网络数据包捕获的一个最基本的条件就是要能够接收某个范围网络上所有的数据包。可以采用以下两种方法之一从网络中捕获数据包,一种是采用网络数据采集专用设备,另一种是利用普通计算机与网络连接的通用硬件网络适配器,即网卡,由软件来完成数据包捕获。虽然由普通网卡来捕获数据包的方法在性能上比不上专用硬件,但其实现成本相对更低,且易于修改和更新。
本实施例中,作为一种可实现方式,采用普通网卡并结合Libpcap软件来捕获数据,所述Libpcap软件提供了一整套数据包捕获函数库,非常适用网络数据包的抓取。这里,我们主要是抓取某范围内网络交换点(一般是路由器)的数据包。
如图3中,抓取时间段T内路由器L1的路由表信息。所述时间段T为采取数据的周期,例如15-60分钟,本实施例为30分钟,即每30分钟采集一次数据进行处理。
例如,抓取的路由信息表主要内容如下表所示:
表1:抓取时间段T内路由器L1的路由表信息
|
网络地址 |
网络掩码 |
网关 |
接口 |
跃点数 |
1 |
192.168.1.0 |
255.255.255.0 |
192.168.1.6 |
192.168.1.6 |
30 |
... |
... |
... |
... |
... |
... |
10 |
244.0.0.0 |
244.0.0.0 |
192.168.1.6 |
192.168.1.6 |
30 |
其中,网络地址(Network Destination)和网络掩码(Netmask)相与的结果用于定义本地计算机可以到达的网络目的地址范围。这里的一个网络地址就代表网络中的一个节点(可能是PC机、服务器等)。
网关(Gateway,又称为下一跳服务器):在发送IP数据包时,网关定义了针对特定的网络目的地址,数据包发送到的下一跳服务器。如果是本地计算机直接连接到的网络,网关通常是本地计算机对应的网络接口,但是此时接口必须和网关一致;如果是远程网络或默认路由,网关通常是本地计算机所连接到的网络上的某个服务器或路由器。
接口(Interface):接口定义了针对特定的网络目的地址,本地计算机用于发送数据包的网络接口。
跃点数(Metric):跃点数用于指出路由的成本,通常情况下代表到达目标地址所需要经过的跃点数量,一个跃点代表经过一个路由器。
对采集的数据进行预处理生成目标数据,所述预处理包括数据清洗,数据格式转换,数据集成等操作,这些操作根据数据类型不一样,采用不同的操作,即选用其中任意一种或任意几种操作的组合。
所述数据清洗就是按照规则过滤掉不符合要求的数据,不符合要求的数据主要包括不完整的数据、错误的数据、重复的数据三大类。
所述不完整的数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。
所述错误的数据是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。
所述重复的数据就是数据的字面量相同的数据(相同值的数字、文字)。
所述数据格式转换主要是对数据进行规格化操作,包含以下处理内容:
(1)平滑处理,帮助除去数据中的噪声。
(2)合计处理,对数据进行总结或合计操作。
(3)数据泛化处理,所谓泛化处理就是用更抽象(或更高层次)的概念来取代低层次或数据层的数据对象。
(4)规格化,规格化就是将有关属性数据按比例投射到特定小范围之中,以消除数值型属性因大小不一而造成挖掘结果的偏差。
(5)属性构造,根据已有属性集构造新的属性,以帮助数据分析过程。
所述数据集成主要考虑以下几个问题:
(1)模式集成问题,即如何使来自多个数据源的现实世界的实体互匹配,这其中就涉及到实体识别问题。
(2)冗余问题,这是数据集成中经常发生的另一个问题。
(3)数据值冲突检测与消除,对于一个现实世界实体,其来自不同数据源的属性值或许不同。产生这样问题原因可能是表示的差异、比例尺度不同、或编码的差异等。
步骤202、利用目标数据构建关系图
利用上步得到的目标数据构建关系图,这些数据包括服务器日志,路由表信息,当采用Libpcap时,还包括Libpcap数据报文等。通过提取目标数据特定片段,包括网络节点的源IP(Internet protocol)地址(IPS),目标IP地址(IPD)以及网关信息,建立IPS与IPD之间的关系图,即IP地址为IPS的网络节点和IP地址为IPD的网络节点之间存在关系,将这种关系用图的方式来描述,即在图中这两个节点相互连接。本实施例仅考虑利用路由表信息构建网络图。
本实施例中,在图3所示构建网络环境拓扑结构中,为表述简单起见,这里仅考虑关于PC机网络节点的关系图。
网络图表示为G(V,E),V表示网络节点(这里代表网络PC机),E表示网络节点之间的边。假设图3中,在某段时间内通过对路由器L1,路由器L2以及路由路L3的信息抓取并处理后,得到关于PC1的路由信息如表2所示,为计算简单起见,这里我们只取前10条记录。
表2:在某段时间内PC1的路由信息
|
网络地址 |
网络掩码 |
网关 |
接口 |
跃点数 |
1 |
192.168.1.0 |
255.255.255.0 |
192.168.1.6 |
192.168.1.6 |
30 |
... |
... |
... |
... |
... |
... |
10 |
192.168.1.0 |
255.255.255.0 |
192.168.1.102 |
192.168.1.02 |
30 |
这里,PC1(网络IP地址为192.168.1.0)在这段时间内都访问了PC2(网络IP地址为192.168.1.6),PC3(网络IP地址为192.168.1.102)等网络节点。网络图以矩阵的形式表示,若PC1访问了PC2,则矩阵中的关联值为1,否则为0,本实例中得到的矩阵是一个对角矩阵(自身与自身关联值为1)。
如此进行,可得到某段时间内,某个范围所有网络节点之间的网络关系图。
步骤203、计算所有网络节点的交叉熵Effect(i)
熵的特点在于,它可以给出一个网络节点集在完全图下的影响大小,并以此做排序列表,可以很容易找出一个图中对其他网络节点影响最大的网络节点。对于图熵H,目前较为常用的是Korner对图熵的定义:
式(1)中,图熵H为G和p的函数,StableSet(G)表示的是一个网络节点稳定集的簇,稳定集是图中网络节点集的子集,稳定集中的网络节点必须没有任何边的联系。G表示关于网络节点的完全图(也称为目标数据构建的关系图),p表示网络节点集V(G)(有限集)的概率分布,p(i)表示网络节点i在图中的概率分布。因为稳定集是个NP(Non-deterministic Polynomia,非确定性多项式)问题,很难在实际中加以运用,本发明对图熵进行扩展和重新解释。
式中|V|表示图中节点个数,其他参数含义同式(1)。
本实施例,所述计算关系图中网络节点的交叉熵,如图5所示,具体包括:203-1、计算每个网络节点i的熵
式(3)中,p(i)表示网络节点i在整个图中的概率分布。即,若在步骤202构建的网络关系图中共有网络节点20个,其中PC1有4个,则p(PC1)=4/20=0.2,E(PC1)=0.14。
203-2、丢弃网络节点i,以及与网络节点i相连的所有的边,计算去除网络节点i后的关系图的图熵。
本实施例中,去掉PC1以及与PC1相连的所有的边,在矩阵中表现为:
则去除网络节点i后的关系图的图熵为:
式(4)中,j表示网络节点序号,j≠i表示网络节点i已被删除。也就是计算除网络节点i之外的其他网络节点的熵的和。
利用上步假设,共有网络节点20个,则|V|=20,去除PC1后,计算剩余19个网络节点的熵的和,这里假设为3,即H(G,p)=3。
203-3、计算网络节点i的交叉熵
本实例中,得到Effect(PC1)=0.18。
203-4、判断是否所有网络节点都已计算,若是,则得到所有网络节点的交叉熵,转至步骤204,否则重复步骤203-1至步骤203-4,即针对另一个网络节点,计算其熵,计算去掉此网络节点后的图的图熵,以及交叉熵,直到处理完所有的网络节点,得到所有网络节点的交叉熵Effect(i)。
步骤204、对所有网络节点的交叉熵Effect(i)进行排序,找出活跃度高的关键网络节点。
作为一种优选实施方式,对所有网络节点的交叉熵Effect(i)进行从大到小排序,交叉熵Effect(i)大的一个或者几个网络节点为活跃度高的关键网络节点,
或者,作为另一种优选实施方式,对所有网络节点的交叉熵Effect(i)进行比较,交叉熵Effect(i)最大的网络节点即为活跃度高的关键网络节点,活跃度高的网络节点对图的影响较大,更有可能发生网络入侵行为。
本实例中,假设经过计算网络节点PC1的Effect(i)=0.18最大,则PC1为这段时间内,活跃度最高的关键网络节点。一旦发生网络入侵行为,可首先切断此点的网络连接,防止事态恶化,然后再做进一步处理。
本发明基于熵运算的网络入侵检测装置,如图6所示,包括:
目标数据获取模块50,用于捕获网络节点数据包,对网络节点数据包进行预处理,得到目标数据;
所述目标数据获取模块50进一步包括,侦听模块51,用于捕获网络节点数据包;数据预处理模块52,用于对网络节点数据包进行预处理得到目标数据。
从网络捕获数据包是入侵检测实现中非常重要的一环,它是入侵检测的基础,而实现网络数据包捕获的一个最基本的条件就是要能够接收某个范围网络上所有的数据包。所述侦听模块51可以采用以下两种方法之一从网络中捕获数据包,一种是采用网络数据采集专用设备,另一种是利用普通计算机与网络连接的通用硬件网络适配器,即网卡,由软件来完成数据包的捕获。虽然由普通网卡来捕获数据包的方法在性能上比不上专用硬件,但其实现成本相对更低,且易于修改和更新。
本实施例中,作为一种可实现方式,所述侦听模块51采用普通网卡并结合Libpcap软件来捕获获网络节点数据包,所述Libpcap软件提供了一整套数据包捕获函数库,非常适用网络数据包的抓取。这里,我们主要是抓取某范围内网络交换点(一般是路由器)的数据包。
对采集的网络节点数据包进行预处理生成目标数据,包括数据清洗,数据格式转换,数据集成等操作,采用与步骤201相同方式,不再累述。这些操作根据数据类型不一样,采用不同的操作,即选用其中任意一种或任意几种操作的组合。
关系图构建模块60,用于利用目标数据构建关系图;
交叉熵计算模块70,用于计算所有网络节点的交叉熵
本实施例,所述计算关系图中每个网络节点的交叉熵,采用步骤203-1至步骤203-4相同的方式,不再详述。
关键网络节点检测模块80,用于对所有网络节点的交叉熵进行排序,找出活跃度高的关键网络节点。
作为一种优选实施方式,对所有网络节点的交叉熵进行从大到小排序,交叉熵大的一个或者几个网络节点为活跃度高的关键网络节点,
或者,作为另一种优选实施方式,对所有网络节点的交叉熵进行比较,交叉熵最大的网络节点即为活跃度高的关键网络节点,活跃度高的网络节点对图的影响较大,更有可能发生网络入侵行为。
上述步骤执行完毕,得到的结果存储在数据仓库中。
本发明将监控范围内的网络状况映射到完全图中,然后利用图熵理论以及熵算法,通过计算图中各网络节点的交叉熵找出图中活跃度最高的一个或几个网络节点,一旦发生入侵事件,可首先及时切断这些网络节点与网络的链接,掌控事态的发展。该方法克服了以往入侵检测方法计算量大、计算过程复杂、误报率高等问题,能够及时发现关键网络节点,大大提高了网络入侵的检测能力,能更好的维护网络安全。
值得注意的是,上述装置实施例中,所包括的各个模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
另外,本领域普通技术人员可以理解实现上述各方法实施例中的全部或部分步骤是可以通过程序来指令相关的硬件完成,相应的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明实施例揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。