一种网络集中管理平台上的事件处理系统和方法

文档序号:7654368阅读:279来源:国知局
专利名称:一种网络集中管理平台上的事件处理系统和方法
技术领域
本发明是一种网络集中管理平台上的事件处理系统和方法,涉及计算机系统集成及应用技术,涉及网络安全中集中管理平台软件事件过滤规则管理系统的建立。
背景技术
随着网络环境规模的日益扩大,网络中各种设备的数量也急剧增加,这包括各种路由交换设备,存储设备和众多的安全设备,比如防火墙,IDS等等。
对众多的安全设备进行统一管理是实现全网安全的高效手段,这其中涉及到的一个重要环节就是对全网各种各样的事件进行分析,分析的主要途径就是通过安全管理平台的规则检验对接收到的事件进行判断,以发掘问题并触发动作。
安全集中管理平台会接收各种设备发来的事件信息。这些事件信息会经过安全管理平台中的规则过滤,判断某事件是否符合预先制定的策略,并决定是否应该触发相关的动作。
规则主要由条件和动作两部分组成,条件主要是逻辑表达式。
由于系统往往设置多条规则,而且安全管理平台处理的是全网各类事件,那么对规则处理的效率有较高要求,这取决于规则处理的方式,规则往往是一段普通文本描述,以往大多采用对规则解释执行的方式,即分析规则文本内容,然后再结合接收到的事件进行判断的方式进行。解释规则并不事先处理规则的内容,而是收到事件后再读取文本,然后执行判断条件的整体过程。解释规则的行为并没有将这一整体过程进行分解。从而导致每次对收到的事件进行逻辑判断时,都需要进行上述完整的执行过程。每次解释规则往往耗费了大量时间。
其次,网络中的设备变化更新很快,这对规则处理的灵活性要求较高,以往的规则判断,往往只能满足某些类型设备事件的判断,即某些规则条件的解释范围是固定的,当需要支持新的事件分析时,需要对规则引擎进行较大的改动才能满足要求。

发明内容
本发明正是针对现在技术中存在的缺陷而设计提供一种网络集中管理平台上的事件处理系统和方法。该系统采取了灵活的规则引擎结构,不采用解释执行规则的方式,而是采用预编译的方式处理规则,在规则创建的时刻就将规则编译成可以直接进行逻辑判断的内存结构放在系统的规则缓存中,在处理事件时,直接计算逻辑表达式的值,其目的是节省了每次都要解析文本规则内容而耗费的时间。
另外,网络集中管理平台上的事件处理系统还通过连接一个接口模块,就可以嵌入其他各种类型的逻辑判断方式,并将其通过规则添加模块导入到内存中。这使得系统具有良好的扩充和接入第三方判断的能力。
本发明的目的是通过以下技术方案来实现的首先,本发明技术方案设计提供了一种网络集中管理平台上的事件处理系统,包括作为宿主的服务器和网络设备,其特征在于该系统包括A一个数据内存模块,用于将规则按照一定的格式存储在计算机的内存当中;包括一个逻辑表达模块,规则的逻辑表达形式,它按照规则编号索引规则内容;一个动态取值模块,用于实时映射需要被规则检验的变量的值;一个逻辑判断模块,连接至所述逻辑表达模块和动态取值模块,用于将规则组织成计算机能够直接操作的规则格式;B一个规则管理模块,用于维护数据内存驻留模块;包括一个规则导入模块,连接至所述数据存贮模块中的逻辑表达模块,用于提取磁盘文件中的规则内容;一个规则编译模块,连接至所述规则导入模块,用于将文本描述的规则内容经过处理变为计算机可以直接操作的规则格式;C一个规则执行模块,用于判断网络事件对设定规则的满足程度,包括一个规则判断模块,连接至所述数据存贮模块中的逻辑判断模块,用于计算规则的结果,它以网络事件为输入条件,如果满足规则,则以触发的动作为输出;
一个事件参数设置模块,连接至所述数据存贮模块中的动态取值模块和上述规则判断模块,它将接收到的网络事件中的数据内容提取出来,并按照规则约定的变量名称将变量名和变量对应的值交给动态取值模块,同时向规则判断模块发出请求事件处理的指令。
规则管理模块还包括一个规则添加模块,连接至所述规则编译模块,用于从磁盘文件中读取规格文件,并将其导入到内存中。
规则添加模块连接一个接口模块,用于嵌入其他各种类型的逻辑判断方式,并将其通过规则添加模块导入到内存中。
规则管理模块还包括一个规则更新模块,连接至所述规则编译模块,用于更改内存中规则集中指定规则的内容,同时更新磁盘文件中的规则内容。
规则管理模块还包括一个规则查询模块,连接至所述逻辑表达模块,用于查找内容中指定条件的规则内容规则管理模块还包括一个规则撤销模块,连接至所述逻辑表达模块,用于从内存中清除指定规则。
规则执行模块还包括事件队列模块,连接至所述事件参数设置模块,用于将接收到的事件信息置于规则执行模块中的等待规则判断的事件队列的尾部。
其次,本发明技术方案设计提供了一种网络集中管理平台上的事件处理系统的事件处理方法,其特征在于该方法的步骤为(1)规则编译模块首先将规则编译成规则对象,再由规则导入模块将其转换成可以直接进行计算的逻辑表达式放在系统的数据内存模块中的逻辑表达模块中,准备随时调用处理;(2)建立与每一个逻辑判断表达式相对应的逻辑判断集,每一个规则对象都由一组规则条件组成,这些条件组成逻辑判断集,将这些逻辑判断集组合构成数据内存模块中的逻辑判断模块;(3)规则执行模块中的事件参数设置模块将接收到的事件对象中的数据参数化并传送给数据内存模块中的动态取值模块同时向规则判断模块发出请求事件处理的指令,数据参数化包括从接收到的事件内容中提取可被规则识别的变量的名字和值,并将它们作为一个“值对”放入当前规则判断的变量符号表中,变量符号表位于动态取值模块;
(4)由规则判断模块指令数据内存模块中的逻辑判断模块中的每一个逻辑判断集去动态取值模块中查找符合要求的数据参数并做出判断,当某个逻辑判断集满足要求时,从逻辑表达模块中调取与该逻辑判断集相对应的逻辑表达式进行计算,其结果再传输给规则处理模块以触发相应的动作。
(5)重复上述步骤(3)、(4),对规则执行模块收到的事件对象进行逐一处理。
上述编译模块采用XML文件声明对规则进行编译,它有如下的结构< xml version="1.0" encoding="GB2312" >
<rules>
<rule>
<rule-head>
</rule-head>
<rule-body>
<conditions>
<condition>
</condition>
</conditions>
<actions/>
<alert-def/>
</rule-body>
</rule>
</rules>
每一个rule标签包含的内容都会被映射为内存中的一个对象,每一个rule都有一个唯一的ID标识,它以每一个rule的id为索引,以其对应的对象作为内存中哈西表主键对应的内容;通过xml文件描述规则非常灵活,可以对各种事件解析出来的内容进行描述。无论新增什么样的系统、设备事件,都能通过规则描述这些事件中需要分析比较判断的内容。
规则添加模块通过连接一个接口模块,可以任意嵌入符合本发明系统接口规范的逻辑判断条件,也就是说,系统可以方便的嵌入其他各种类型的逻辑判断方式,而不仅仅使用系统自身内置的规则的逻辑判断方式。这使得系统具有良好的扩充和接入第三方判断的能力。


图1为本发明网络集中管理平台上的事件处理系统与主机系统与网络设备之间的关系的部署2为本发明网络集中管理平台上的事件处理系统的总体结构方框3为本发明网络集中管理平台上的事件处理系统中数据内贮模块的内部结构原理示意图具体实施方式
以下将结合附图和实施例对本发明技术方案作进一步地详述如图1所示,在一个典型的企业环境中,在使用网络的工作过程中,安全管理平台服务器18安装在一台windows主机15上,并已经作为一个进程被启动,本发明所述的网络集中管理平台上的事件处理系统作为安全管理平台服务器上的一个服务已经准备就绪,它启动了一个网络监听端口19,随时准备接收网络中的各种设备事件。该网络主机15被连接到一台交换机上,同时该交换机还连有其他主机和防火墙17、IDS16。这是一个典型的办公网络环境。同时在交换机上已经进行了设置,使其SNMP trap发送目的地指向安全管理平台服务器所在的主机15。
现在网络集中管理平台上的事件处理系统准备判断交换机端口链路失效(这也意味着,连接到这个交换机端口的设备)的事件,如果有这样的情况发生,则向管理员报告一封邮件。网络设备向网络集中管理平台上的事件处理系统所在机器发送事件日志信息,该系统便可以根据设定的规则判断收到的事件是否满足触发动作的要求。
参见附图2所示,该种网络集中管理平台上的事件处理系统,包括作为宿主的服务器14和网络设备15,该系统包括A一个数据内存模块,用于将规则按照一定的格式存储在计算机的内存当中;包括一个逻辑表达模块1,规则的逻辑表达形式,它按照规则编号索引规则内容;规则编号与相应的规则内容以哈西表的方式,存于主存中。
一个动态取值模块2,用于实时映射需要被规则检验的变量的值;
一个逻辑判断模块3,连接至所述逻辑表达模块1和动态取值模块2,用于将规则组织成计算机能够直接操作的规则格式;B一个规则管理模块,用于维护数据内存驻留模块;包括一个规则导入模块4,连接至所述数据存贮模块A中的逻辑表达模块1,用于提取磁盘文件中的规则内容;一个规则编译模块5,连接至所述规则导入模块,用于将文本描述的规则内容经过处理变为计算机可以直接操作的规则格式;C一个规则执行模块,用于判断网络事件对设定规则的满足程度,包括一个规则判断模块6,连接至所述数据存贮模块A中的逻辑判断模块3,用于计算规则的结果,它以网络事件为输入条件,如果满足规则,则以触发的动作为输出;一个事件参数设置模块7,连接至所述数据存贮模块A中的动态取值模块2和上述规则判断模块6,它将接收到的网络事件中的数据内容提取出来,并按照规则约定的变量名称将变量名和变量对应的值交给动态取值模块2,同时向规则判断模块6发出请求事件处理的指令。
参见附图3所示,编译模块5采用XML文件声明对规则进行编译,它有如下的结构< xml version="1.0" encoding="GB2312" >( )<rules>
<rule>
<rule-head>
</rule-head>
<rule-body>
<conditions>
<condition>
</condition>
</conditions>
<actions/>
<alert-def/>
</rule-body>
</rule>
</rules>
每一个rule标签包含的内容都会被映射为内存中的一个对象,每一个rule都有一个唯一的ID标识,它以每一个rule的id为索引,以其对应的对象作为内存中哈西表主键对应的内容。
规则文件可以有一个或多个,每个规则文件由多个rule元素构成,每个rule元素由rule-head元素和rule-body元素组成。
rule-head元素由下列4个元素组成<id>规则的唯一编号<timestamp>创建规则的时间<type>规则的类型<description>规则描述rule-body由conditions和actions以及alert-def元素构成。
其中conditions元素由一系列condition元素构成。结合上面的应用场景,可以定义如下的规则<rule>
<rule-head>
<id>3</id>
<timestamp>2006-05-15 19:06:44</timestamp>
<type>普通</type>
<enable>true</enable>
<description>rulel</description>
</rule-head>
<rule-body>
<conditions>
<condition>
<attrname>dev_category</attrname>
<attropr>belong</attropr>
<valuelist>
<value>1</value>
<value>2</value>
<value>4</value>
</valuelist>
</condition>
<condition>
<attrname>event_type</attrname>
<attropr>eq</attropr>
<valuelist>
<value>Status.linkDown</value>
</valuelist>
</condition>
</conditions>
<actions>
<action Type="console" Position="remote">
<parameters>
<parameter>
<name>console</name>
<value/>
</parameter>
</parameters>
</action>
</actions>
<alert-def/>
</rule-body>
</rule>规则的条件部分为<conditions>
<condition>
<attrname>dev_category</attrname>
<attropr>belong</attropr>
<valuelist>
<value>1</value>
<value>2</value>
<value>4</value>
</valuelist>
</condition>
<condition>
<attrname>event_type</attrname>
<attropr>eq</attropr>
<valuelist>
<value>Status.linkDown</value>
</valuelist>
</condition>
</conditions>
其中condition元素由attrname和attropr以及valuelist元素构成。
在上面的例子里attrname的值是dev_category,attropr为belong,valuelist是取值。
上面表示“设备类型属于1,2,4”的都符合条件。dev_category是系统内置的变量名称之一,对应接收到的事件对象属性中的设备类型部分。同理还定义了一个条件是event_type属性的值等于Status.linkDown,表示设备事件的类型是链路失效的符合条件。
可以自定义attrname的值,这样在事件对象中有新的内容时,可以方便的扩充规则的表达能力。
由于规则添加模块连接一个接口模块,用于嵌入其他各种类型的逻辑判断方式,并将其通过规则添加模块导入到内存中。为了实现这一功能,系统中有一种attropr名为ext,表示扩展定义,例如<condition>
<attrname>description</attrname>
<attropr>ext</attropr>
<analyser-type>org.test.parser.something</analyser-type>
<argument>some parameters</argument>
</condition>
它没有采用valuelist的方式表达条件内容。而是定义了analyser-type与argument元素。
ext操作定义了可以接入的系统以外的逻辑判断接口,这个接口是一个满足secfox.soc.manage.alert.parse.CustomAnalyser自定义分析器类型的实现,它被描述在analyser-type元素指定的内容中。secfox.soc.manage.alert.parse.CustomAnalyser在规则引擎中定义为必须实现boolean parse(String src,String argument);方法,在这个例子中,src值为接收到的事件对象中的descritption相关的内容,argument的值将在运行时刻传入argument元素的值。
系统内定的逻辑判断多为=,!=,>=,<=,匹配,包含等等的单步判断,[即一次比较既可以得出判断结果的操作],通过ext操作,可以根据具体情况接入这些普通逻辑操作之外的复杂判断。比如字符串提取之后再进行比较,或字符串的合法性认证,或者字符串系统状态计数等等,完全由应用本身决定需要采用何种CustomAnalyser。
用于上述网络集中管理平台上的事件处理系统的事件处理方法的步骤为(1)规则编译模块5首先将规则编译成规则对象,再由规则导入模块4将其转换成可以直接进行计算的逻辑表达式放在系统的数据内存模块A中的逻辑表达模块1中,准备随时调用处理;系统每读入一条文本规则后都会进行编译,并最终表示为可以直接进行运算的结构,每一条规则在内存中都对应一个对象,这些对象集合构成了逻辑表达模块1。这些对象集合在内存中组织为一张哈西表,键值为规则编号。
(2)建立与每一个逻辑判断表达式相对应的逻辑判断集,每一个规则对象都由一组规则条件组成,这些条件组成逻辑判断集,将这些逻辑判断集组合构成数据内存模块A中的逻辑判断模块3,逻辑判断集对应于每一条规则,因为每一条规则都有可能由若干条件组成,每一部分都是一个逻辑判断,其中包含要进行的操作,以及需要比较的符号名称,就前文给出的规则例子来讲,一共有两个条件,设备类型的匹配和事件类型的匹配;(3)规则执行模块C中的事件参数设置模块7将接收到的事件对象中的数据参数化并传送给数据内存模块A中的动态取值模块2同时向规则判断模块6发出请求事件处理的指令,数据参数化包括从接收到的事件内容中提取可被规则识别的变量的名字和值,并将它们作为一个“值对”放入当前规则判断的变量符号表中,变量符号表位于动态取值模块2;当事件收到后,事件环境设置服务会将该事件对象的内容提取出来,放入符号取值绑定表,就前文给出的规则例子来讲,比如该事件所属设备类型为1,就将$dev_category和值1放入当前的符号取值绑定表。
(4)由规则判断模块6指令数据内存模块A中的逻辑判断模块3中的每一个逻辑判断集去动态取值模块2中查找符合要求的数据参数并做出判断,当某个逻辑判断集满足要求时,从逻辑表达模块1中调取与该逻辑判断集相对应的逻辑表达式进行计算,其结果再传输给规则处理模块13以触发相应的动作。就前文给出的规则例子来讲,如果它的逻辑判断集中有一个条件判断事件的设备类型是否属于指定的某些值,则该表达式计算前就会到符号取值绑定表中查找是否存在$dev_category的值,若存在,则代入表达式计算,若不存在则认为该表达式计算结果为false.动态符号取值绑定表的生存周期为接收到一个事件到下一个事件来临之前。只有逻辑判断集中的所有条件都满足时,该规则才被满足。如果事件对象使得某些规则的逻辑判断为真,则按照规则中的定义,将需要执行的动作对象交给动作处理服务。
(5)重复上述步骤(3)、(4),对规则执行模块收到的事件对象进行逐一处理。
实现上述用于上述网络集中管理平台上的事件处理系统的事件处理方法的软件使用java语言实现。置于通用的管理服务器软件中,并作为其中的一个服务被启动。并使用一块已经编译好的内存区。
参见图2所示,在上述用于上述网络集中管理平台上的事件处理系统中,规则管理模块还包括一个规则添加模块9,连接至所述规则编译模块5,用于从磁盘文件中读取规格文件,并将其导入到内存中。由于规则添加模块9连接一个接口模块14,还可以将嵌入的其他各种类型的逻辑判断方式,并将其通过规则添加模块9导入到内存中。
在上述用于上述网络集中管理平台上的事件处理系统中,规则管理模块还包括一个规则更新模块10,连接至所述规则编译模块5,用于更改内存中规则集中指定规则的内容,同时更新磁盘文件中的规则内容。
在上述用于上述网络集中管理平台上的事件处理系统中,规则管理模块还包括一个规则查询模块11,连接至所述逻辑表达模块1,用于查找内容中指定条件的规则内容。
在上述用于上述网络集中管理平台上的事件处理系统中,规则管理模块还包括一个规则撤销模块12,连接至所述逻辑表达模块1,用于从内存中清除指定规则。
上述添加、更新、查询和撤销模块为与网络集中管理平台上的事件处理系统连接的客户端提供规则设置的相关操作。并同时系统中的文件相交互。即时编译需要应用的规则。并将编译好的内容重新组织到哈西表中。
在上述用于上述网络集中管理平台上的事件处理系统中,规则执行模块还包括事件队列模块8,连接至所述事件参数设置模块7,用于将接收到的事件信息置于规则执行模块C中的等待规则判断的事件队列的尾部。事件队列模块8负责管理接收到的事件对象,队列中有线程不断的获取收到的事件,并交给事件参数设置模块7将事件对象中的数据参数化,为规则判断做准备。
根据上述的发明方案,使得规则处理的速度明显加快,对网络事件的响应能力得到大幅提高,降低了对重要网络事件的处理延时,能够在第一时间处理各种严重危害的网络事件,从而有效降低了网络维护的成本。
上述发明方案还特别引入了加入第三方逻辑判断接口的方式。这种开放式的引擎结构使得规则引擎能够引入各种非本引擎支持的逻辑判断的方法。从而将规则引擎处理的事件种类,处理能力得到最大的扩展。
权利要求
1.一种网络集中管理平台上的事件处理系统,包括作为宿主的服务器和网络设备,其特征在于该系统包括A一个数据内存模块,用于将规则按照一定的格式存储在计算机的内存当中;包括一个逻辑表达模块(1),规则的逻辑表达形式,它按照规则编号索引规则内容;一个动态取值模块(2),用于实时映射需要被规则检验的变量的值;一个逻辑判断模块(3),连接至所述逻辑表达模块和动态取值模块,用于将规则组织成计算机能够直接操作的规则格式;B一个规则管理模块,用于维护数据内存驻留模块;包括一个规则导入模块(4),连接至所述数据存贮模块中的逻辑表达模块,用于提取磁盘文件中的规则内容;一个规则编译模块(5),连接至所述规则导入模块,用于将文本描述的规则内容经过处理变为计算机可以直接操作的规则格式;C一个规则执行模块,用于判断网络事件对设定规则的满足程度,包括一个规则判断模块(6),连接至所述数据存贮模块中的逻辑判断模块,用于计算规则的结果,它以网络事件为输入条件,如果满足规则,则以触发的动作为输出;一个事件参数设置模块(7),连接至所述数据存贮模块中的动态取值模块和上述规则判断模块,它将接收到的网络事件中的数据内容提取出来,并按照规则约定的变量名称将变量名和变量对应的值交给动态取值模块,同时向规则判断模块(6)发出请求事件处理的指令。
2.根据权利要求1所述的网络集中管理平台上的事件处理系统,其特征在于规则管理模块还包括一个规则添加模块(9),连接至所述规则编译模块,用于从磁盘文件中读取规格文件,并将其导入到内存中。
3.根据权利要求2所述的网络集中管理平台上的事件处理系统,其特征在于规则添加模块(9)连接一个接口模块(14),用于嵌入其他各种类型的逻辑判断方式,并将其通过规则添加模块(9)导入到内存中。
4.根据权利要求1所述的网络集中管理平台上的事件处理系统,其特征在于规则管理模块还包括一个规则更新模块(10),连接至所述规则编译模块,用于更改内存中规则集中指定规则的内容,同时更新磁盘文件中的规则内容。
5.根据权利要求1所述的网络集中管理平台上的事件处理系统,其特征在于规则管理模块还包括一个规则查询模块(11),连接至所述规则逻辑表达模块(1),用于查找内容中指定条件的规则内容
6.根据权利要求1所述的网络集中管理平台上的事件处理系统,其特征在于规则管理模块还包括一个规则撤销模块(12),连接至所述规则逻辑表达模块(1),用于从内存中清除指定规则。
7.根据权利要求1所述的网络集中管理平台上的事件处理系统,其特征在于规则执行模块还包括事件队列模块(8),连接至所述事件参数设置模块,用于将接收到的事件信息置于规则执行模块中的等待规则判断的事件队列的尾部。
8.一种用于上述权利要求1所述的网络集中管理平台上的事件处理系统的事件处理方法,其特征在于该方法的步骤为(1)规则编译模块(5)首先将规则编译成规则对象,再由规则导入模块(4)将其转换成可以直接进行计算的逻辑表达式放在系统的数据内存模块A中的逻辑表达模块(1)中,准备随时调用处理;(2)建立与每一个逻辑判断表达式相对应的逻辑判断集,每一个规则对象都由一组规则条件组成,这些条件组成逻辑判断集,将这些逻辑判断集组合构成数据内存模块A中的逻辑判断模块(3);(3)规则执行模块C中的事件参数设置模块(7)将接收到的事件对象中的数据参数化并传送给数据内存模块A中的动态取值模块(2)同时向规则判断模块(6)发出请求事件处理的指令,数据参数化包括从接收到的事件内容中提取可被规则识别的变量的名字和值,并将它们作为一个“值对”放入当前规则判断的变量符号表中,变量符号表位于动态取值模块(2);(4)由规则判断模块(6)指令数据内存模块A中的逻辑判断模块(3)中的每一个逻辑判断集去动态取值模块(2)中查找符合要求的数据参数并做出判断,当某个逻辑判断集满足要求时,从逻辑表达模块(1)中调取与该逻辑判断集相对应的逻辑表达式进行计算,其结果再传输给规则处理模块(13)以触发相应的动作。(5)重复上述步骤(3)、(4),对规则执行模块收到的事件对象进行逐一处理。
9.根据权利要求7所述的网络集中管理平台上的事件处理系统的事件处理方法,其特征在于编译模块(5)采用XML文件声明对规则进行编译,它有如下的结构<?xml version=″1.0″encoding=″GB2312″?>(?)<rules><rule><rule-head></rule-head><rule-body><conditions><condition></condition></conditions><actions/><alert-def/></rule-body></rule></rules>每一个rule标签包含的内容都会被映射为内存中的一个对象,每一个rule都有一个唯一的ID标识,它以每一个rule的id为索引,以其对应的对象作为内存中哈西表主键对应的内容。
全文摘要
本发明是一种网络集中管理平台上的事件处理系统和方法,该系统采取了灵活的规则引擎结构,不采用解释执行规则的方式,而是采用预编译的方式处理规则,在规则创建的时刻就将规则编译成可以直接进行逻辑判断的内存结构放在系统的规则缓存中,在处理事件时,直接计算逻辑表达式的值,其目的是节省了每次都要解析文本规则内容而耗费的时间。
文档编号H04L29/02GK101056210SQ20071011050
公开日2007年10月17日 申请日期2007年6月5日 优先权日2007年6月5日
发明者朱震, 文华, 王新华 申请人:网御神州科技(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1