规则匹配方法和装置、计算机可读存储介质与流程

专利2024-04-19  3

1.本公开涉及安全领域,特别涉及一种规则匹配方法和装置、计算机可读存储介质。
背景技术
::2.安全事件检测是安全告警和处置的基础。安全研究人员将规则提取成正则表达式,用于匹配网络流量数据,识别和输出告警事件。相关技术目前安全事件检测的方法一般是:对于一条待检测流量,遍历所有规则分别匹配得出结果,将所命中规则的事件信息输出,这种方式不能高效地解决大规模安全规则与安全数据的匹配问题。技术实现要素:3.鉴于以上技术问题中的至少一项,本公开提供了一种规则匹配方法和装置、计算机可读存储介质,能够对大量规则进行分解和表示以及数据与规则匹配,输出准确的安全告警事件。4.根据本公开的一个方面,提供一种规则匹配方法,包括:5.对规则进行读取和预处理;6.构建规则分解大顶堆模型;7.采用规则分解大顶堆模型,对流量数据和安全规则进行匹配;8.根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。9.在本公开的一些实施例中,所述对规则进行读取和预处理包括:10.从规则库中读取规则集合,其中,规则的属性包括规则标识、正则表达式字符串和事件类型编码,事件类型编码用于标记规则对应的事件类型;11.根据事件类型编码对规则集合进行分类;12.对每个事件类型编码所属规则集合初始化一个相同权值;13.将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。14.在本公开的一些实施例中,所述构建规则分解大顶堆模型包括:15.构建规则分解大顶堆模型,其中,规则分解大顶堆模型包括三层架构,其中:16.第一层为模型根结点,模型根结点为输入节点,采用规则分解树对象标识;17.第二层为事件类型编码结点,为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式;18.第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。19.在本公开的一些实施例中,所述采用规则分解大顶堆模型,对流量数据和安全规则进行匹配包括:20.从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据;21.针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配。22.在本公开的一些实施例中,所述针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配包括:23.针对每一条流量数据,将该流量数据传递到事件类型编码结点层;24.遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点;25.在流量数据命中一个事件类型编码结点的情况下,将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配;26.在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点的匹配结果缓存中。27.在本公开的一些实施例中,所述规则匹配方法还包括:28.在一个规则结点的匹配结果缓存中所缓存的数据量大于预定阈值的情况下,将产生的一批安全事件数据存入时间结果数据库。29.在本公开的一些实施例中,所述根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重包括:30.在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重;31.利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。32.在本公开的一些实施例中,所述根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重包括:33.针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量;34.根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。35.在本公开的一些实施例中,所述规则匹配方法还包括:36.通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;37.在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。38.根据本公开的另一方面,提供一种规则匹配装置,包括:39.规则读取模块,被配置为对规则进行读取和预处理;40.模型构建模块,被配置为构建规则分解大顶堆模型;41.规则匹配模块,被配置为采用规则分解大顶堆模型,对流量数据和安全规则进行匹配;42.权重更新模块,被配置为根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。43.在本公开的一些实施例中,规则读取模块,被配置为从规则库中读取规则集合,其中,规则的属性包括规则标识、正则表达式字符串和事件类型编码,事件类型编码用于标记规则对应的事件类型;根据事件类型编码对规则集合进行分类;对每个事件类型编码所属规则集合初始化一个相同权值;将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。44.在本公开的一些实施例中,模型构建模块,被配置为构建规则分解大顶堆模型,其中,规则分解大顶堆模型包括三层架构,其中:第一层为模型根结点,模型根结点为输入节点,采用规则分解树对象标识;第二层为事件类型编码结点,为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式;第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。45.在本公开的一些实施例中,规则匹配模块,被配置为从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据;针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配。46.在本公开的一些实施例中,规则匹配模块,在针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配的情况下,被配置为针对每一条流量数据,将该流量数据传递到事件类型编码结点层;遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点;在流量数据命中一个事件类型编码结点的情况下,将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配;在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点的匹配结果缓存中。47.在本公开的一些实施例中,规则匹配模块,还被配置为在一个规则结点的匹配结果缓存中所缓存的数据量大于预定阈值的情况下,将产生的一批安全事件数据存入时间结果数据库。48.在本公开的一些实施例中,权重更新模块,被配置为在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重;利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。49.在本公开的一些实施例中,权重更新模块,在根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重的情况下,被配置为针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量;根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。50.在本公开的一些实施例中,所述规则匹配装置还包括:51.模型序列化模块,被配置为通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。52.根据本公开的另一方面,提供一种规则匹配装置,包括:53.存储器,被配置为存储指令;54.处理器,被配置为执行所述指令,使得所述规则匹配装置执行实现如上述任一实施例所述规则匹配方法的操作。55.根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例所述规则匹配方法。56.本公开能够对大量规则进行分解和表示以及数据与规则匹配,输出准确的安全告警事件。附图说明57.为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。58.图1为本公开规则匹配方法一些实施例的示意图。59.图2为本公开规则匹配方法另一些实施例的示意图。60.图3为本公开一些实施例中规则分解大顶堆模型的示意图。61.图4为本公开一些实施例中实现规则分解大顶堆模型的类关系设计图。62.图5为本公开规则匹配装置一些实施例的示意图。63.图6为本公开规则匹配装置另一些实施例的结构示意图。具体实施方式64.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。65.除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。66.同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。67.对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为授权说明书的一部分。68.在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。69.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。70.发明人通过研究发现:相关技术不能高效地解决大规模安全规则与安全数据的匹配问题,体现在:71.第一、相关技术规则常常是互相独立的,不存在关联关系,因此需要遍历整个规则集合,在大规模的情况下存在计算资源浪费;72.第二、相关技术缺乏规则的重要性评估机制,在随机情况下,时间复杂度为o(n+mn),而在特定的系统中,不同类型攻击的概率并非呈均匀分布,那么随机顺序的规则匹配方式不是最优;73.第三、相关技术种,若输入数据不能产生事件,则出现极端情况,需要匹配完全体规则才能得出结论,不能进行有效预判来减少无关规则的匹配次数。而现实中大量原始数据是正常流量。74.鉴于相关技术大规模安全规则匹配方法存在的技术问题中的至少一项,本公开提供了一种规则匹配方法和装置、计算机可读存储介质,下面通过具体实施例对本公开进行说明。75.图1为本公开规则匹配方法一些实施例的示意图。图2为本公开规则匹配方法另一些实施例的示意图。优选的,本实施例可由本公开规则匹配装置执行。如图1和图2所示,该方法包括步骤1至步骤4中的至少一个步骤,其中:76.步骤1,对规则进行读取和预处理。77.在本公开的一些实施例中,步骤1可以包括步骤11至步骤14中的至少一个步骤,其中:78.步骤11,如图2所示,从规则库中读取规则集合,其中,规则的属性(使用到的相关属性)包括规则标识、正则表达式字符串和事件类型编码code_id,事件类型编码code_id用于标记规则对应的事件类型。79.步骤12,如图2所示,根据事件类型编码code_id对规则集合进行分类。例如某个code_id表示的是“sql注入类型事件”等。80.步骤13,对每个事件类型编码所属规则集合初始化一个相同权值,满足所有权值之和为1。81.步骤14,将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。82.在本公开的一些实施例中,步骤4可以包括:将所属规则的正则文本进行文本分词处理,去重后用或符号“|”连接起来,作为该所属规则集合的前置条件正则表达式。83.步骤2,构建rdbh(ruledecompositionbig-topheap,规则分解大顶堆)模型。84.图3为本公开一些实施例中规则分解大顶堆模型的示意图。图4为本公开一些实施例中实现规则分解大顶堆模型的类关系设计图。85.在本公开的一些实施例中,如图2所示,步骤2可以包括步骤21至步骤23中的至少一个步骤,其中:86.步骤21,按所属规则权值创建大顶堆。87.步骤22,将所属规则的正则文本进行文本分词处理,处理成事件类型编码结点(code_id结点)的正则表达式。88.在本公开的一些实施例中,步骤22可以包括:为每个事件类型编码code_id创建一个事件类型编码结点codeidnode,将步骤4确定的该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式。89.步骤23,构建规则分解大顶堆模型,其中,如图3所示,规则分解大顶堆模型包括三层架构,其中:90.第一层为模型根结点,模型根结点为输入节点,采用规则分解树(ruledecompositiontree)对象标识。如图4所示,所述规则分解树可以为规则分解大顶堆树(ruledecompositionheaptree)。91.第二层为事件类型编码code_id结点。为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式。92.第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。93.在本公开的一些实施例中,如图3和图4所示,code_id结点的下游连接一个由所属规则集合形成的大顶堆(ruleheap);为每个规则创建一个rulenode结点,通过堆排序算法根据规则的权值weight构建成大顶堆。94.在本公开的一些实施例中,如图2所示,步骤2还可以包括:设共有n个规则,a个不同的code_id,则构建rdbh模型的时间复杂度如公式(1),小于一般堆排序的时间复杂度。[0095][0096]步骤3,采用规则分解大顶堆模型,对流量数据和安全规则进行匹配。[0097]在本公开的一些实施例中,如图2所示,步骤3可以包括步骤31至步骤35中的至少一个步骤,其中:[0098]步骤31,从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据。[0099]步骤32,针对每一条流量数据,将该流量数据从根结点传递到事件类型编码结点层(codeidnode层)。[0100]步骤33,遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点。在流量数据命中一个事件类型编码结点的情况下,执行步骤34;否则,在流量数据未命中该事件类型编码结点的情况下,大顶堆中所有规则均不可能匹配中数据,可以跳过该codeidnode的所属规则子集,考虑下一个codeidnode,针对下一个codeidnode执行判断流量数据是否命中该事件类型编码结点的步骤。[0101]步骤34,在流量数据命中一个事件类型编码结点的情况下,则表示该大顶堆中可能存在匹配的具体规则;将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配。[0102]步骤35,在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点rulenode的匹配结果缓存matchedresultcache中。[0103]步骤36,在一个规则结点rulenode的匹配结果缓存matchedresultcache中所缓存的数据量大于预定阈值batchsize的情况下,触发批量入库操作,将产生的一批安全事件数据存入时间结果数据库。[0104]步骤4,根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。[0105]在本公开的一些实施例中,如图2所示,步骤4可以包括:模型更新和序列化。[0106]在本公开的一些实施例中,如图2所示,步骤4可以包括步骤41至步骤43中的至少一个步骤,其中:[0107]步骤41,计算并更新模型权重。[0108]在本公开的一些实施例中,步骤41可以包括:在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重。[0109]在本公开的一些实施例中,步骤41可以包括步骤411至步骤412中的至少一个步骤,其中:[0110]步骤411,针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量。[0111]在本公开的一些实施例中,步骤411可以包括:针对每一个规则rulenode结点,根据公式(2)确定该规则的变化向量δd。公式(2)中,p表示数据命中该规则的概率,t表示此规则的平均匹配时长,s表示规则正则表达式的字符串长度。[0112]δd=f(p,t,s)=-[(1-p)t+logs]=(p-1)t-logs(2)[0113]步骤412,根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。[0114]在本公开的一些实施例中,步骤412可以包括:根据公式(3)和(4)确定该规则更新后的规则权重w′i,公式(3)和(4)中,w表示更新前规则权重。[0115][0116]w′i=wi+δwiꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ(4)[0117]步骤42,调节规则分解大顶堆模型的结点顺序。[0118]在本公开的一些实施例中,步骤42可以包括:利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。[0119]在本公开的一些实施例中,步骤42可以包括:更新权重之后,利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列,令权重更大的规则能以更少的次数被执行匹配。[0120]步骤43,模型序列化存储到文件。[0121]在本公开的一些实施例中,步骤42可以包括:通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。[0122]本公开上述实施例流程分为两大部分,分别为rdbh模型构建和规则匹配。本公开上述实施例在第一次使用规则的时候,需要先进行rdbh模型的构建,之后可以从序列化文件恢复模型到内存。[0123]针对当下大规模安全规则匹配方法存在的不足,本公开上述实施例提供了一种面向大规模独立规则的匹配方法。旨在解决独立规则的快速匹配、规则的重要性评估和排序、减少无关规则匹配次数的问题,本公开上述实施例利用规则分解大顶堆模型对大量规则进行分解和表示以及数据与规则匹配,输出准确的安全告警事件。本公开上述实施例的方法适用于大规模安全规则与安全数据的匹配应用。[0124]下面通过具体实施例对本公开规则匹配方法和装置进行说明。具体以某安全流量检测系统为例进行说明。[0125]第一步,规则读取及预处理。[0126]从规则库中读取规则集合,使用到的相关属性有规则id、正则表达式字符串、标记事件类型的code_id。[0127]根据code_id对规则集合进行分类,设共有3个code_id:1001,1002,1003,code_id为1001表示的是“sql注入类型事件”等,然后给每个code_id所属规则初始化一个相同权值,满足所有权值之和为1;另一方面,将所属规则的正则文本进行文本分词处理,设code_id为1001有如表1所示的几条规则:[0128]表1[0129]id=\d+;create)and1=\((select|create)id=.*;select[0130]则分词去重后得到词汇集合:“id”、“create”、“select”、“and”,连接成“id|create|select|and”作为前置条件正则表达式,赋予code_id=1001的结点。[0131]第二步,构建和存储规则分解大顶堆模型:[0132]创建一个rdbh模型,模型根结点是输入结点,以ruledecompositiontree对象表示;第二层由code_id构成,共创建3个codeidnode类型结点,将第一步的所属规则的前置条件作为该结点的正则表达式;code_id结点的下游连接一个由所属规则集合形成的大顶堆,为每个规则创建一个rulenode结点,通过堆排序算法根据规则的权值weight构建成大顶堆。如code_id为1001的结点下的大顶堆共3个规则结点。[0133]第三步,流量数据与安全规则匹配:[0134]从原始数据表中读取分析时间范围内的流量数据,遍历数据。针对每一条流量数据使用rdbh模型进行规则匹配。若一条数据为“xxxxid=123;selectfromx_table”,则命中code_id=1001的前置正则规则,进入下一层的大顶堆中以广度优先遍历的方式与规则子集进行匹配,并命中上述的第3条具体规则,缓存并等待触发入库;若另一条数据为“xxxxjndi:rmi://com.object”,则无法命中code_id=1001的前置正则规则,忽略其下一层的大顶堆,然后尝试与code_id=1002/1003的结点做匹配,直至命中某个规则或没有合适的规则能够命中。[0135]第四步,更新rdbh模型的规则权重:[0136]批量匹配完数据之后,根据此批数据的匹配情况更新rdbh模型的规则权重参数。假设针对上述第1个规则,共有40%的数据命中该规则,平均匹配时长为2ms,规则正则表达式的字符串长度是12,计算:[0137]δd=f(p,t,s)=(0.4—1)*2-log12=-2.28[0138]若共有3个规则结点,则得到向量δd=(-2.28,-3.46,-10.5),进一步约束其数值总和为0,得权重更新差值为δw=(3.13,1.95,-5.09),可计算更新后权重值。更新权重之后,利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。[0139]第五步,序列化存储模型文件[0140]通过序列化的方式将rdbh模型编码成二进制数据,存储到模型文件中,若下次使用时规则集合没有变动,则可以直接从文件恢复整个模型到内存中。[0141]图5为本公开规则匹配装置一些实施例的示意图。如图5所示,本公开规则匹配装置可以包括规则读取模块51、模型构建模块52、规则匹配模块53和权重更新模块54,其中:[0142]规则读取模块51,被配置为对规则进行读取和预处理。[0143]在本公开的一些实施例中,规则读取模块51,可以被配置为从规则库中读取规则集合,其中,规则的属性包括规则标识、正则表达式字符串和事件类型编码,事件类型编码用于标记规则对应的事件类型;根据事件类型编码对规则集合进行分类;对每个事件类型编码所属规则集合初始化一个相同权值;将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。[0144]模型构建模块52,被配置为构建规则分解大顶堆模型。[0145]在本公开的一些实施例中,模型构建模块52,可以被配置为构建规则分解大顶堆模型,其中,规则分解大顶堆模型包括三层架构,其中:第一层为模型根结点,模型根结点为输入节点,采用规则分解树对象标识;第二层为事件类型编码结点,为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式;第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。[0146]规则匹配模块53,被配置为采用规则分解大顶堆模型,对流量数据和安全规则进行匹配。[0147]在本公开的一些实施例中,规则匹配模块53,可以被配置为从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据;针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配。[0148]在本公开的一些实施例中,规则匹配模块53,在针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配的情况下,可以被配置为针对每一条流量数据,将该流量数据传递到事件类型编码结点层;遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点;在流量数据命中一个事件类型编码结点的情况下,将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配;在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点的匹配结果缓存中。[0149]在本公开的一些实施例中,规则匹配模块53,还可以被配置为在一个规则结点的匹配结果缓存中所缓存的数据量大于预定阈值的情况下,将产生的一批安全事件数据存入时间结果数据库。[0150]权重更新模块54,被配置为根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。[0151]在本公开的一些实施例中,权重更新模块54,可以被配置为在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重;利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。[0152]在本公开的一些实施例中,权重更新模块54,在根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重的情况下,可以被配置为针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量;根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。[0153]在本公开的一些实施例中,如图5所示,所述规则匹配装置还可以包括模型序列化模块55,其中:[0154]模型序列化模块55,被配置为通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。[0155]本公开上述实施例提出面向大规模独立规则的匹配方法和装置,使得:[0156]第一、本公开上述实施例中,规则基于code_id被拆分成多个互斥集合,经由code_id层的前置条件过滤,直接减少大批无关规则被执行匹配。[0157]第二、本公开上述实施例采用分解规则集合的大顶堆排序,优于全体规则的堆排序,进一步提高使用堆结构的性能,在大规模规则的情况下更加显著。[0158]第三、本公开上述实施例中,计算规则的重要性程度,将更大概率命中、匹配消耗时间更少的综合表现作为模型中规则节点的权重值,整体上减少了期望匹配时耗。[0159]第四、本公开上述实施例基于批量数据的匹配情况不断更新权重参数,保持了模型的动态变化,一方面能更好拟合真实的命中概率分布,另一方面能够自适应系统安全攻击发生变化的情况。[0160]第五、本公开上述实施例的模型层次分明,易于理解,且提供了实现的类型方案,能够快速实现。[0161]第六、本公开上述实施例以序列化文件保存模型和参数,节省了每次构建模型的时间,且可直接移植到其他设备上读取。[0162]图6为本公开规则匹配装置另一些实施例的结构示意图。如图6所示,本公开规则匹配装置可以包括存储器61和处理器62。[0163]存储器61用于存储指令,处理器62耦合到存储器61,处理器62被配置为基于存储器存储的指令执行实现如上述任一实施例(例如图1至图4任一实施例)所述规则匹配方法。[0164]如图6所示,该规则匹配装置还包括通信接口63,用于与其它设备进行信息交互。同时,该规则匹配装置还包括总线64,处理器62、通信接口63、以及存储器61通过总线64完成相互间的通信。[0165]存储器61可以包含高速ram存储器,也可还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。存储器61也可以是存储器阵列。存储器61还可能被分块,并且块可按一定的规则组合成虚拟卷。[0166]此外,处理器62可以是一个中央处理器cpu,或者可以是专用集成电路asic,或是被配置成实施本公开实施例的一个或多个集成电路。[0167]本公开上述实施例采用了独有的rdbh模型结构:以分层结构实现大规模独立规则集的解耦、分解与建模,通过前置条件和堆排序减少无关规则的匹配次数,能够支持大量规则与流量数据的匹配任务。[0168]本公开上述实施例采用了独有的规则权重更新方案:结合与规则执行效率相关的两个因素及具体场景的规则命中概率,评估每个规则的重要性,作为规则权重更新的方向,让匹配次数和单个规则执行时耗取得平衡,逐步拟合真实业务系统场景。[0169]本公开上述实施例采用了独有的规则结点命中结果缓存机制:规则结点带有缓存机制,不需要每次命中都产生事件入库,而由缓存内容和阈值来触发批量入库,实现数据懒处理,降低计算和i/o开销。[0170]根据本公开的另一方面,提供一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如上述任一实施例(例如图1至图4任一实施例)所述规则匹配方法。[0171]在本公开的一些实施例中,所述计算机可读存储介质可以为非瞬时性计算机可读存储介质。[0172]本公开上述实施例可以应用于大规模安全规则与安全数据的匹配应用。[0173]本领域内的技术人员应明白,本公开的实施例可提供为方法、装置、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。[0174]本公开是参照根据本公开实施例的方法、设备(系统)和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。[0175]这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。[0176]这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。[0177]在上面所描述的规则匹配装置、规则读取模块、模型构建模块、规则匹配模块、权重更新模块和模型序列化模块可以实现为用于执行本技术所描述功能的通用处理器、可编程逻辑控制器(plc)、数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件或者其任意适当组合。[0178]至此,已经详细描述了本公开。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。[0179]本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种非瞬时性计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0180]本公开的描述是为了示例和描述起见而给出的,而并不是无遗漏的或者将本公开限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显然的。选择和描述实施例是为了更好说明本公开的原理和实际应用,并且使本领域的普通技术人员能够理解本公开从而设计适于特定用途的带有各种修改的各种实施例。当前第1页12当前第1页12
技术特征:
1.一种规则匹配方法,包括:对规则进行读取和预处理;构建规则分解大顶堆模型;采用规则分解大顶堆模型,对流量数据和安全规则进行匹配;根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。2.根据权利要求1所述的规则匹配方法,其中,所述对规则进行读取和预处理包括:从规则库中读取规则集合,其中,规则的属性包括规则标识、正则表达式字符串和事件类型编码,事件类型编码用于标记规则对应的事件类型;根据事件类型编码对规则集合进行分类;对每个事件类型编码所属规则集合初始化一个相同权值;将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。3.根据权利要求2所述的规则匹配方法,其中,所述构建规则分解大顶堆模型包括:构建规则分解大顶堆模型,其中,规则分解大顶堆模型包括三层架构,其中:第一层为模型根结点,模型根结点为输入节点,采用规则分解树对象标识;第二层为事件类型编码结点,为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式;第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。4.根据权利要求3所述的规则匹配方法,其中,所述采用规则分解大顶堆模型,对流量数据和安全规则进行匹配包括:从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据;针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配。5.根据权利要求4所述的规则匹配方法,其中,所述针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配包括:针对每一条流量数据,将该流量数据传递到事件类型编码结点层;遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点;在流量数据命中一个事件类型编码结点的情况下,将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配;在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点的匹配结果缓存中。6.根据权利要求5所述的规则匹配方法,还包括:在一个规则结点的匹配结果缓存中所缓存的数据量大于预定阈值的情况下,将产生的一批安全事件数据存入时间结果数据库。7.根据权利要求1-6中任一项所述的规则匹配方法,其中,所述根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重包括:在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重;利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。
8.根据权利要求7所述的规则匹配方法,其中,所述根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重包括:针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量;根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。9.根据权利要求1-6中任一项所述的规则匹配方法,还包括:通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。10.一种规则匹配装置,包括:规则读取模块,被配置为对规则进行读取和预处理;模型构建模块,被配置为构建规则分解大顶堆模型;规则匹配模块,被配置为采用规则分解大顶堆模型,对流量数据和安全规则进行匹配;权重更新模块,被配置为根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。11.根据权利要求10所述的规则匹配装置,其中:规则读取模块,被配置为从规则库中读取规则集合,其中,规则的属性包括规则标识、正则表达式字符串和事件类型编码,事件类型编码用于标记规则对应的事件类型;根据事件类型编码对规则集合进行分类;对每个事件类型编码所属规则集合初始化一个相同权值;将每个事件类型编码所属规则集合的正则文本进行文本分词处理,去重后用特定符合连接起来,作为该所属规则集合的前置条件正则表达式。12.根据权利要求11所述的规则匹配装置,其中:模型构建模块,被配置为构建规则分解大顶堆模型,其中,规则分解大顶堆模型包括三层架构,其中:第一层为模型根结点,模型根结点为输入节点,采用规则分解树对象标识;第二层为事件类型编码结点,为每个事件类型编码创建一个事件类型编码结点,将该所属规则集合的前置条件正则表达式作为该事件类型编码结点的正则表达式;第三层为一个由所属规则集合形成的大顶堆,所述大顶堆连接在事件类型编码结点的下游,为每个规则创建一个规则结点,通过堆排序算法根据规则的权值构建成大顶堆。13.根据权利要求12所述的规则匹配装置,其中:规则匹配模块,被配置为从原始数据表中读取分析时间范围内的流量数据,遍历每一条流量数据;针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配。14.根据权利要求13所述的规则匹配装置,其中:规则匹配模块,在针对每一条流量数据,使用规则分解大顶堆模型进行规则匹配的情况下,被配置为针对每一条流量数据,将该流量数据传递到事件类型编码结点层;遍历所有事件类型编码结点,判断流量数据是否命中一个事件类型编码结点;在流量数据命中一个事件类型编码结点的情况下,将该流量数据传递到大顶堆根结点,以广度优先遍历的方式与大顶堆中的规则子集进行匹配;在该流量数据命中规则子集中一个规则的情况下,终止该条数据的匹配过程,将该流量数据缓存到所命中的规则结点的匹配结果缓存中。
15.根据权利要求14所述的规则匹配装置,其中:规则匹配模块,还被配置为在一个规则结点的匹配结果缓存中所缓存的数据量大于预定阈值的情况下,将产生的一批安全事件数据存入时间结果数据库。16.根据权利要求10-14中任一项所述的规则匹配装置,其中:权重更新模块,被配置为在匹配完批量流量数据的情况下,根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重;利用堆排序的方式根据新权重参数重新调节大顶堆的结点排列。17.根据权利要求16所述的规则匹配装置,其中:权重更新模块,在根据该批次流量数据的匹情况更新规则分解大顶堆模型的规则权重的情况下,被配置为针对每一个规则结点,根据数据命中该规则的概率、该规则的平均匹配时长、和该规则正则表达式的字符串长度,确定该规则的变化向量;根据该规则的变化向量、所有规则的变化向量的和、更新前该规则的规则权重,确定该规则更新后的规则权重。18.根据权利要求17所述的规则匹配装置,还包括:模型序列化模块,被配置为通过序列化的方式将规则分解大顶堆模型编码成二进制数据,存储到模型文件中;在下次使用时规则集合没有变动的情况下,直接从模型文件恢复整个规则分解大顶堆模型到内存中。19.一种规则匹配装置,包括:存储器,被配置为存储指令;处理器,被配置为执行所述指令,使得所述规则匹配装置执行实现如权利要求1-9中任一项所述规则匹配方法的操作。20.一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机指令,所述指令被处理器执行时实现如权利要求1-9中任一项所述规则匹配方法。

技术总结
本公开涉及一种规则匹配方法和装置、计算机可读存储介质。该规则匹配方法包括:对规则进行读取和预处理;构建规则分解大顶堆模型;采用规则分解大顶堆模型,对流量数据和安全规则进行匹配;根据流量数据的匹配情况,更新规则分解大顶堆模型的规则权重。本公开能够对大量规则进行分解和表示以及数据与规则匹配,输出准确的安全告警事件。出准确的安全告警事件。出准确的安全告警事件。


技术研发人员:谢泳 刘亚天 呼博文 汪来富
受保护的技术使用者:中国电信股份有限公司
技术研发日:2022.10.12
技术公布日:2022/12/16
转载请注明原文地址: https://bbs.8miu.com/read-414991.html

最新回复(0)