CN103580900B - 一种基于事件链的关联分析系统 - Google Patents

一种基于事件链的关联分析系统 Download PDF

Info

Publication number
CN103580900B
CN103580900B CN201210271970.6A CN201210271970A CN103580900B CN 103580900 B CN103580900 B CN 103580900B CN 201210271970 A CN201210271970 A CN 201210271970A CN 103580900 B CN103580900 B CN 103580900B
Authority
CN
China
Prior art keywords
event
chain
event chain
expression formula
current
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210271970.6A
Other languages
English (en)
Other versions
CN103580900A (zh
Inventor
王新春
徐培杰
李刚
钱向东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Baosight Software Co Ltd
Original Assignee
Shanghai Baosight Software Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai Baosight Software Co Ltd filed Critical Shanghai Baosight Software Co Ltd
Priority to CN201210271970.6A priority Critical patent/CN103580900B/zh
Publication of CN103580900A publication Critical patent/CN103580900A/zh
Application granted granted Critical
Publication of CN103580900B publication Critical patent/CN103580900B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开一种基于事件链的关联分析系统,包括:表达式执行引擎,关联分析引擎,聚合引擎和报警引擎,这四个部分组合起来,执行规则库里面的规则。表达式执行引擎执行规则的表达式部分,根据事件和表达式,判断事件是否符合这个表达式;如果符合,送到关联分析引擎;关联分析引擎根据关联条件,找到各个事件之间的关联关系,形成事件链,形成事件链以后,送到聚合引擎中;聚合引擎根据聚合条件将可以聚合的事件链聚合在一起,形成最后的高价值的事件链,送到报警引擎中;报警引擎根据事件链产生报警并执行相关后续操作。本发明可以执行规则库里面的规则,满足多方面的需求。整个系统可以完全在内存中并发执行,可以达到很高的性能。

Description

一种基于事件链的关联分析系统
技术领域
本发明涉及网络安全领域和信息系统领域,具体地说,涉及的是一种基于事件链的关联分析系统。
背景技术
关联分析是指如果两个或多个事件之间存在一定的关联,那么其中一个事物就能通过其他事物进行预测,它的目的是为了挖掘隐藏在数据间的相互关系。
现有的关联分析技术和方式,多数是要求进行关联分析的事件之间是有明确的时序的,才能够对事件进行关联分析,否则无法匹配到规则,造成事件的漏报。如“一种基于状态机的安全监控关联分析方法”(申请号:200910243576.X)论述了一种基于状态机的关联分析技术,该方法能够检测事件具有时间顺序的安全事件之间的相互行为,如该专利的权利要求1中描述的内容。“一种日志关联分析系统与方法”(申请号:200910157310.3)中事件流逻辑关联方法也是要求日志事件是否为已有事件链的后续事件,如果不成立,该事件也就不匹配,限制了无序事件这种方式。
然而在实际情况中,多个事件通常是来至于多个系统中,因此事件之间的时序有时候很难保证。如在安全系统中,通常都有防火墙和IDS或者IPS。通常需要将防火墙和IDS的日志进行关联分析才能够得出一个比较有价值的报警事件。由于防火墙日志和IDS日志是独立的,防火墙是串接设备,IDS是旁路设备,是属于2个不同的设备。2个设备针对同一个攻击行为的相关事件汇报的先后顺序是无法完全肯定的,可能通常是防火墙先到达,IDS后到达。如果设定的规则是防火墙事件为前一安全事件,IDS事件为后一安全事件,在防火墙事件先到达,IDS事件后达到的情况下,文献中提及的方案均能够检测出威胁,如果事件到达的时序相反了,文献中的方案均无效。如果为了解决事件之间的时序错乱问题,文献中可能可以通过配置2条时序相反的规则来实现,但是如果进行复杂关联的时候,规则的数量就成级数上升,对系统性能会有严重影响。对于这一状况,本系统以基于事件链的方式,能够很好的解决事件之间的时序问题。对于事件,不管到达的时间先后顺序问题,只要事件匹配规则库中的规则,就可以形成完整的事件链,产生相应的报警,避免系统的误报和漏报。
事件链是指符合规则库中某一个规则的一系列事件的集合,形成事件链的事件之间可以是有时序的,也可以是无序的。事件来源于安全设备,主机网络系统或者是应用系统等。
发明内容
本发明的目的在于解决现有技术中的上述不足,提供一种基于事件链的关联分析系统,能够根据规则,对事件进行准确的分析,得出相应的结果,提高可靠性和准确性。
为实现上述的目的,本发明所述的基于事件链的关联分析系统,包括:表达式执行引擎,关联分析引擎,聚合引擎和报警引擎,这四个部分组合起来,执行规则库里面的规则,规则库的规则由用户自定义配置或者是系统内置的知识库;其中:
所述表达式执行引擎执行规则的表达式部分,根据事件和表达式,判断事件是否符合这个表达式的条件;如果符合,送到所述关联分析引擎;
所述关联分析引擎根据关联条件,找到各个事件之间的关联关系,形成事件链,形成事件链以后,送到所述聚合引擎中;
所述聚合引擎根据聚合条件,将可以聚合的事件链聚合在一起,形成最后的高价值的事件链,送到所述报警引擎中;
所述报警引擎根据事件链产生报警并执行相关后续操作。
本发明中,所述规则库的规则,其中每条规则分3部分组成,即:一个或者多个表达式,事件链之间的关联条件部分和规则的聚合条件部分。通常一条规则可以描述某种一系列行为。
本发明中,所述表达式执行引擎在启动的时候,将所有规则的表达式部分载入到内存中,并将文本描述的表达式转换为可执行的表达式,当一个事件到达时,表达式执行引擎的执行过程如下:
(1)取出一条规则的所有表达式:
a)将第一个表达式送到表达式执行器,执行器将该表达式的变量部分用事件中的实际值代替;
b)值替换完毕后,表达式执行器判断这个表达式是否成立,如果成立,则匹配成功,送入关联分析引擎,结束执行当前规则的余下部分表达式;
c)如果不匹配,执行下一个表达式;
d)重复abc过程,直至事件匹配表达式或者该规则的所有表达式执行完毕;
(2)执行下一条规则的所有表达式,过程如前(1),直至事件匹配某一表达式或者所有的规则的表达式都执行完毕。
上述(1)、(2)过程如果是在多处理器系统上执行,那么多条规则之间则并发执行,提升系统性能。
本发明中,当表达式执行引擎的某一表达式匹配到事件后,将当前事件送入关联分析引擎。关联分析引擎根据关联条件,确定当前事件是创建一个新的事件链则创建一个全新的事件链,并加入到缓存中;否则就匹配缓存中已经存在的事件链,如果能够匹配到事件链,将当前事件加入到事件链中,并确定是否已经完整,如果形成完整的事件链,送入聚合引擎中。如果不满足创建事件链的条件并且匹配不到任何事件链则抛弃当前事件。根据形成事件链的事件是否有顺序要求,其具体过程有所不同。形成事件链的顺序有要求指即先有事件1,再有事件2才能形成事件链;无要求则表示,只要事件1和事件2在某个时间区间(聚合周期)范围内出现,不管其先后,都能够形成事件链。
如果规则不需要进行关联,即一个规则只有一个表达式,只需要匹配一类事件,则关联分析引擎直接把事件送入聚合引擎。
所述关联分析引擎在形成事件链的事件有顺序要求时,执行如下过程:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0(如果事件匹配规则中的第二个表达式的序号为1,以此递增);
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;
b)如果存在同类的事件链集合,根据当前事件创建一个新的事件链,并加入到已经存在的事件链集合的末尾;
c)如果不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中;
(3)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分;
a)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
b)如果事件链集合存在,判断事件链集合中的事件链是否超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
c)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
d)将当前事件加入到最早的并且可以添加当前事件的事件链中;
e)将事件加入到事件链后,判断事件链的需要迁移,将事件链从缓存中移除;判断事件链需要迁移的标准为用当前事件表达式序号作为事件链数组的索引号,此时索引号之前的事件链数组均存在事件;
f)移除事件链后,重新构造缓存的key,将事件链加入到新的事件链集合中(若新的事件链集合不存在,则先创建一个,并加入缓存)。构造新的缓存key规则为将表达式序号增加1和下一个关联条件中当前事件的实际值构成;
g)步骤e)中,事件链不需要迁移,则将当前事件加入到已存在的事件链中;
(4)如果事件匹配的规则中最后一个表达式部分;
a)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
b)如果事件链集合存在,判断事件链集合中的事件链是否超时。判断超时的标准为:当前事件开始时间-集合中事件链的开始时间>聚合条件中的聚合周期范围;
c)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
d)将当前事件加入到最老的事件链中,形成完整的事件链,送入聚合引擎中,并删除缓存中存在的事件链;如果同时存在多个符合条件的事件链,将当前事件加入到最早的那个事件链中;
e)如果事件链不存在,抛弃当前事件;
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时(根据聚合条件中的聚合周期范围)。判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;
a)存在超时事件链,删除所有超时的事件链;
b)删除超时事件链后,事件链集合不存在任何事件链,此时当前事件匹配的不是第一个表达式,说明不存在任何可以关联的事件链,抛弃当前事件。
所述关联分析引擎在形成事件链的事件无顺序要求时,执行如下过程:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0(如果事件匹配规则中的第二个表达式的序号为1,以此递增);
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中;
c)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
d)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
e)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
f)集合中存在超时的事件链,则删除超时的事件链;
g)删除超时事件链后,集合为空则后续操作同步骤c);
h)删除超时事件链后,不可以将当前事件添加到事件链,后续操作同步骤b);
i)将事件加入到事件链后,事件链的需要迁移,将事件链从缓存中移除;
判断事件链需要迁移的标准为事件链的前n个元素已经完整(n>1);
j)步骤b)中,将事件加入到事件链后,事件链已经完整,将事件链从缓存中移除,并送聚合引擎;判断事件链完整的标准为事件链中所有元素均存在;
k)步骤f)中,移除事件链后,重新构造查询的key,在缓存中查找是否有已经存在的同类型的事件链集合。构造新的查询key规则为将事件链中最后一个事件的表达式序号取出并增加1和关联条件中最后一个事件的实际值构成;
l)重复执行步骤b)到k)直至当前事件处理结束。
(3)如果事件匹配的规则中的最后一个表达式:
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中;
c)当前事件加入到最早的并且可以加入当前事件的事件链中后,判断事件链是否已经完整,完整则从缓存中移除当前事件链,并送聚合引擎,当前事件执行结束;
d)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
e)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
f)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
g)集合中存在超时的事件链,则删除超时的事件链;
h)删除超时事件链后,集合为空则后续操作同步骤d);
(4)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分:
a)根据表达式序列和规则关联条件中包含当前事件的第一个关联条件组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合。
b)如果存在事件链集合,执行步骤同2)中b),d)到1);
c)如果不存在事件链集合,重新组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合。重新组合key的规则为:组合当前匹配的表达式序号增加1和包含当前事件的第二个关联条件;
d)如果存在事件链集合,执行步骤同3)中b)到h);
e)如果b)和d)都查询不到相应的事件链集合,则根据步骤a)中的描述创建事件链集合的key,根据当前事件创建事件链,将事件链加入事件链集合,并将事件链集合加入缓存,当前事件执行结束。
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时(根据聚合条件中的聚合周期范围)。判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;存在超时事件链,删除所有超时的事件链。
本发明中,所述聚合引擎根据规则的聚合条件部分,将有相同属性的事件链合并,并判断是否可以进行后续操作。聚合过程如下:
(1)聚合次数为1,直接送报警引擎;
(2)聚合次数大于1,根据规则将聚合部分使用的缓存划分为不同的区域。聚合条件中存在相同属性配置,聚合引擎根据聚合条件中相同属性配置,组成查询的key。组成查询的key的由关联分析引擎送入的事件链中的实际值构成;
a)根据key查到存在事件链集合,将当前事件链加入到事件链集合中;
b)将当前事件链加入到事件链过程中,判断已存在的事件链是否超过聚合周期,超过则删除相应的事件链。判断事件链超时的标准为:当前事件链的开始时间–存在事件链的开始时间>聚合周期;
c)若步骤b)中不存在超时的事件链,确定事件链集合中事件链的数量达到聚合条件中的次数要求,将事件链集合中的所有事件送报警引擎;
d)事件链集合送入报警引擎后,从缓存中删除;
e)若步骤a)中查询不到事件链集合,则创建一个空的事件链集合,将当前事件链加入到集合中,并加入到缓存;
f)若步骤c)中事件链的数量未达到聚合条件的次数,则继续等待;
(3)聚合次数大于1,聚合条件不存在相同属性配置,则聚合引擎指定一个默认的key,其余同步骤(2)中所述;
(4)聚合次数大于1,聚合条件存在唯一属性配置,则计算事件链集合中数量的时候,任意两个事件链的唯一属性配置的实际值不相同,才算一次。
本发明中,所述报警引擎根据聚合引擎的输出,产生报警信息的过程如下:
(1)判断当前需要报警的规则没有触发过报警信息;
(2)报警引擎计算当前报警的级别,计算报警级别的公式为:(资产级别+规则级别+事件级别)/3;
(3)创建新的报警,将报警内容写入数据库;并将和当前报警相关联的原始事件写入数据库;
(4)如果步骤(1)中当前需要报警的规则已经产生过报警信息;则判断当前的报警信息和前一次报警是否可以合并。判断合并的标准为两次报警的时间区间不超过规则的聚合周期,并且前一次报警信息未被人工设置为已修复;
(5)如果步骤(4)中两次报警信息可以合并;则将前一次报警的次数累加,将新的事件链和相关联的原始事件入关联到前一次报警信息上;
(6)如果步骤(4)中两次报警信息不可以合并,则根据步骤(2)和步骤(3)创建新的报警信息。
由于采用了上述技术方案,本发明的整个关联分析系统由表达式执行引擎,关联分析引擎,聚合引擎和报警引擎有机结合起来,构成了一个强大的关联分析系统,可以执行用户配置的任何步骤和模式的规则,满足了多方面的需求。整个系统可以完全在内存中并发执行,可以达到很高的性能。
附图说明
图1为本发明实施例关联分析系统架构;
图2为本发明实施例表达式执行引擎流程图;
图3为本发明实施例关联分析引擎流程图;其中:
图3-1为本发明实施例关联分析引擎总体流程图;
图3-2为本发明实施例关联分析引擎中执行顺序关联的第一个表达式的流程图;
图3-3为本发明实施例关联分析引擎中执行顺序关联的最后一个表达式的流程图;
图3-4为本发明实施例关联分析引擎中执行顺序关联的其他表达式的流程图;
图3-5为本发明实施例关联分析引擎中执行无顺序要求的事件链关联的流程图;
图4为本发明实施例事件链有顺序要求的匹配过程图;
图5为本发明实施例事件链无顺序要求的匹配过程图;
图6为本发明实施例聚合引擎流程图;
图7为本发明实施例报警引擎流程图。
具体实施方式
以下结合附图和实施例对本发明的技术方案作进一步的解释,但是以下的内容不用于限定本发明的保护范围。
实施例1:
如图1所示,本实施例提供一种基于事件链的关联分析系统,系统分为表达式执行引擎,关联分析引擎,聚合引擎和报警引擎,所述表达式执行引擎、关联分析引擎、聚合引擎和报警引擎部分组合起来,执行规则库里面的规则,规则库的规则由可以由用户自定义配置或者是系统内置的知识库。
所述表达式执行引擎执行规则的表达式部分,根据事件和表达式,判断事件是否符合这个表达式的条件;如果符合,送到关联分析引擎,由关联分析引擎根据关联条件,找到各个事件之间的关联关系,形成事件链。形成事件链以后,送到聚合引擎中,聚合引擎根据聚合条件,将可以聚合的事件链聚合在一起,形成最后的高价值的事件链,送入报警引擎产生报警等。整体架构如图1所示。
本实施例中,所述关联分析引擎分别顺序事件链执行模块和无序事件链执行模块,根据形成事件链的事件是否有顺序要求进行不同的操作。
本实施例中一条规则分3部分组成:一个或者多个条件表达式,事件链之间的关联条件部分和事件链聚合条件。通常一条规则可以描述某种一系列行为。比如为了检测某种网络攻击行为的是否真的有效以及其危害性,需要从防火墙和IDS日志以及资产的漏洞进行关联分析。针对上述行为,可以将检测这个行为的规则用自然语言描述为:
①找到IDS的事件类型为Attack,攻击类型和被攻击资产的漏洞列表匹配;
②防火墙允许了这次网络行为;
③IDS检测到的事件和防火墙检测到的事件的目的地址都是同一个;
④10分钟之内,IDS和防火墙检测到该类型的事件发生次数大于等于1次;
⑤如果IDS检测到的多个事件的目的IP为同一个,认为是同一个攻击行为,将类型事件合并;目的IP不相同,创建新的事件,并重新计算事件发生的次数。
上述①-⑤都符合,则表明这个是真正的网络攻击行为,而且可能造成比较大的影响,因此需要产生报警信息,让管理人员发现系统的风险并做相应的处理。
将以自然语言描述的规则转化为关联分析系统可以执行的规则为:
表达式条件:
表达式1(匹配IDS日志,同①中的描述):
(Event1.devicetype=='IDS'&&Event1.eventtype=='Attack')&&Event1.attacktype in 资产漏洞列表
表达式2(匹配防火墙日志,同②中的描述):
(Event2.devicetype=='Firewall'&&Event2.eventtype==′Accept')
关联条件:
Event1.destinationIp==Event2.destiantionIp(2个事件的目标地址都是同一个,同③中的描述)
聚合条件:
条件1:
((Event1.startTime–Event2.startTime)<=10min||(Event2.startTime–Event1.startTime)<=10min))&&(Event1.count>=1&&Event2.count>=1)(2个事件在10分钟之内发生,事件重复次数大于等于1,同④中的描述)
相同属性:Event1.destinationIp(事件1的目的IP地址都是同一个,同⑤中的描述)。
此外聚合条件中还可以包含唯一性属性,如要求事件源IP都不相同。
表达式执行引擎
如图2所示,表达式执行引擎在启动的时候,将所有规则的表达式部分载入到内存中,并将文本描述的表达式转换为可执行的表达式。表达式执行引擎可以执行>、>=、<=、<、==、!=、&&、||、contains、in以及正则表达式等操作类型。当一个事件到达时,表达式执行引擎的执行过程如下:
(1)取出一条规则的所有表达式
a)将第一个表达式送到表达式执行器,执行器将该表达式的变量部分用事件中的实际值代替,如前述的表达式“(Event1.devicetype=='IDS'&&Event1.eventtype=='Attack')&&Event1.attacktype in资产漏洞列表”,将Event1.devicetype,Event1.eventtype和Event1.attacktype等变量都替换成事件中的实际值;“资产漏洞列表”则用当前被攻击的目标资产的漏洞信息替换;
b)值替换完毕后,表达式执行器判断这个表达式是否成立,如果成立,则匹配成功,送入关联分析引擎,结束执行当前规则的余下部分表达式;
c)如果步骤b不匹配,执行下一个表达式;
d)重复abc过程,直至事件匹配表达式或该规则的所有表达式执行完毕;
(2)执行下一条规则的所有表达式,过程如前(1),直至事件匹配某一表达式或者所有的规则的表达式都执行完毕。
上述(1)、(2)过程如果是在多处理器系统上执行,那么多条规则之间则并发执行,提升系统性能。
关联分析引擎
如图5所示,当表达式执行引擎匹配到某一个事件后,送入关联分析引擎。关联分析引擎根据关联条件,确定当前事件是创建一个新的事件链则创建一个全新的事件链,并加入到缓存中;否则就匹配缓存中已经存在的事件链,如果能够匹配到事件链,将当前事件加入到事件链中,并确定是否已经完整,如果已经形成完整的事件链,那么送入聚合引擎中。如果不满足创建事件链的条件并且匹配不到任何事件链则抛弃当前事件。根据形成事件链的事件是否有顺序要求,其具体过程有所不同。形成事件链的顺序是要求指即先有事件1,再有事件2才能形成事件链;无要求则表示,只要事件1和事件2在某个时间区间(聚合周期)范围内出现,不管其先后,那么就能够形成事件链。
事件链是一系列的事件的集合,可以用数组来表示。三个事件A,B和C形成事件链在缓存中可以表示为数组{A,B,C},其长度由规则中表达式数量决定。
如果规则只有一个表达式,说明该事件不需要和其他类型的事件做关联,则直接送入聚合引擎中。
事件链是顺序的
如图4所示,假如某一规则的事件链需要A-B-C三个事件构成的,关联条件简单描述为“A.IP=B.IP&&B.Port=C.Port”,即事件A和事件B的IP相同,事件B和事件C的端口相同。设定所有事件的IP地址都为127.0.0.1,Port都为80。如果形成事件链的事件是有顺序要求的,那么关联分析引擎中顺序事件链执行模块执行如下过程,如图3-1所示:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0(如果事件匹配规则中的第二个表达式的序号为1,以此递增);如图3-2所示。
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;如前面所述的第一个关联条件“A.IP=B.IP”,匹配的表达式序号为0,IP为127.0.0.1,实际组合的key为“1-127.0.0.1”;
b)如果存在同类的事件链集合,根据当前事件创建一个新的事件链,并加入到已经存在的事件链集合的末尾;
c)如果不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中;
(3)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分;如图3-4所示。
a)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
b)如果事件链集合存在,判断事件链集合中的事件链是否超时。判断超时的标准为:当前事件开始时间-集合中事件链的开始时间>聚合条件中的聚合周期范围;
c)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
d)将当前事件加入到最早的并且可以添加当前事件的事件链中。假设集合中存在事件链{A1,B1,}和{A2,,}和{A3,,},事件B2到达,根据查询key找到前述的三个事件链,将事件B2添加到事件链{A2,,},构成{A2,B2,}
e)将事件加入到事件链后,判断事件链的需要迁移,将事件链从缓存中移除;判断事件链需要迁移的标准为用当前事件表达式序号作为事件链数组的索引号,此时索引号之前的事件链数组均存在事件。如图4中“事件B1匹配”时,事件B1的表达式序号为1,事件链{A1,B1,}中索引为1之前的元素存在事件,因此需要迁移。
f)移除事件链后,重新构造缓存的key,将事件链加入到新的事件链集合中(若新的事件链集合不存在,则先创建一个,并加入缓存)。构造新的缓存key规则为将表达式序号增加1和下一个关联条件中当前事件的实际值构成;在图4中“事件B1匹配”后,根据下一个关联条件“B.Port=C.Port”构造的新的缓存的key为“2-80”。
g)步骤e)中,事件链不需要迁移,则将当前事件加入到已存在的事件链中;(4)如果事件匹配的规则中最后一个表达式部分;如图3-3所示。
f)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
g)如果事件链集合存在,判断事件链集合中的事件链是否超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
h)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
i)将当前事件加入到最老的事件链中,形成完整的事件链,送入聚合引擎中,并删除缓存中存在的事件链;如果同时存在多个符合条件的事件链,将当前事件加入到最早的那个事件链中;
j)如果事件链不存在,抛弃当前事件;
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时(根据聚合条件中的聚合周期范围)。判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;
a)存在超时事件链,删除所有超时的事件链;
b)删除超时事件链后,事件链集合不存在任何事件链,此时当前事件匹配的不是第一个表达式,说明不存在任何可以关联的事件链,抛弃当前事件。
根据以上的论述,假设事件都符合对应的表达式,事件链在不考虑事件链容量和超时间外,实际事件到达顺序为A1->A2->C1->B1->B2->C2,其事件链匹配顺序可以用图4表达。
初始状态如步骤(1)所属,根据规则将整个缓存分为若干区域,图4中只表示了一个规则的缓存区域。
事件A1到达,匹配规则的第一个表达式,表达式序号为0,事件A1的关联条件部分的实际值为127.0.0.1。由于是第一个表达式匹配,组合的查询的key为1-127.0.0.1,利用key在缓存中查不到同类的事件链集合,先创建事件链集合,将创建的事件链{A1,,}加入事件链集合中,并加入缓存。同步骤(2)中所述。此时缓存中的状态为图4中“事件A1匹配”一致。
事件A2到达,并匹配规则的第一个表达式,同事件A1到达,组合的查询的key为1-127.0.0.1,在内存中查到存在事件链集合,创建新的事件链{A2,,},并加到缓存key为1-127.0.0.1的事件链集合末尾。此时缓存中的状态为图4中“事件A2匹配”一致。
事件C1到达,并匹配规则的第三个表达式,根据同步骤(4)中a)所述组合查询条件2-80,查询到已存在的事件链;查询不到任何已经存在的事件链,抛弃事件C1,同步骤(4)中a)和c)所述。此时缓存中的状态为图4中“事件A2匹配”时刻一致,不发生任何改变。
事件B1到达,并匹配规则的第二个表达式,根据同步骤(3)中a)所述组合查询条件“1-127.0.0.1”,查询到已存在的事件链。将B1加入到事件链A1,构造新的事件链{A1,B1,},同步骤(3)中b)所述。此时事件链的需要迁移,将事件链{A1,B1,}从缓存中移除,并构建新的缓存key为“2-80”,将事件链{A1,B1,}重新加入到新的事件链集合中(如果新的事件链集合不存在,则先创建一个),同步骤(3)中c)和d)所述。此事缓存中的状态为图4中“事件B1匹配”时刻一致。
事件B2到达,并匹配规则的第二个表达式,同事件B1达到类似,发生事件链的迁移,并将迁移后的事件链加入已经存在的事件链集合的末尾。此事缓存中的状态为图4中“事件B2匹配”时刻一致。
事件C2到达,并匹配规则的第三个表达式也是最后一个表达式,组合查询key为“2-80”,找到存在的事件链集合,取出最老的一个事件链{A1,B1,},并将C2加入其中,构成{A1,B1,C2},送入聚合引擎,删除事件链{A1,B1,},同步骤(4)中所述一致。此时此事缓存中的状态为图4中“事件C2匹配”时刻一致。
事件链无顺序的
如图5所示,假如某一规则的事件链需要A-B-C三个事件构成的,关联条件简单描述为“A.IP=B.IP&&B.Port=C.Port”,即事件A和事件B的IP相同,事件B和事件C的端口相同。设定所有事件的IP地址都为127.0.0.1,Port都为80。如果形成事件链的事件是不确定先后顺序的,那么关联分析引擎中无序事件链执行模块执行如下过程,如图3-5所示:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0(如果事件匹配规则中的第二个表达式的序号为1,以此递增);
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;如前面所述的第一个关联条件“A.IP=B.IP”,匹配的表达式序号为0,IP为127.0.0.1,实际组合的key为“1-127.0.0.1”;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中。假设集合中存在事件链{,B1,}和{A2,,}和{A3,,},事件A1到达,根据查询key找到前述的三个事件链,将事件A1添加到事件链{,B1,},构成{A1,B1,};
c)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
d)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
e)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
f)集合中存在超时的事件链,则删除超时的事件链;
g)删除超时事件链后,集合为空则后续操作同步骤c);
h)删除超时事件链后,不可以将当前事件添加到事件链,后续操作同步骤b);
i)将事件加入到事件链后,事件链的需要迁移,将事件链从缓存中移除;判断事件链需要迁移的标准为事件链的前n个元素已经完整(n>1)。如步骤b)中事件A1添加到事件链{,B1,},构成{A1,B1,}后,事件链{A1,B1,}中前2个元素已经完整,因此需要迁移;
j)步骤b)中,将事件加入到事件链后,事件链已经完整,将事件链从缓存中移除,并送聚合引擎;判断事件链完整的标准为事件链中所有元素均存在。如将事件A1加入事件链{,B1,C1}后,事件链{A1,B1,C1}均存在,则送到聚合引擎,当前事件处理结束;
k)步骤f)中,移除事件链后,重新构造查询的key,在缓存中查找是否有已经存在的同类型的事件链集合。构造新的查询key规则为将事件链中最后一个事件的表达式序号取出并增加1和关联条件中最后一个事件的实际值构成;在事件链{A1,B1,}中,取出事件B1的表达式序号并增加1,实际值为2。由于事件链是期望匹配事件类型C,那么根据关联条件“B.Port=C.Port”,B1.Port的值是80,则构造的新的查询key为“2-80”。
l)重复执行步骤b)到k)直至当前事件处理结束。
(3)如果事件匹配的规则中的最后一个表达式:
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是最后一个表达式,如前面所述的第二个关联条件“B.Port=C.Port”,匹配的表达式序号为2,Port为80,实际组合的key为“2-80”;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中。假设集合中存在事件链{,B1,}和{,,C1},事件C2到达,根据查询key找到前述的二个事件链,将事件C2添加到事件链{,B1,C2};
c)当前事件加入到最早的并且可以加入当前事件的事件链中后,判断事件链是否已经完整,完整则从缓存中移除当前事件链,并送聚合引擎,当前事件执行结束;
d)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
e)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
f)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时。判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
g)集合中存在超时的事件链,则删除超时的事件链;
h)删除超时事件链后,集合为空则后续操作同步骤d);
(4)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分:
a)根据表达式序列和规则关联条件中包含当前事件的第一个关联条件组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合。由前所述的关联条件为“A.IP=B.IP&&B.Port=C.Port”。事件B1到达,匹配序号为1的表达式,先根据关联条件包含事件类型B的第一个关联条件“A.IP=B.IP”,取B1的IP实际值127.0.0.1和表达式序号组合查询key为“1-127.0.0.1”;
b)如果存在事件链集合,执行步骤同2)中b),d)到1);
c)如果不存在事件链集合,重新组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合。重新组合key的规则为:组合当前匹配的表达式序号增加1和包含当前事件的第二个关联条件。如前所述,表达式序号增加1为2,组合关联条件“B.Port=C.Port”中B1.Port的实际值80的查询条件为“2-80”
d)如果存在事件链集合,执行步骤同3)中b)到h);
e)如果b)和d)都查询不到相应的事件链集合,则根据步骤a)中的描述创建事件链集合的key,根据当前事件创建事件链,将事件链加入事件链集合,并将事件链集合加入缓存,当前事件执行结束。
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时(根据聚合条件中的聚合周期范围)。判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;存在超时事件链,删除所有超时的事件链。
根据以上的论述,假设事件都符合对应的表达式,事件链在不考虑事件链容量和超时间外,实际事件到达顺序为A1->A2->C1->B1->B2->C2,其事件链匹配顺序可以用图5表达。
初始状态如步骤(1)所属,根据规则将整个缓存分为若干区域,图5中只表示了一个规则的缓存区域。
事件A1到达,匹配规则的第一个表达式,表达式序号为0,事件A1的关联条件部分的实际值为127.0.0.1。由于是第一个表达式匹配,组合的查询的key为1-127.0.0.1,利用key在缓存中查不到同类的事件链集合,先创建事件链集合,将创建的事件链{A1,,}加入事件链集合中,并加入缓存。同步骤(2)中所述。此时缓存中的状态为图5中“事件A1匹配”一致。
事件A2到达,并匹配规则的第一个表达式,同事件A1到达,组合的查询的key为1-127.0.0.1,在内存中查到存在事件链集合,创建新的事件链{A2,,},并加到缓存key为1-127.0.0.1的事件链集合末尾。此时缓存中的状态为图5中“事件A2匹配”一致。
事件C1到达,并匹配规则的第三个表达式,根据步骤(3)中d)所述组合查询条件2-80,查询不到任何已经存在的事件链,创建事件链集合{,,C1}并加入到缓存中。此时缓存中的状态为图5中“事件C1匹配”时刻一致。
事件B1到达,并匹配规则的第二个表达式,根据步骤(2)中所述,根据查询条件“1-127.0.0.1”查找到存在的事件链{A1,,}和{A2,,},并将B1添加到事件链{A1,,}中构成新的事件链{A1,B1,},此时事件链需要迁移。在迁移过程中,匹配事件链{,,C1},形成完整的事件链{A1,B1,C1},从缓存中移除,送聚合引擎。此时缓存中的状态为图5中“事件B1匹配”时刻一致。
事件B2到达,并匹配规则的第二个表达式,根据步骤(2)中所述,根据查询条件“1-127.0.0.1”查找到存在的事件链{A2,,},将B2添加到事件链{A2,,}中构成新的事件链{A2,B2,},此时事件链需要迁移。取出事件B2的表达式序号并增加1,实际值为2。由于事件链是期望匹配事件类型C,那么根据关联条件“B.Port=C.Port”,B1.Port的值是80,则构造的新的查询key为“2-80”。由于查找不到存在的事件链集合,则创建新的事件链集合,将当前事件链加入到事件链集合中,并加入缓存。此时缓存中的状态为图5中“事件B2匹配”时刻一致。
事件C2到达,并匹配规则的第三个表达式,根据步骤(3)中d)所述组合查询条件2-80,查询已经存在的事件链{A2,B2,},并将C2添加到其中,形成完整的事件链{A2,B2,C2},从缓存中移除,送聚合引擎。事件链完整,到缓存中。此时缓存中的状态为图5中“事件C2匹配”时刻一致。
聚合引擎
如图6所示,聚合引擎根据规则的聚合部分,将有相同属性的事件链合并,并判断是否可以进行后续操作。聚合过程如下:
(1)聚合次数为1,直接送报警引擎;
(2)聚合次数大于1,根据规则将聚合部分使用的缓存划分为不同的区域。聚合条件中存在相同属性配置,聚合引擎根据聚合条件中相同属性配置,组成查询的key。组成查询的key的由关联分析引擎送入的事件链中的实际值构成。如关联分析引擎形成事件链{A1,B1,C1},聚合条件中相同属性的配置为A.destinationIP,则将A1中的destinationIP的值127.0.0.1取出,构成查询的key;
a)根据key查到存在事件链集合,将当前事件链加入到事件链集合中;
b)将当前事件链加入到事件链过程中,判断已存在的事件链是否超过聚合周期,超过则删除相应的事件链。判断事件链超时的标准为:当前事件链的开始时间–存在事件链的开始时间>聚合周期;
c)若步骤b)中不存在超时的事件链,确定事件链集合中事件链的数量达到聚合条件中的次数要求,将事件链集合中的所有事件送报警引擎;
d)事件链集合送入报警引擎后,从缓存中删除;
e)若步骤a)中查询不到事件链集合,则创建一个空的事件链集合,将当前事件链加入到集合中,并加入到缓存;
f)若步骤c)中事件链的数量未达到聚合条件的次数,则继续等待;
(3)聚合次数大于1,聚合条件不存在相同属性配置,则聚合引擎指定一个默认的key,其余同步骤(2)中所述。
(4)聚合次数大于1,聚合条件存在唯一属性配置,则计算事件链集合中数量的时候,任意两个事件链的唯一属性配置的实际值不相同,才算一次。如唯一性属性为A.Port,如果事件链{A1,B1,C1}和事件链{A2,B2,C2}的A1.Port和A2.Port相同,次数只算一次,不相同才能算2次。
报警引擎
如图7所示,报警引擎根据聚合引擎的输出,达到报警所设定的条件时,产生报警。报警过程如下:
(1)判断当前需要报警的规则没有触发过报警信息;
(2)报警引擎计算当前报警的级别,计算报警级别的公式为:(资产级别+规则级别+事件级别)/3;
(3)创建新的报警,将报警内容写入数据库;并将和当前报警相关联的原始事件写入数据库;
(4)如果步骤(1)中当前需要报警的规则已经产生过报警信息;则判断当前的报警信息和前一次报警是否可以合并。判断合并的标准为两次报警的时间区间不超过规则的聚合周期,并且前一次报警信息未被人工设置为已修复;
(5)如果步骤(4)中两次报警信息可以合并;则将前一次报警的次数累加,将新的事件链和相关联的原始事件入关联到前一次报警信息上;
(6)如果步骤(4)中两次报警信息不可以合并,则根据步骤(2)和步骤(3)创建新的报警信息。
尽管本发明的内容已经通过上述优选实施例作了详细介绍,但应当认识到上述的描述不应被认为是对本发明的限制。在本领域技术人员阅读了上述内容后,对于本发明的多种修改和替代都将是显而易见的。因此,本发明的保护范围应由所附的权利要求来限定。

Claims (7)

1.一种基于事件链的关联分析系统,其特征在于包括:表达式执行引擎,关联分析引擎,聚合引擎和报警引擎,这四个部分组合起来,执行规则库里面的规则,规则库的规则由用户自定义配置或者是系统内置的知识库;其中:
所述表达式执行引擎执行规则的表达式部分,根据事件和表达式,判断事件是否符合这个表达式的条件;如果符合,送到所述关联分析引擎;
所述关联分析引擎根据关联条件,找到各个事件之间的关联关系,形成事件链,形成事件链以后,送到所述聚合引擎中;
所述聚合引擎根据聚合条件,将可以聚合的事件链聚合在一起,形成最后的高价值的事件链,送到所述报警引擎中;
所述报警引擎根据事件链产生报警并执行相关后续操作;
所述表达式执行引擎启动时,将所有规则的表达式部分载入到内存中,并将文本描述的表达式转换为可执行的表达式,当一个事件到达时,表达式执行引擎的执行过程如下:
(1)取出一条规则的所有表达式:
a)将第一个表达式送到表达式执行器,执行器将该表达式的变量部分用事件中的实际值代替;
b)值替换完毕后,表达式执行器判断这个表达式是否成立,如果成立,则匹配成功,送入关联分析引擎,结束执行当前规则的余下部分表达式;
c)如果不匹配,执行下一个表达式;
d)重复abc过程,直至事件匹配表达式或者该规则的所有表达式执行完毕;
(2)执行下一条规则的所有表达式,过程如前(1),直至事件匹配某一表达式或者所有的规则的表达式都执行完毕;
上述(1)、(2)过程如果是在多处理器系统上执行,那么多条规则之间则并发执行,提升系统性能。
2.根据权利要求1所述的基于事件链的关联分析系统,其特征在于:所述规则库的规则,其中每条规则分3部分组成,即:一个或者多个条件表达式,条件表达式之间的关联条件部分和事件链聚合条件;一条规则可以描述某种一系列行为。
3.根据权利要求1所述的基于事件链的关联分析系统,其特征在于:所述关联分析引擎根据关联条件,确定当前事件是创建一个新的事件链则创建一个全新的事件链,并加入到缓存中,否则就匹配缓存中已经存在的事件链,如果能够匹配到事件链,将当前事件加入到事件链中,并确定是否已经完整,如果形成完整的事件链,送入聚合引擎中,如果不满足创建事件链的条件并且匹配不到任何事件链则抛弃当前事件,根据形成事件链的事件是否有顺序要求,其具体过程有所不同,其中形成事件链的顺序有要求指即先有事件1,再有事件2才能形成事件链;无要求则表示,只要事件1和事件2在某个时间区间范围内出现,不管其先后,都能够形成事件链;
如果规则不需要进行关联,即一个规则只有一个表达式,只需要匹配一类事件,则关联分析引擎直接把事件送入聚合引擎。
4.根据权利要求3所述的基于事件链的关联分析系统,其特征在于:所述关联分析引擎在形成事件链的事件有顺序要求时,执行如下过程:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0,如果事件匹配规则中的第二个表达式的序号为1,以此递增;
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;
b)如果存在同类的事件链集合,根据当前事件创建一个新的事件链,并加入到已经存在的事件链集合的末尾;
c)如果不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中;
(3)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分;
a)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
b)如果事件链集合存在,判断事件链集合中的事件链是否超时,判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
c)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
d)将当前事件加入到最早的并且可以添加当前事件的事件链中;
e)将事件加入到事件链后,判断事件链的需要迁移,将事件链从缓存中移除;判断事件链需要迁移的标准为用当前事件表达式序号作为事件链数组的索引号,此时索引号之前的事件链数组均存在事件;
f)移除事件链后,重新构造缓存的key,将事件链加入到新的事件链集合中即若新的事件链集合不存在,则先创建一个,并加入缓存,构造新的缓存key规则为将表达式序号增加1和下一个关联条件中当前事件的实际值构成;
g)步骤e)中,事件链不需要迁移,则将当前事件加入到已存在的事件链中;
(4)如果事件匹配的规则中最后一个表达式部分;
a)组合表达式序号和关联条件中当前事件的实际值构成的查询条件,在缓存区域中查找是否存在事件链;
b)如果事件链集合存在,判断事件链集合中的事件链是否超时,判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
c)集合中存在超时的事件链,则删除超时的事件链;删除超时事件链后,集合为空则抛弃当前事件;
d)将当前事件加入到最老的事件链中,形成完整的事件链,送入聚合引擎中,并删除缓存中存在的事件链;如果同时存在多个符合条件的事件链,将当前事件加入到最早的那个事件链中;
e)如果事件链不存在,抛弃当前事件;
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时,判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;
a)存在超时事件链,删除所有超时的事件链;
b)删除超时事件链后,事件链集合不存在任何事件链,此时当前事件匹配的不是第一个表达式,说明不存在任何可以关联的事件链,抛弃当前事件。
5.根据权利要求3所述的基于事件链的关联分析系统,其特征在于:所述关联分析引擎在形成事件链的事件没顺序要求时,执行如下过程:
(1)根据规则将缓存分为若干区域,不同区域存放不同规则的事件链;
(2)如果事件匹配某一规则中的第一条表达式,认为事件是初始状态,表达式序列号为0,如果事件匹配规则中的第二个表达式的序号为1,以此递增;
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;由于匹配的是第一个表达式,需要将表达式序号设置为1;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中;
c)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
d)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
e)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时,判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
f)集合中存在超时的事件链,则删除超时的事件链;
g)删除超时事件链后,集合为空则后续操作同步骤c);
h)删除超时事件链后,不可以将当前事件添加到事件链,后续操作同步骤b);
i)将事件加入到事件链后,事件链的需要迁移,将事件链从缓存中移除;判断事件链需要迁移的标准为事件链的前n个元素已经完整,n>1;
j)步骤b)中,将事件加入到事件链后,事件链已经完整,将事件链从缓存中移除,并送聚合引擎;判断事件链完整的标准为事件链中所有元素均存在;
k)步骤f)中,移除事件链后,重新构造查询的key,在缓存中查找是否有已经存在的同类型的事件链集合,构造新的查询key规则为将事件链中最后一个事件的表达式序号取出并增加1和关联条件中最后一个事件的实际值构成;
l)重复执行步骤b)到k)直至当前事件处理结束;
(3)如果事件匹配的规则中的最后一个表达式:
a)根据规则中关联条件部分结合表达式序列号,在缓存中查找是否有已经存在的同类型的事件链集合;组合查询的key由表达式序号和关联条件中当前事件的实际值构成;
b)如果存在同类的事件链集合,将当前事件加入到最早的并且可以加入当前事件的事件链中;
c)当前事件加入到最早的并且可以加入当前事件的事件链中后,判断事件链是否已经完整,完整则从缓存中移除当前事件链,并送聚合引擎,当前事件执行结束;
d)如步骤b)中不存在同类的事件链集合,根据当前事件创建一个新的事件链,并创建一个新的事件链集合,加入当前事件链,将整个事件链集合加入到缓存区域中,当前事件处理结束;
e)如步骤b)中不可以将当前事件添加到事件链,则创建一个新的事件链,将当前事件加入新事件链,并新事件链加入事件链集合的结尾,当前事件处理结束;
f)步骤b)中,将事件加入事件链过程中,判断事件链集合中的事件链超时,判断超时的标准为:当前事件开始时间–集合中事件链的开始时间>聚合条件中的聚合周期范围;
g)集合中存在超时的事件链,则删除超时的事件链;
h)删除超时事件链后,集合为空则后续操作同步骤d);
(4)如果事件匹配规则中的除第一个表达式和最后一个表达式以外部分:
a)根据表达式序列和规则关联条件中包含当前事件的第一个关联条件组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合;
b)如果存在事件链集合,执行步骤同2)中b),d)到1);
c)如果不存在事件链集合,重新组合查询key,在缓存中查找是否有已经存在的同类型的事件链集合,重新组合key的规则为:组合当前匹配的表达式序号增加1和包含当前事件的第二个关联条件;
d)如果存在事件链集合,执行步骤同3)中b)到h);
e)如果b)和d)都查询不到相应的事件链集合,则根据步骤a)中的描述创建事件链集合的key,根据当前事件创建事件链,将事件链加入事件链集合,并将事件链集合加入缓存,当前事件执行结束;
(5)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经达到缓存容量的最大值,如果达到,删除最老的一个事件链;
(6)在将新事件链加入到已经存在的事件链集合过程中,判断已经存在的事件链是否已经超时,判断的标准为事件链1的开始时间-事件链2的开始时间>聚合条件中的聚合周期范围;存在超时事件链,删除所有超时的事件链。
6.根据权利要求1-5任一项所述的基于事件链的关联分析系统,其特征在于:所述聚合引擎根据规则的聚合部分,将有相同属性的事件链合并,并判断是否可以进行后续操作,聚合过程如下:
(1)聚合次数为1,直接送报警引擎;
(2)聚合次数大于1,根据规则将聚合部分使用的缓存划分为不同的区域;聚合条件中存在相同属性配置,聚合引擎根据聚合条件中相同属性配置,组成查询的key,组成查询的key的由关联分析引擎送入的事件链中的实际值构成;
a)根据key查到存在事件链集合,将当前事件链加入到事件链集合中;
b)将当前事件链加入到事件链过程中,判断已存在的事件链是否超过聚合周期,超过则删除相应的事件链,判断事件链超时的标准为:当前事件链的开始时间–存在事件链的开始时间>聚合周期;
c)若步骤b)中不存在超时的事件链,确定事件链集合中事件链的数量达到聚合条件中的次数要求,将事件链集合中的所有事件送报警引擎;
d)事件链集合送入报警引擎后,从缓存中删除;
e)若步骤a)中查询不到事件链集合,则创建一个空的事件链集合,将当前事件链加入到集合中,并加入到缓存;
f)若步骤c)中事件链的数量未达到聚合条件的次数,则继续等待
(3)聚合次数大于1,聚合条件不存在相同属性配置,则聚合引擎指定一个默认的key,其余同步骤(2)中所述;
(4)聚合次数大于1,聚合条件存在唯一属性配置,则计算事件链集合中数量的时候,任意两个事件链的唯一属性配置的实际值不相同,才算一次。
7.根据权利要求1-5任一项所述的基于事件链的关联分析系统,其特征在于:所述报警引擎的报警过程如下:
(1)判断当前需要报警的规则没有触发过报警信息;
(2)报警引擎计算当前报警的级别,计算报警级别的公式为:(资产级别+规则级别+事件级别)/3;
创建新的报警,将报警内容写入数据库;并将和当前报警相关联的原始事件写入数据库;
(4)如果步骤(1)中当前需要报警的规则已经产生过报警信息;则判断当前的报警信息和前一次报警是否可以合并;判断合并的标准为两次报警的时间区间不超过规则的聚合周期,并且前一次报警信息未被人工设置为已修复;
(5)如果步骤(4)中两次报警信息可以合并;则将前一次报警的次数累加,将新的事件链和相关联的原始事件入关联到前一次报警信息上;
(6)如果步骤(4)中两次报警信息不可以合并,则根据步骤(2)和步骤(3)创建新的报警信息。
CN201210271970.6A 2012-08-01 2012-08-01 一种基于事件链的关联分析系统 Active CN103580900B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210271970.6A CN103580900B (zh) 2012-08-01 2012-08-01 一种基于事件链的关联分析系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210271970.6A CN103580900B (zh) 2012-08-01 2012-08-01 一种基于事件链的关联分析系统

Publications (2)

Publication Number Publication Date
CN103580900A CN103580900A (zh) 2014-02-12
CN103580900B true CN103580900B (zh) 2016-12-21

Family

ID=50051886

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210271970.6A Active CN103580900B (zh) 2012-08-01 2012-08-01 一种基于事件链的关联分析系统

Country Status (1)

Country Link
CN (1) CN103580900B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104166727B (zh) * 2014-08-28 2018-01-02 北京京东尚科信息技术有限公司 一种相似性时间序列搜索的方法和装置
CN105119945A (zh) * 2015-09-24 2015-12-02 西安未来国际信息股份有限公司 一种用于安全管理中心的日志关联分析方法
CN106815349B (zh) * 2017-01-19 2021-04-23 银联国际有限公司 基于哈希算法和正则匹配的时间过滤方法及事件过滤方法
CN109145178A (zh) * 2017-06-16 2019-01-04 阿里巴巴集团控股有限公司 一种关系图处理方法及装置
CN107481039A (zh) * 2017-07-27 2017-12-15 平安科技(深圳)有限公司 一种事件处理方法及终端设备
CN107506408B (zh) * 2017-08-08 2020-10-30 北京盛华安信息技术有限公司 对海量事件分布式关联匹配的方法及系统
CN108881365A (zh) * 2018-03-15 2018-11-23 兴业数字金融服务(上海)股份有限公司 一种基于事件链的区块链存证溯源方法及系统
CN109471741A (zh) * 2018-10-31 2019-03-15 新华三大数据技术有限公司 一种Spark平台中事件处理方法和装置
CN110109957B (zh) * 2019-03-29 2021-10-01 奇安信科技集团股份有限公司 流式事件关联匹配方法及装置
CN110083626B (zh) * 2019-03-29 2021-08-31 奇安信科技集团股份有限公司 流式事件序列匹配方法及装置
CN111818111B (zh) * 2019-04-11 2021-10-15 华为技术有限公司 一种主机及服务器
CN110175123A (zh) * 2019-05-22 2019-08-27 中国石油大学(华东) 一种基于符号表达式静态缺陷警报关联识别方法
CN111309559B (zh) * 2020-02-20 2022-09-09 厦门科灿信息技术有限公司 告警联动方法、装置及终端设备
CN111797233B (zh) * 2020-06-12 2021-04-30 南京擎盾信息科技有限公司 基于垂直领域的事件链结构识别的方法和装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567807B1 (en) * 2000-01-28 2003-05-20 Ccbn.Com, Inc. Investor relations event scheduling system and method
CN101217408A (zh) * 2008-01-17 2008-07-09 中兴通讯股份有限公司 全方位故障相关性处理系统及其处理方法
CN101610174A (zh) * 2009-07-24 2009-12-23 深圳市永达电子股份有限公司 一种日志关联分析系统与方法
CN101771582A (zh) * 2009-12-28 2010-07-07 北京神州泰岳软件股份有限公司 一种基于状态机的安全监控关联分析方法
CN101902441A (zh) * 2009-05-31 2010-12-01 北京启明星辰信息技术股份有限公司 一种可实现序列攻击事件检测的入侵检测方法
CN102043702A (zh) * 2009-10-16 2011-05-04 阿里巴巴集团控股有限公司 监控事件的方法、规则引擎装置和规则引擎系统
CN102136922A (zh) * 2010-01-22 2011-07-27 华为技术有限公司 相关性分析的方法、设备及系统
CN102142983A (zh) * 2010-11-24 2011-08-03 华为技术有限公司 告警相关性分析方法和装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6567807B1 (en) * 2000-01-28 2003-05-20 Ccbn.Com, Inc. Investor relations event scheduling system and method
CN101217408A (zh) * 2008-01-17 2008-07-09 中兴通讯股份有限公司 全方位故障相关性处理系统及其处理方法
CN101902441A (zh) * 2009-05-31 2010-12-01 北京启明星辰信息技术股份有限公司 一种可实现序列攻击事件检测的入侵检测方法
CN101610174A (zh) * 2009-07-24 2009-12-23 深圳市永达电子股份有限公司 一种日志关联分析系统与方法
CN102043702A (zh) * 2009-10-16 2011-05-04 阿里巴巴集团控股有限公司 监控事件的方法、规则引擎装置和规则引擎系统
CN101771582A (zh) * 2009-12-28 2010-07-07 北京神州泰岳软件股份有限公司 一种基于状态机的安全监控关联分析方法
CN102136922A (zh) * 2010-01-22 2011-07-27 华为技术有限公司 相关性分析的方法、设备及系统
CN102142983A (zh) * 2010-11-24 2011-08-03 华为技术有限公司 告警相关性分析方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
网络多步攻击识别方法研究;王莉;《中国博士学位论文全文数据库》;20090515(第5期);第18页第18-27行 *

Also Published As

Publication number Publication date
CN103580900A (zh) 2014-02-12

Similar Documents

Publication Publication Date Title
CN103580900B (zh) 一种基于事件链的关联分析系统
CN102075511B (zh) 一种数据匹配设备和方法以及网络入侵检测设备和方法
EP2477355B1 (en) Method and device for managing association of network resources
CN101876986B (zh) 基于有限状态自动机的字符串匹配方法及内容过滤设备
CN103559231B (zh) 一种文件系统配额管理方法、装置及系统
CN108563425A (zh) 一种事件驱动的多流程协同处理系统
US20130226855A1 (en) Graph generation method for graph-based search
JP2005346703A (ja) 事象処理システム
Su et al. Smartsupply: smart contract based validation for supply chain blockchain
WO2012081148A1 (en) Packet classifier, packet classification method and packet classification program
Zhao et al. Frequent subgraph mining based on Pregel
CN104618304A (zh) 数据处理方法及数据处理系统
CN103593721A (zh) 基于复杂事件处理的业务流程监控方法
CN105939323A (zh) 数据包过滤方法及装置
CN106203631A (zh) 描述型多维度事件序列的并行频繁情节挖掘方法与系统
El-Fakih Distinguishing experiments for timed nondeterministic finite state machine
CN104391992B (zh) 针对资产数据的数据处理系统
CN109298976A (zh) 一种异构数据库集群备份系统及方法
CN105335245B (zh) 故障存储方法和装置、故障查找方法和装置
Moon et al. A compositional model to reason about end-to-end QoS in stochastic Reo connectors
CN101409624A (zh) 规则匹配装置和方法
CN106445968A (zh) 一种数据合并方法及装置
CN105357177A (zh) 一种数据包过滤规则集处理方法及数据包匹配方法
CN101968747B (zh) 一种机群应用管理系统及其应用管理方法
KR102118646B1 (ko) 블록체인 이중지불 탐지 시스템 및 방법

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant