一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng),包括:表達(dá)式執(zhí)行引擎,關(guān)聯(lián)分析引擎,聚合引擎和報(bào)警引擎,這四個(gè)部分組合起來,執(zhí)行規(guī)則庫里面的規(guī)則。表達(dá)式執(zhí)行引擎執(zhí)行規(guī)則的表達(dá)式部分,根據(jù)事件和表達(dá)式,判斷事件是否符合這個(gè)表達(dá)式;如果符合,送到關(guān)聯(lián)分析引擎;關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,找到各個(gè)事件之間的關(guān)聯(lián)關(guān)系,形成事件鏈,形成事件鏈以后,送到聚合引擎中;聚合引擎根據(jù)聚合條件將可以聚合的事件鏈聚合在一起,形成最后的高價(jià)值的事件鏈,送到報(bào)警引擎中;報(bào)警引擎根據(jù)事件鏈產(chǎn)生報(bào)警并執(zhí)行相關(guān)后續(xù)操作。本發(fā)明可以執(zhí)行規(guī)則庫里面的規(guī)則,滿足多方面的需求。整個(gè)系統(tǒng)可以完全在內(nèi)存中并發(fā)執(zhí)行,可以達(dá)到很高的性能。
【專利說明】一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng)【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域和信息系統(tǒng)領(lǐng)域,具體地說,涉及的是一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng)。
【背景技術(shù)】
[0002]關(guān)聯(lián)分析是指如果兩個(gè)或多個(gè)事件之間存在一定的關(guān)聯(lián),那么其中一個(gè)事物就能通過其他事物進(jìn)行預(yù)測(cè),它的目的是為了挖掘隱藏在數(shù)據(jù)間的相互關(guān)系。
[0003]現(xiàn)有的關(guān)聯(lián)分析技術(shù)和方式,多數(shù)是要求進(jìn)行關(guān)聯(lián)分析的事件之間是有明確的時(shí)序的,才能夠?qū)κ录M(jìn)行關(guān)聯(lián)分析,否則無法匹配到規(guī)則,造成事件的漏報(bào)。如“一種基于狀態(tài)機(jī)的安全監(jiān)控關(guān)聯(lián)分析方法”(申請(qǐng)?zhí)?200910243576.X)論述了一種基于狀態(tài)機(jī)的關(guān)聯(lián)分析技術(shù),該方法能夠檢測(cè)事件具有時(shí)間順序的安全事件之間的相互行為,如該專利的權(quán)利要求I中描述的內(nèi)容。“一種日志關(guān)聯(lián)分析系統(tǒng)與方法”(申請(qǐng)?zhí)?200910157310.3)中事件流邏輯關(guān)聯(lián)方法也是要求日志事件是否為已有事件鏈的后續(xù)事件,如果不成立,該事件也就不匹配,限制了無序事件這種方式。
[0004]然而在實(shí)際情況中,多個(gè)事件通常是來至于多個(gè)系統(tǒng)中,因此事件之間的時(shí)序有時(shí)候很難保證。如在安全系統(tǒng)中,通常都有防火墻和IDS或者IPS。通常需要將防火墻和IDS的日志進(jìn)行關(guān)聯(lián)分析才能夠得出一個(gè)比較有價(jià)值的報(bào)警事件。由于防火墻日志和IDS日志是獨(dú)立的,防火墻是串接設(shè)備,IDS是旁路設(shè)備,是屬于2個(gè)不同的設(shè)備。2個(gè)設(shè)備針對(duì)同一個(gè)攻擊行為的相關(guān)事件匯報(bào)的先后順序是無法完全肯定的,可能通常是防火墻先到達(dá),IDS后到達(dá)。如果設(shè)定的規(guī)則是防火墻事件為前一安全事件,IDS事件為后一安全事件,在防火墻事件先到達(dá),IDS事件后達(dá)到的情況下,文獻(xiàn)中提及的方案均能夠檢測(cè)出威脅,如果事件到達(dá)的時(shí)序相反了,文獻(xiàn)中的方案均無效。如果為了解決事件之間的時(shí)序錯(cuò)亂問題,文獻(xiàn)中可能可以通過配置2條時(shí)序相反的規(guī)則來實(shí)現(xiàn),但是如果進(jìn)行復(fù)雜關(guān)聯(lián)的時(shí)候,規(guī)則的數(shù)量就成級(jí)數(shù)上升,對(duì)系統(tǒng)性能會(huì)有嚴(yán)重影響。對(duì)于這一狀況,本系統(tǒng)以基于事件鏈的方式,能夠很好的解決事件之 間的時(shí)序問題。對(duì)于事件,不管到達(dá)的時(shí)間先后順序問題,只要事件匹配規(guī)則庫中的規(guī)則,就可以形成完整的事件鏈,產(chǎn)生相應(yīng)的報(bào)警,避免系統(tǒng)的誤報(bào)和漏報(bào)。
[0005]事件鏈?zhǔn)侵阜弦?guī)則庫中某一個(gè)規(guī)則的一系列事件的集合,形成事件鏈的事件之間可以是有時(shí)序的,也可以是無序的。事件來源于安全設(shè)備,主機(jī)網(wǎng)絡(luò)系統(tǒng)或者是應(yīng)用系統(tǒng)
坐寸ο
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的在于解決現(xiàn)有技術(shù)中的上述不足,提供一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng),能夠根據(jù)規(guī)則,對(duì)事件進(jìn)行準(zhǔn)確的分析,得出相應(yīng)的結(jié)果,提高可靠性和準(zhǔn)確性。
[0007]為實(shí)現(xiàn)上述的目的,本發(fā)明所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),包括:表達(dá)式執(zhí)行引擎,關(guān)聯(lián)分析引擎,聚合引擎和報(bào)警引擎,這四個(gè)部分組合起來,執(zhí)行規(guī)則庫里面的規(guī)則,規(guī)則庫的規(guī)則由用戶自定義配置或者是系統(tǒng)內(nèi)置的知識(shí)庫;其中:
[0008]所述表達(dá)式執(zhí)行引擎執(zhí)行規(guī)則的表達(dá)式部分,根據(jù)事件和表達(dá)式,判斷事件是否符合這個(gè)表達(dá)式的條件;如果符合,送到所述關(guān)聯(lián)分析引擎;
[0009]所述關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,找到各個(gè)事件之間的關(guān)聯(lián)關(guān)系,形成事件鏈,形成事件鏈以后,送到所述聚合引擎中;
[0010]所述聚合引擎根據(jù)聚合條件,將可以聚合的事件鏈聚合在一起,形成最后的高價(jià)值的事件鏈,送到所述報(bào)警引擎中;
[0011]所述報(bào)警引擎根據(jù)事件鏈產(chǎn)生報(bào)警并執(zhí)行相關(guān)后續(xù)操作。
[0012]本發(fā)明中,所述規(guī)則庫的規(guī)則,其中每條規(guī)則分3部分組成,即:一個(gè)或者多個(gè)表達(dá)式,事件鏈之間的關(guān)聯(lián)條件部分和規(guī)則的聚合條件部分。通常一條規(guī)則可以描述某種一系列行為。
[0013]本發(fā)明中,所述表達(dá)式執(zhí)行引擎在啟動(dòng)的時(shí)候,將所有規(guī)則的表達(dá)式部分載入到內(nèi)存中,并將文本描述的表達(dá)式轉(zhuǎn)換為可執(zhí)行的表達(dá)式,當(dāng)一個(gè)事件到達(dá)時(shí),表達(dá)式執(zhí)行引擎的執(zhí)行過程如下:
[0014](I)取出一條規(guī)則的所有表達(dá)式:
[0015]a)將第一個(gè)表達(dá)式送到表達(dá)式執(zhí)行器,執(zhí)行器將該表達(dá)式的變量部分用事件中的實(shí)際值代替;
[0016]b)值替換完畢后,表達(dá)式執(zhí)行器判斷這個(gè)表達(dá)式是否成立,如果成立,則匹配成功,送入關(guān)聯(lián)分析引擎,結(jié)束執(zhí)行當(dāng)前規(guī)則的余下部分表達(dá)式;
[0017]c)如果不匹配,執(zhí)行下一個(gè)表達(dá)式;
[0018]d)重復(fù)abc過程,直至事件匹配表達(dá)式或者該規(guī)則的所有表達(dá)式執(zhí)行完畢;
[0019](2)執(zhí)行下一條規(guī)則的所有表達(dá)式,過程如前(1),直至事件匹配某一表達(dá)式或者所有的規(guī)則的表達(dá)式都執(zhí)行完畢。
[0020]上述(1)、(2)過程如果是在多處理器系統(tǒng)上執(zhí)行,那么多條規(guī)則之間則并發(fā)執(zhí)行,提升系統(tǒng)性能。
[0021]本發(fā)明中,當(dāng)表達(dá)式執(zhí)行引擎的某一表達(dá)式匹配到事件后,將當(dāng)前事件送入關(guān)聯(lián)分析引擎。關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,確定當(dāng)前事件是創(chuàng)建一個(gè)新的事件鏈則創(chuàng)建一個(gè)全新的事件鏈,并加入到緩存中;否則就匹配緩存中已經(jīng)存在的事件鏈,如果能夠匹配到事件鏈,將當(dāng)前事件加入到事件鏈中,并確定是否已經(jīng)完整,如果形成完整的事件鏈,送入聚合引擎中。如果不滿足創(chuàng)建事件鏈的條件并且匹配不到任何事件鏈則拋棄當(dāng)前事件。根據(jù)形成事件鏈的事件是否有順序要求,其具體過程有所不同。形成事件鏈的順序有要求指即先有事件1,再有事件2才能形成事件鏈;無要求則表示,只要事件I和事件2在某個(gè)時(shí)間區(qū)間(聚合周期)范圍內(nèi)出現(xiàn),不管其先后,都能夠形成事件鏈。
[0022]如果規(guī)則不需要進(jìn)行關(guān)聯(lián),即一個(gè)規(guī)則只有一個(gè)表達(dá)式,只需要匹配一類事件,則關(guān)聯(lián)分析引擎直接把事件送入聚合引擎。
[0023]所述關(guān)聯(lián)分析引擎在形成事件鏈的事件有順序要求時(shí),執(zhí)行如下過程:
[0024](I)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈;
[0025](2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O (如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增);[0026]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ;
[0027]b)如果存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并加入到已經(jīng)存在的事件鏈集合的末尾;
[0028]c)如果不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中;
[0029](3)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分;
[0030]a)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈;
[0031]b)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0032]c)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件;
[0033]d)將當(dāng)前事件加入到最早的并且可以添加當(dāng)前事件的事件鏈中;
[0034]e)將事件加入到事件鏈后,判斷事件鏈的需要遷移,將事件鏈從緩存中移除;判斷事件鏈需要遷移的標(biāo)準(zhǔn)為用當(dāng)前事件表達(dá)式序號(hào)作為事件鏈數(shù)組的索引號(hào),此時(shí)索引號(hào)之前的事件鏈數(shù)組均存在事件;
[0035]f)移除事件鏈后,重新構(gòu)造緩存的key,將事件鏈加入到新的事件鏈集合中(若新的事件鏈集合不存在,則先創(chuàng)建一個(gè),并加入緩存)。構(gòu)造新的緩存key規(guī)則為將表達(dá)式序號(hào)增加I和下一個(gè)關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;
[0036]g)步驟e)中,事件鏈不需要遷移,則將當(dāng)前事件加入到已存在的事件鏈中;
[0037](4)如果事件匹配的規(guī)則中最后一個(gè)表達(dá)式部分;
[0038]a)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈;
[0039]b)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0040]c)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件;
[0041]d)將當(dāng)前事件加入到最老的事件鏈中,形成完整的事件鏈,送入聚合引擎中,并刪除緩存中存在的事件鏈;如果同時(shí)存在多個(gè)符合條件的事件鏈,將當(dāng)前事件加入到最早的那個(gè)事件鏈中;
[0042]e)如果事件鏈不存在,拋棄當(dāng)前事件;
[0043](5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈;
[0044](6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí)(根據(jù)聚合條件中的聚合周期范圍)。判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間 > 聚合條件中的聚合周期范圍;
[0045]a)存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈;[0046]b)刪除超時(shí)事件鏈后,事件鏈集合不存在任何事件鏈,此時(shí)當(dāng)前事件匹配的不是第一個(gè)表達(dá)式,說明不存在任何可以關(guān)聯(lián)的事件鏈,拋棄當(dāng)前事件。
[0047]所述關(guān)聯(lián)分析引擎在形成事件鏈的事件無順序要求時(shí),執(zhí)行如下過程:
[0048](I)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈;
[0049](2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O (如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增);
[0050]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ;
[0051]b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中;
[0052]c)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束;
[0053]d)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,則創(chuàng)建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束;
[0054]e)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0055]f)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;
[0056]g)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟c);
[0057]h)刪除超時(shí)事件鏈后,不可以將當(dāng)前事件添加到事件鏈,后續(xù)操作同步驟b);
[0058]i)將事件加入到事件鏈后,事件鏈的需要遷移,將事件鏈從緩存中移除;
[0059]判斷事件鏈需要遷移的標(biāo)準(zhǔn)為事件鏈的前η個(gè)元素已經(jīng)完整(η>1);
[0060]j)步驟b)中,將事件加入到事件鏈后,事件鏈已經(jīng)完整,將事件鏈從緩存中移除,并送聚合引擎;判斷事件鏈完整的標(biāo)準(zhǔn)為事件鏈中所有元素均存在;
[0061]k)步驟f)中,移除事件鏈后,重新構(gòu)造查詢的key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。構(gòu)造新的查詢key規(guī)則為將事件鏈中最后一個(gè)事件的表達(dá)式序號(hào)取出并增加I和關(guān)聯(lián)條件中最后一個(gè)事件的實(shí)際值構(gòu)成;
[0062]I)重復(fù)執(zhí)行步驟b)到k)直至當(dāng)前事件處理結(jié)束。
[0063](3)如果事件匹配的規(guī)則中的最后一個(gè)表達(dá)式:
[0064]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;
[0065]b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中;
[0066]c)當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中后,判斷事件鏈?zhǔn)欠褚呀?jīng)完整,完整則從緩存中移除當(dāng)前事件鏈,并送聚合引擎,當(dāng)前事件執(zhí)行結(jié)束;
[0067]d)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束;
[0068]e)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,則創(chuàng)建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束;
[0069]f)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0070]g)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;
[0071]h)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟d);
[0072](4)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分:
[0073]a)根據(jù)表達(dá)式序列和規(guī)則關(guān)聯(lián)條件中包含當(dāng)前事件的第一個(gè)關(guān)聯(lián)條件組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。
[0074]b)如果存在事件鏈集合,執(zhí)行步驟同2)中b),d)到I);
[0075]c)如果不存在事件鏈集合,重新組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。重新組合key的規(guī)則為:組合當(dāng)前匹配的表達(dá)式序號(hào)增加I和包含當(dāng)前事件的第二個(gè)關(guān)聯(lián)條件;
[0076]d)如果存在事件鏈集合,執(zhí)行步驟同3)中b)到h);
[0077]e)如果b)和d)都查詢不到相應(yīng)的事件鏈集合,則根據(jù)步驟a)中的描述創(chuàng)建事件鏈集合的key,根據(jù)當(dāng)前事件創(chuàng)建事件鏈,將事件鏈加入事件鏈集合,并將事件鏈集合加入緩存,當(dāng)前事件執(zhí)行結(jié)束。
[0078](5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈;;
[0079](6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí)(根據(jù)聚合條件中的聚合周期范圍)。判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間〉聚合條件中的聚合周期范圍;存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈。
[0080]本發(fā)明中,所述聚合引擎根據(jù)規(guī)則的聚合條件部分,將有相同屬性的事件鏈合并,并判斷是否可以進(jìn)行后續(xù)操作。聚合過程如下:
[0081](I)聚合次數(shù)為1,直接送報(bào)警引擎;
[0082](2)聚合次數(shù)大于1,根據(jù)規(guī)則將聚合部分使用的緩存劃分為不同的區(qū)域。聚合條件中存在相同屬性配置,聚合引擎根據(jù)聚合條件中相同屬性配置,組成查詢的key。組成查詢的key的由關(guān)聯(lián)分析引擎送入的事件鏈中的實(shí)際值構(gòu)成;
[0083]a)根據(jù)key查到存在事件鏈集合,將當(dāng)前事件鏈加入到事件鏈集合中;
[0084]b)將當(dāng)前事件鏈加入到事件鏈過程中,判斷已存在的事件鏈?zhǔn)欠癯^聚合周期,超過則刪除相應(yīng)的事件鏈。判斷事件鏈超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件鏈的開始時(shí)間-存在事件鏈的開始時(shí)間 > 聚合周期;
[0085]c)若步驟b)中不存在超時(shí)的事件鏈,確定事件鏈集合中事件鏈的數(shù)量達(dá)到聚合條件中的次數(shù)要求,將事件鏈集合中的所有事件送報(bào)警引擎;
[0086]d)事件鏈集合送入報(bào)警引擎后,從緩存中刪除;[0087]e)若步驟a)中查詢不到事件鏈集合,則創(chuàng)建一個(gè)空的事件鏈集合,將當(dāng)前事件鏈加入到集合中,并加入到緩存;
[0088]f)若步驟c)中事件鏈的數(shù)量未達(dá)到聚合條件的次數(shù),則繼續(xù)等待;
[0089](3)聚合次數(shù)大于1,聚合條件不存在相同屬性配置,則聚合引擎指定一個(gè)默認(rèn)的key,其余同步驟⑵中所述;
[0090](4)聚合次數(shù)大于1,聚合條件存在唯一屬性配置,則計(jì)算事件鏈集合中數(shù)量的時(shí)候,任意兩個(gè)事件鏈的唯一屬性配置的實(shí)際值不相同,才算一次。
[0091]本發(fā)明中,所述報(bào)警引擎根據(jù)聚合引擎的輸出,產(chǎn)生報(bào)警信息的過程如下:
[0092](I)判斷當(dāng)前需要報(bào)警的規(guī)則沒有觸發(fā)過報(bào)警信息;
[0093](2)報(bào)警引擎計(jì)算當(dāng)前報(bào)警的級(jí)別,計(jì)算報(bào)警級(jí)別的公式為:(資產(chǎn)級(jí)別+規(guī)則級(jí)別+事件級(jí)別)/3 ;
[0094](3)創(chuàng)建新的報(bào)警,將報(bào)警內(nèi)容寫入數(shù)據(jù)庫;并將和當(dāng)前報(bào)警相關(guān)聯(lián)的原始事件寫入數(shù)據(jù)庫;
[0095](4)如果步驟(I)中當(dāng)前需要報(bào)警的規(guī)則已經(jīng)產(chǎn)生過報(bào)警信息;則判斷當(dāng)前的報(bào)警信息和前一次報(bào)警是否可以合并。判斷合并的標(biāo)準(zhǔn)為兩次報(bào)警的時(shí)間區(qū)間不超過規(guī)則的聚合周期,并且前一次報(bào)警信息未被人工設(shè)置為已修復(fù);
[0096](5)如果步驟(4)中兩次報(bào)警信息可以合并;則將前一次報(bào)警的次數(shù)累加,將新的事件鏈和相關(guān)聯(lián)的原始事件入關(guān)聯(lián)到前一次報(bào)警信息上;
[0097](6)如果步驟(4)中兩次報(bào)警信息不可以合并,則根據(jù)步驟(2)和步驟(3)創(chuàng)建新的報(bào)警信息。
[0098]由于采用了上述技術(shù)方案,本發(fā)明的整個(gè)關(guān)聯(lián)分析系統(tǒng)由表達(dá)式執(zhí)行引擎,關(guān)聯(lián)分析引擎,聚合引擎和報(bào)警引擎有機(jī)結(jié)合起來,構(gòu)成了一個(gè)強(qiáng)大的關(guān)聯(lián)分析系統(tǒng),可以執(zhí)行用戶配置的任何步驟和模式的規(guī)則,滿足了多方面的需求。整個(gè)系統(tǒng)可以完全在內(nèi)存中并發(fā)執(zhí)行,可以達(dá)到很高的性能。
【專利附圖】
【附圖說明】
[0099]圖1為本發(fā)明實(shí)施例關(guān)聯(lián)分析系統(tǒng)架構(gòu);
[0100]圖2為本發(fā)明實(shí)施例表達(dá)式執(zhí)行引擎流程圖;
[0101]圖3為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎流程圖;其中:
[0102]圖3-1為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎總體流程圖;
[0103]圖3-2為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎中執(zhí)行順序關(guān)聯(lián)的第一個(gè)表達(dá)式的流程圖;
[0104]圖3-3為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎中執(zhí)行順序關(guān)聯(lián)的最后一個(gè)表達(dá)式的流程圖;
[0105]圖3-4為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎中執(zhí)行順序關(guān)聯(lián)的其他表達(dá)式的流程圖;
[0106]圖3-5為本發(fā)明實(shí)施例關(guān)聯(lián)分析引擎中執(zhí)行無順序要求的事件鏈關(guān)聯(lián)的流程圖;
[0107]圖4為本發(fā)明實(shí)施例事件鏈有順序要求的匹配過程圖;
[0108]圖5為本發(fā)明實(shí)施例事件鏈無順序要求的匹配過程圖;
[0109]圖6為本發(fā)明實(shí)施例聚合引擎流程圖;
[0110]圖7為本發(fā)明實(shí)施例報(bào)警引擎流程圖。【具體實(shí)施方式】
[0111]以下結(jié)合附圖和實(shí)施例對(duì)本發(fā)明的技術(shù)方案作進(jìn)一步的解釋,但是以下的內(nèi)容不用于限定本發(fā)明的保護(hù)范圍。
[0112]實(shí)施例1:
[0113]如圖1所示,本實(shí)施例提供一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng),系統(tǒng)分為表達(dá)式執(zhí)行引擎,關(guān)聯(lián)分析引擎,聚合引擎和報(bào)警引擎,所述表達(dá)式執(zhí)行引擎、關(guān)聯(lián)分析引擎、聚合引擎和報(bào)警引擎部分組合起來,執(zhí)行規(guī)則庫里面的規(guī)則,規(guī)則庫的規(guī)則由可以由用戶自定義配置或者是系統(tǒng)內(nèi)置的知識(shí)庫。
[0114]所述表達(dá)式執(zhí)行引擎執(zhí)行規(guī)則的表達(dá)式部分,根據(jù)事件和表達(dá)式,判斷事件是否符合這個(gè)表達(dá)式的條件;如果符合,送到關(guān)聯(lián)分析引擎,由關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,找到各個(gè)事件之間的關(guān)聯(lián)關(guān)系,形成事件鏈。形成事件鏈以后,送到聚合引擎中,聚合引擎根據(jù)聚合條件,將可以聚合的事件鏈聚合在一起,形成最后的高價(jià)值的事件鏈,送入報(bào)警引擎產(chǎn)生報(bào)警等。整體架構(gòu)如圖1所示。
[0115]本實(shí)施例中,所述關(guān)聯(lián)分析引擎分別順序事件鏈執(zhí)行模塊和無序事件鏈執(zhí)行模塊,根據(jù)形成事件鏈的事件是否有順序要求進(jìn)行不同的操作。
[0116]本實(shí)施例中一條規(guī)則分3部分組成:一個(gè)或者多個(gè)條件表達(dá)式,事件鏈之間的關(guān)聯(lián)條件部分和事件鏈聚合條件。通常一條規(guī)則可以描述某種一系列行為。比如為了檢測(cè)某種網(wǎng)絡(luò)攻擊行為的是否真的有效以及其危害性,需要從防火墻和IDS日志以及資產(chǎn)的漏洞進(jìn)行關(guān)聯(lián)分析。針對(duì)上述行為,可以將檢測(cè)這個(gè)行為的規(guī)則用自然語言描述為:
[0117]①找到IDS的事件類型為Attack,攻擊類型和被攻擊資產(chǎn)的漏洞列表匹配;
[0118]②防火墻允許了這次網(wǎng)絡(luò)行為;
[0119]③IDS檢測(cè)到的事件和防火墻檢測(cè)到的事件的目的地址都是同一個(gè);
[0120]④10分鐘之內(nèi),IDS和防火墻檢測(cè)到該類型的事件發(fā)生次數(shù)大于等于I次;
[0121]⑤如果IDS檢測(cè)到的多個(gè)事件的目的IP為同一個(gè),認(rèn)為是同一個(gè)攻擊行為,將類型事件合并;目的IP不相同,創(chuàng)建新的事件,并重新計(jì)算事件發(fā)生的次數(shù)。
[0122]上述①-⑤都符合,則表明這個(gè)是真正的網(wǎng)絡(luò)攻擊行為,而且可能造成比較大的影響,因此需要產(chǎn)生報(bào)警信息,讓管理人員發(fā)現(xiàn)系統(tǒng)的風(fēng)險(xiǎn)并做相應(yīng)的處理。
[0123]將以自然語言描述的規(guī)則轉(zhuǎn)化為關(guān)聯(lián)分析系統(tǒng)可以執(zhí)行的規(guī)則為:
[0124]表達(dá)式條件:
[0125]表達(dá)式I (匹配IDS日志,同①中的描述):
[0126](Eventl.devicetype==’ IDS’ &&Eventl.eventtype==' Attack’ ) &&Event 1.attacktype in資產(chǎn)漏洞列表
[0127]表達(dá)式2 (匹配防火墻日志,同②中的描述):
[0128](Event2.devicetype==’ Firewall’ &&Event2.eventtype= = ' Accept’)
[0129]關(guān)聯(lián)條件:
[0130]Eventl.destinationIp==Event2.destiantionlp (2 個(gè)事件的目標(biāo)地址都是同一個(gè),同③中的描述)
[0131]聚合條件:[0132]條件1:
[0133]((Eventl.start Time - Event 2.startTime) <=10min | (Event2.startTime -Eventl.startTime) <=10min)) &&(Eventl.count>=l&&Event2.count>=l) (2 個(gè)事件在 10分鐘之內(nèi)發(fā)生,事件重復(fù)次數(shù)大于等于I,同④中的描述)
[0134]相同屬性:Eventl.destinationlp (事件I的目的IP地址都是同一個(gè),同⑤中的描述)。
[0135]此外聚合條件中還可以包含唯一性屬性,如要求事件源IP都不相同。
[0136]表達(dá)式執(zhí)行引擎
[0137]如圖2所示,表達(dá)式執(zhí)行引擎在啟動(dòng)的時(shí)候,將所有規(guī)則的表達(dá)式部分載入到內(nèi)存中,并將文本描述的表達(dá)式轉(zhuǎn)換為可執(zhí)行的表達(dá)式。表達(dá)式執(zhí)行引擎可以執(zhí)行>、>=、〈=、〈、==、!=、&&、I 1、contains、in以及正則表達(dá)式等操作類型。當(dāng)一個(gè)事件到達(dá)時(shí),表達(dá)式執(zhí)行引擎的執(zhí)行過程如下:
[0138](I)取出一條規(guī)則的所有表達(dá)式
[0139]a)將第一個(gè)表達(dá)式送到表達(dá)式執(zhí)行器,執(zhí)行器將該表達(dá)式的變量部分用事件中的實(shí)際值代替,如前述的表達(dá)式“ (Eventl.devicetype==’ IDS’ MEvent1.eventtype==,Attack,) MEvent1.attacktype in 資產(chǎn)漏洞列表,,,將 Eventl.devicetype,Eventl.eventtype和Eventl.attacktype等變量都替換成事件中的實(shí)際值;“資產(chǎn)漏洞列表”則用當(dāng)前被攻擊的目標(biāo)資產(chǎn)的漏洞信息替換;
[0140]b)值替換完畢后,表達(dá)式執(zhí)行器判斷這個(gè)表達(dá)式是否成立,如果成立,則匹配成功,送入關(guān)聯(lián)分析引擎,結(jié)束執(zhí)行當(dāng)前規(guī)則的余下部分表達(dá)式;
[0141]c)如果步驟b不匹配,執(zhí)行下一個(gè)表達(dá)式;
[0142]d)重復(fù)abc過程,直至事件匹配表達(dá)式或該規(guī)則的所有表達(dá)式執(zhí)行完畢;
[0143](2)執(zhí)行下一條規(guī)則的所有表達(dá)式,過程如前(I),直至事件匹配某一表達(dá)式或者所有的規(guī)則的表達(dá)式都執(zhí)行完畢。
[0144]上述(I)、(2)過程如果是在多處理器系統(tǒng)上執(zhí)行,那么多條規(guī)則之間則并發(fā)執(zhí)行,提升系統(tǒng)性能。
[0145]關(guān)聯(lián)分析引擎
[0146]如圖5所示,當(dāng)表達(dá)式執(zhí)行引擎匹配到某一個(gè)事件后,送入關(guān)聯(lián)分析引擎。關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,確定當(dāng)前事件是創(chuàng)建一個(gè)新的事件鏈則創(chuàng)建一個(gè)全新的事件鏈,并加入到緩存中;否則就匹配緩存中已經(jīng)存在的事件鏈,如果能夠匹配到事件鏈,將當(dāng)前事件加入到事件鏈中,并確定是否已經(jīng)完整,如果已經(jīng)形成完整的事件鏈,那么送入聚合引擎中。如果不滿足創(chuàng)建事件鏈的條件并且匹配不到任何事件鏈則拋棄當(dāng)前事件。根據(jù)形成事件鏈的事件是否有順序要求,其具體過程有所不同。形成事件鏈的順序是要求指即先有事件1,再有事件2才能形成事件鏈;無要求則表示,只要事件I和事件2在某個(gè)時(shí)間區(qū)間(聚合周期)范圍內(nèi)出現(xiàn),不管其先后,那么就能夠形成事件鏈。
[0147]事件鏈?zhǔn)且幌盗械氖录募?,可以用?shù)組來表示。三個(gè)事件A,B和C形成事件鏈在緩存中可以表示為數(shù)組{A,B, C},其長度由規(guī)則中表達(dá)式數(shù)量決定。
[0148]如果規(guī)則只有一個(gè)表達(dá)式,說明該事件不需要和其他類型的事件做關(guān)聯(lián),則直接送入聚合引擎中。[0149]事件鏈?zhǔn)琼樞虻?br>
[0150]如圖4所示,假如某一規(guī)則的事件鏈需要A-B-C三個(gè)事件構(gòu)成的,關(guān)聯(lián)條件簡(jiǎn)單描述為“A.1P=B.1P&&B.Port=C.Port”,即事件A和事件B的IP相同,事件B和事件C的端口相同。設(shè)定所有事件的IP地址都為127.0.0.1,Port都為80。如果形成事件鏈的事件是有順序要求的,那么關(guān)聯(lián)分析引擎中順序事件鏈執(zhí)行模塊執(zhí)行如下過程,如圖3-1所示:
[0151](I)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈;
[0152](2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O (如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增);如圖3-2所示。
[0153]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ;如前面所述的第一個(gè)關(guān)聯(lián)條件“A.1P=B.1P”,匹配的表達(dá)式序號(hào)為0,IP為127.0.0.1,實(shí)際組合的key為“1-127.0.0.1” ;
[0154]b)如果存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并加入到已經(jīng)存在的事件鏈集合的末尾;
[0155]c)如果不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中;
[0156](3)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分;如圖3-4所示。
[0157]a)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈;
[0158]b)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0159]c)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件;
[0160]d)將當(dāng)前事件加入到最早的并且可以添加當(dāng)前事件的事件鏈中。假設(shè)集合中存在事件鏈{Al, BI,}和{A2,,}和{A3,,},事件B2到達(dá),根據(jù)查詢key找到前述的三個(gè)事件鏈,將事件B2添加到事件鏈{A2,,},構(gòu)成{A2, B2,}
[0161]e)將事件加入到事件鏈后,判斷事件鏈的需要遷移,將事件鏈從緩存中移除;判斷事件鏈需要遷移的標(biāo)準(zhǔn)為用當(dāng)前事件表達(dá)式序號(hào)作為事件鏈數(shù)組的索引號(hào),此時(shí)索引號(hào)之前的事件鏈數(shù)組均存在事件。如圖4中“事件BI匹配”時(shí),事件BI的表達(dá)式序號(hào)為1,事件鏈{Al,BI,}中索引為I之前的元素存在事件,因此需要遷移。
[0162]f)移除事件鏈后,重新構(gòu)造緩存的key,將事件鏈加入到新的事件鏈集合中(若新的事件鏈集合不存在,則先創(chuàng)建一個(gè),并加入緩存)。構(gòu)造新的緩存key規(guī)則為將表達(dá)式序號(hào)增加I和下一個(gè)關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;在圖4中“事件BI匹配”后,根據(jù)下一個(gè)關(guān)聯(lián)條件“B.Port=C.Port”構(gòu)造的新的緩存的key為“2_80”。
[0163]g)步驟e)中,事件鏈不需要遷移,則將當(dāng)前事件加入到已存在的事件鏈中;(4)如果事件匹配的規(guī)則中最后一個(gè)表達(dá)式部分;如圖3-3所示。
[0164]f)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈;
[0165]g)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0166]h)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件;
[0167]i)將當(dāng)前事件加入到最老的事件鏈中,形成完整的事件鏈,送入聚合引擎中,并刪除緩存中存在的事件鏈;如果同時(shí)存在多個(gè)符合條件的事件鏈,將當(dāng)前事件加入到最早的那個(gè)事件鏈中;
[0168]j)如果事件鏈不存在,拋棄當(dāng)前事件;
[0169](5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈;
[0170](6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí)(根據(jù)聚合條件中的聚合周期范圍)。判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間 > 聚合條件中的聚合周期范圍;
[0171]a)存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈;
[0172]b)刪除超時(shí)事件鏈后,事件鏈集合不存在任何事件鏈,此時(shí)當(dāng)前事件匹配的不是第一個(gè)表達(dá)式,說明不存在任何可以關(guān)聯(lián)的事件鏈,拋棄當(dāng)前事件。
[0173]根據(jù)以上的論述,假設(shè)事件都符合對(duì)應(yīng)的表達(dá)式,事件鏈在不考慮事件鏈容量和超時(shí)間外,實(shí)際事件到達(dá)順序?yàn)锳1->A2->C1->B1->B2->C2,其事件鏈匹配順序可以用圖4表達(dá)。
[0174]初始狀態(tài)如步驟(I)所屬,根據(jù)規(guī)則將整個(gè)緩存分為若干區(qū)域,圖4中只表示了一個(gè)規(guī)則的緩存區(qū)域。
[0175]事件Al到達(dá),匹配規(guī)則的第一個(gè)表達(dá)式,表達(dá)式序號(hào)為0,事件Al的關(guān)聯(lián)條件部分的實(shí)際值為127.0.0.1。由于是第一個(gè)表達(dá)式匹配,組合的查詢的key為1-127.0.0.1,利用key在緩存中查不到同類的事件鏈集合,先創(chuàng)建事件鏈集合,將創(chuàng)建的事件鏈{Al,,}加入事件鏈集合中,并加入緩存。同步驟(2)中所述。此時(shí)緩存中的狀態(tài)為圖4中“事件Al
匹配” 一致。
[0176]事件A2到達(dá),并匹配規(guī)則的第一個(gè)表達(dá)式,同事件Al到達(dá),組合的查詢的key為1-127.0.0.1,在內(nèi)存中查到存在事件鏈集合,創(chuàng)建新的事件鏈{A2,,},并加到緩存key為
1-127.0.0.1的事件鏈集合末尾。此時(shí)緩存中的狀態(tài)為圖4中“事件A2匹配” 一致。
[0177]事件Cl到達(dá),并匹配規(guī)則的第三個(gè)表達(dá)式,根據(jù)同步驟(4)中a)所述組合查詢條件2-80,查詢到已存在的事件鏈;查詢不到任何已經(jīng)存在的事件鏈,拋棄事件Cl,同步驟
(4)中a)和c)所述。此時(shí)緩存中的狀態(tài)為圖4中“事件A2匹配”時(shí)刻一致,不發(fā)生任何改變。
[0178]事件BI到達(dá),并匹配規(guī)則的第二個(gè)表達(dá)式,根據(jù)同步驟(3)中a)所述組合查詢條件“1-127.0.0.1”,查詢到已存在的事件鏈。將BI加入到事件鏈Al,構(gòu)造新的事件鏈{A1,B1,},同步驟(3)中b)所述。此時(shí)事件鏈的需要遷移,將事件鏈{A1,B1,}從緩存中移除,并構(gòu)建新的緩存key為“2-80”,將事件鏈{Al,BI,}重新加入到新的事件鏈集合中(如果新的事件鏈集合不存在,則先創(chuàng)建一個(gè)),同步驟(3)中c)和d)所述。此事緩存中的狀態(tài)為圖4中“事件BI匹配”時(shí)刻一致。
[0179]事件B2到達(dá),并匹配規(guī)則的第二個(gè)表達(dá)式,同事件BI達(dá)到類似,發(fā)生事件鏈的遷移,并將遷移后的事件鏈加入已經(jīng)存在的事件鏈集合的末尾。此事緩存中的狀態(tài)為圖4中“事件B2匹配”時(shí)刻一致。
[0180]事件C2到達(dá),并匹配規(guī)則的第三個(gè)表達(dá)式也是最后一個(gè)表達(dá)式,組合查詢key為“2-80”,找到存在的事件鏈集合,取出最老的一個(gè)事件鏈{Al,BI,},并將C2加入其中,構(gòu)成{Al,BI,C2},送入聚合引擎,刪除事件鏈{Al,BI,},同步驟(4)中所述一致。此時(shí)此事緩存中的狀態(tài)為圖4中“事件C2匹配”時(shí)刻一致。
[0181]事件鏈無順序的
[0182]如圖5所示,假如某一規(guī)則的事件鏈需要A-B-C三個(gè)事件構(gòu)成的,關(guān)聯(lián)條件簡(jiǎn)單描述為“A.1P=B.1P&&B.Port=C.Port”,即事件A和事件B的IP相同,事件B和事件C的端口相同。設(shè)定所有事件的IP地址都為127.0.0.1,Port都為80。如果形成事件鏈的事件是不確定先后順序的,那么關(guān)聯(lián)分析引擎中無序事件鏈執(zhí)行模塊執(zhí)行如下過程,如圖3-5所示:
[0183](I)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈;
[0184](2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O (如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增);
[0185]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ;如前面所述的第一個(gè)關(guān)聯(lián)條件“A.1P=B.1P”,匹配的表達(dá)式序號(hào)為0,IP為127.0.0.1,實(shí)際組合的key為“1-127.0.0.1” ;
[0186]b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中。假設(shè)集合中存在事件鏈{,BI,}和{A2,,}和{A3,,},事件Al到達(dá),根據(jù)查詢key找到前述的三個(gè)事件鏈,將事件Al添加到事件鏈{,BI,},構(gòu)成{Al, BI,};
[0187]c)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束;
[0188]d)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,則創(chuàng)建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束;
[0189]e)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0190]f)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;
[0191]g)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟c);
[0192]h)刪除超時(shí)事件鏈后,不可以將當(dāng)前事件添加到事件鏈,后續(xù)操作同步驟b);
[0193]i)將事件加入到事件鏈后,事件鏈的需要遷移,將事件鏈從緩存中移除;判斷事件鏈需要遷移的標(biāo)準(zhǔn)為事件鏈的前η個(gè)元素已經(jīng)完整(η>1)。如步驟b)中事件Al添加到事件鏈{,BI,},構(gòu)成{Al,BI,}后,事件鏈{Al,BI,}中前2個(gè)元素已經(jīng)完整,因此需要遷移;
[0194]j)步驟b)中,將事件加入到事件鏈后,事件鏈已經(jīng)完整,將事件鏈從緩存中移除,并送聚合引擎;判斷事件鏈完整的標(biāo)準(zhǔn)為事件鏈中所有元素均存在。如將事件Al加入事件鏈{,BI, Cl}后,事件鏈{Al, BI, Cl}均存在,則送到聚合引擎,當(dāng)前事件處理結(jié)束;
[0195]k)步驟f)中,移除事件鏈后,重新構(gòu)造查詢的key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。構(gòu)造新的查詢key規(guī)則為將事件鏈中最后一個(gè)事件的表達(dá)式序號(hào)取出并增加I和關(guān)聯(lián)條件中最后一個(gè)事件的實(shí)際值構(gòu)成;在事件鏈{Al,BI,}中,取出事件BI的表達(dá)式序號(hào)并增加1,實(shí)際值為2。由于事件鏈?zhǔn)瞧谕ヅ涫录愋虲,那么根據(jù)關(guān)聯(lián)條件“B.Port=C.Port”,B1.Port的值是80,則構(gòu)造的新的查詢key為“2-80”。
[0196]I)重復(fù)執(zhí)行步驟b)到k)直至當(dāng)前事件處理結(jié)束。
[0197](3)如果事件匹配的規(guī)則中的最后一個(gè)表達(dá)式:
[0198]a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是最后一個(gè)表達(dá)式,如前面所述的第二個(gè)關(guān)聯(lián)條件“B.Port=C.Port”,匹配的表達(dá)式序號(hào)為2,Port為80,實(shí)際組合的key為“2_80” ;
[0199]b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中。假設(shè)集合中存在事件鏈{,BI, }和{,,Cl},事件C2到達(dá),根據(jù)查詢key找到前述的二個(gè)事件鏈,將事件C2添加到事件鏈{,B1,C2};
[0200]c)當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中后,判斷事件鏈?zhǔn)欠褚呀?jīng)完整,完整則從緩存中移除當(dāng)前事件鏈,并送聚合引擎,當(dāng)前事件執(zhí)行結(jié)束;
[0201]d)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束;
[0202]e)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,則創(chuàng)建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束;
[0203]f)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí)。判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍;
[0204]g)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;
[0205]h)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟d);
[0206](4)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分:
[0207]a)根據(jù)表達(dá)式序列和規(guī)則關(guān)聯(lián)條件中包含當(dāng)前事件的第一個(gè)關(guān)聯(lián)條件組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。由前所述的關(guān)聯(lián)條件為“A.1P=B.1P&&B.Port=C.Port”。事件BI到達(dá),匹配序號(hào)為I的表達(dá)式,先根據(jù)關(guān)聯(lián)條件包含事件類型B的第一個(gè)關(guān)聯(lián)條件“A.1P=B.1P”,取BI的IP實(shí)際值127.0.0.1和表達(dá)式序號(hào)組合查詢 key 為 “ 1-127.0.0.1 ” ;
[0208]b)如果存在事件鏈集合,執(zhí)行步驟同2)中b),d)到I);
[0209]c)如果不存在事件鏈集合,重新組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合。重新組合key的規(guī)則為:組合當(dāng)前匹配的表達(dá)式序號(hào)增加I和包含當(dāng)前事件的第二個(gè)關(guān)聯(lián)條件。如前所述,表達(dá)式序號(hào)增加I為2,組合關(guān)聯(lián)條件“B.Port=C.Port”中BL Port的實(shí)際值80的查詢條件為“2-80”[0210]d)如果存在事件鏈集合,執(zhí)行步驟同3)中b)到h);
[0211]e)如果b)和d)都查詢不到相應(yīng)的事件鏈集合,則根據(jù)步驟a)中的描述創(chuàng)建事件鏈集合的key,根據(jù)當(dāng)前事件創(chuàng)建事件鏈,將事件鏈加入事件鏈集合,并將事件鏈集合加入緩存,當(dāng)前事件執(zhí)行結(jié)束。
[0212](5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈;;
[0213](6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí)(根據(jù)聚合條件中的聚合周期范圍)。判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間 > 聚合條件中的聚合周期范圍;存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈。
[0214]根據(jù)以上的論述,假設(shè)事件都符合對(duì)應(yīng)的表達(dá)式,事件鏈在不考慮事件鏈容量和超時(shí)間外,實(shí)際事件到達(dá)順序?yàn)锳1->A2->C1->B1->B2->C2,其事件鏈匹配順序可以用圖5表達(dá)。
[0215]初始狀態(tài)如步驟(I)所屬,根據(jù)規(guī)則將整個(gè)緩存分為若干區(qū)域,圖5中只表示了一個(gè)規(guī)則的緩存區(qū)域。
[0216]事件Al到達(dá),匹配規(guī)則的第一個(gè)表達(dá)式,表達(dá)式序號(hào)為0,事件Al的關(guān)聯(lián)條件部分的實(shí)際值為127.0.0.1。由于是第一個(gè)表達(dá)式匹配,組合的查詢的key為1-127.0.0.1,利用key在緩存中查不到同類的事件鏈集合,先創(chuàng)建事件鏈集合,將創(chuàng)建的事件鏈{Al,,}加入事件鏈集合中,并加入緩存。同步驟(2)中所述。此時(shí)緩存中的狀態(tài)為圖5中“事件Al
匹配” 一致。
[0217]事件A2到達(dá),并匹配規(guī)則的第一個(gè)表達(dá)式,同事件Al到達(dá),組合的查詢的key為1-127.0.0.1,在內(nèi)存中查到存在事件鏈集合,創(chuàng)建新的事件鏈{A2,,},并加到緩存key為
1-127.0.0.1的事件鏈集合末尾。此時(shí)緩存中的狀態(tài)為圖5中“事件A2匹配” 一致。
[0218]事件Cl到達(dá),并匹配規(guī)則的第三個(gè)表達(dá)式,根據(jù)步驟(3)中d)所述組合查詢條件
2-80,查詢不到任何已經(jīng)存在的事件鏈,創(chuàng)建事件鏈集合{,,Cl}并加入到緩存中。此時(shí)緩存中的狀態(tài)為圖5中“事件Cl匹配”時(shí)刻一致。
[0219]事件BI到達(dá),并匹配規(guī)則的第二個(gè)表達(dá)式,根據(jù)步驟(2)中所述,根據(jù)查詢條件“1-127.0.0.1”查找到存在的事件鏈{Al,,}和{A2,,},并將BI添加到事件鏈{Al,,}中構(gòu)成新的事件鏈{Al,BI,},此時(shí)事件鏈需要遷移。在遷移過程中,匹配事件鏈{,,C1},形成完整的事件鏈{A1,B1,C1},從緩存中移除,送聚合引擎。此時(shí)緩存中的狀態(tài)為圖5中“事件BI匹配”時(shí)刻一致。
[0220]事件B2到達(dá),并匹配規(guī)則的第二個(gè)表達(dá)式,根據(jù)步驟(2)中所述,根據(jù)查詢條件“1-127.0.0.1”查找到存在的事件鏈{A2,,},將B2添加到事件鏈{A2,,}中構(gòu)成新的事件鏈{A2,B2,},此時(shí)事件鏈需要遷移。取出事件B2的表達(dá)式序號(hào)并增加1,實(shí)際值為2。由于事件鏈?zhǔn)瞧谕ヅ涫录愋虲,那么根據(jù)關(guān)聯(lián)條件“B.Port=C.Port”,B1.Port的值是80,則構(gòu)造的新的查詢key為“2-80”。由于查找不到存在的事件鏈集合,則創(chuàng)建新的事件鏈集合,將當(dāng)前事件鏈加入到事件鏈集合中,并加入緩存。此時(shí)緩存中的狀態(tài)為圖5中“事件B2匹配”時(shí)刻一致。
[0221]事件C2到達(dá),并匹配規(guī)則的第三個(gè)表達(dá)式,根據(jù)步驟(3)中d)所述組合查詢條件2-80,查詢已經(jīng)存在的事件鏈{A2,B2,},并將C2添加到其中,形成完整的事件鏈{A2,B2,C2},從緩存中移除,送聚合引擎。事件鏈完整,到緩存中。此時(shí)緩存中的狀態(tài)為圖5中“事件C2匹配”時(shí)刻一致。
[0222]聚合引擎
[0223]如圖6所示,聚合引擎根據(jù)規(guī)則的聚合部分,將有相同屬性的事件鏈合并,并判斷是否可以進(jìn)行后續(xù)操作。聚合過程如下:
[0224](I)聚合次數(shù)為1,直接送報(bào)警引擎;
[0225](2)聚合次數(shù)大于1,根據(jù)規(guī)則將聚合部分使用的緩存劃分為不同的區(qū)域。聚合條件中存在相同屬性配置,聚合引擎根據(jù)聚合條件中相同屬性配置,組成查詢的key。組成查詢的key的由關(guān)聯(lián)分析引擎送入的事件鏈中的實(shí)際值構(gòu)成。如關(guān)聯(lián)分析引擎形成事件鏈{Al, BI, Cl},聚合條件中相同屬性的配置為A.destinationIP,則將Al中的destinationIP的值127.0.0.1取出,構(gòu)成查詢的key ;
[0226]a)根據(jù)key查到存在事件鏈集合,將當(dāng)前事件鏈加入到事件鏈集合中;
[0227]b)將當(dāng)前事件鏈加入到事件鏈過程中,判斷已存在的事件鏈?zhǔn)欠癯^聚合周期,超過則刪除相應(yīng)的事件鏈。判斷事件鏈超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件鏈的開始時(shí)間-存在事件鏈的開始時(shí)間 > 聚合周期;
[0228]c)若步驟b)中不存在超時(shí)的事件鏈,確定事件鏈集合中事件鏈的數(shù)量達(dá)到聚合條件中的次數(shù)要求,將事件鏈集合中的所有事件送報(bào)警引擎;
[0229]d)事件鏈集合送入報(bào)警引擎后,從緩存中刪除;
[0230]e)若步驟a)中查詢不到事件鏈集合,則創(chuàng)建一個(gè)空的事件鏈集合,將當(dāng)前事件鏈加入到集合中,并加入到緩存;
[0231]f)若步驟c)中事件鏈的數(shù)量未達(dá)到聚合條件的次數(shù),則繼續(xù)等待;
[0232](3)聚合次數(shù)大于1,聚合條件不存在相同屬性配置,則聚合引擎指定一個(gè)默認(rèn)的key,其余同步驟⑵中所述。
[0233](4)聚合次數(shù)大于1,聚合條件存在唯一屬性配置,則計(jì)算事件鏈集合中數(shù)量的時(shí)候,任意兩個(gè)事件鏈的唯一屬性配置的實(shí)際值不相同,才算一次。如唯一性屬性為A.Port,如果事件鏈{Al,BI, Cl}和事件鏈{A2,B2, C2}的Al.Port和A2.Port相同,次數(shù)只算一次,不相同才能算2次。
[0234]報(bào)警引擎
[0235]如圖7所示,報(bào)警引擎根據(jù)聚合引擎的輸出,達(dá)到報(bào)警所設(shè)定的條件時(shí),產(chǎn)生報(bào)警。報(bào)警過程如下:
[0236](I)判斷當(dāng)前需要報(bào)警的規(guī)則沒有觸發(fā)過報(bào)警信息;
[0237](2)報(bào)警引擎計(jì)算當(dāng)前報(bào)警的級(jí)別,計(jì)算報(bào)警級(jí)別的公式為:(資產(chǎn)級(jí)別+規(guī)則級(jí)別+事件級(jí)別)/3 ;
[0238](3)創(chuàng)建新的報(bào)警,將報(bào)警內(nèi)容寫入數(shù)據(jù)庫;并將和當(dāng)前報(bào)警相關(guān)聯(lián)的原始事件寫入數(shù)據(jù)庫;
[0239](4)如果步驟(I)中當(dāng)前需要報(bào)警的規(guī)則已經(jīng)產(chǎn)生過報(bào)警信息;則判斷當(dāng)前的報(bào)警信息和前一次報(bào)警是否可以合并。判斷合并的標(biāo)準(zhǔn)為兩次報(bào)警的時(shí)間區(qū)間不超過規(guī)則的聚合周期,并且前一次報(bào)警信息未被人工設(shè)置為已修復(fù);[0240](5)如果步驟(4)中兩次報(bào)警信息可以合并;則將前一次報(bào)警的次數(shù)累加,將新的事件鏈和相關(guān)聯(lián)的原始事件入關(guān)聯(lián)到前一次報(bào)警信息上;
[0241](6)如果步驟(4)中兩次報(bào)警信息不可以合并,則根據(jù)步驟(2)和步驟(3)創(chuàng)建新的報(bào)警信息。
[0242]盡管本發(fā)明的內(nèi)容已經(jīng)通過上述優(yōu)選實(shí)施例作了詳細(xì)介紹,但應(yīng)當(dāng)認(rèn)識(shí)到上述的描述不應(yīng)被認(rèn)為是對(duì)本發(fā)明的限制。在本領(lǐng)域技術(shù)人員閱讀了上述內(nèi)容后,對(duì)于本發(fā)明的多種修改和替代都將是顯而易見的。因此,本發(fā)明的保護(hù)范圍應(yīng)由所附的權(quán)利要求來限定。
【權(quán)利要求】
1.一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于包括:表達(dá)式執(zhí)行引擎,關(guān)聯(lián)分析引擎,聚合引擎和報(bào)警引擎,這四個(gè)部分組合起來,執(zhí)行規(guī)則庫里面的規(guī)則,規(guī)則庫的規(guī)則由用戶自定義配置或者是系統(tǒng)內(nèi)置的知識(shí)庫;其中: 所述表達(dá)式執(zhí)行引擎執(zhí)行規(guī)則的表達(dá)式部分,根據(jù)事件和表達(dá)式,判斷事件是否符合這個(gè)表達(dá)式的條件;如果符合,送到所述關(guān)聯(lián)分析引擎; 所述關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,找到各個(gè)事件之間的關(guān)聯(lián)關(guān)系,形成事件鏈,形成事件鏈以后,送到所述聚合引擎中; 所述聚合引擎根據(jù)聚合條件,將可以聚合的事件鏈聚合在一起,形成最后的高價(jià)值的事件鏈,送到所述報(bào)警引擎中; 所述報(bào)警引擎根據(jù)事件鏈產(chǎn)生報(bào)警并執(zhí)行相關(guān)后續(xù)操作。
2.根據(jù)權(quán)利要求1所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述規(guī)則庫的規(guī)貝U,其中每條規(guī)則分3部分組成,即:一個(gè)或者多個(gè)條件表達(dá)式,條件表達(dá)式之間的關(guān)聯(lián)條件部分和事件鏈聚合條件;一條規(guī)則可以描述某種一系列行為。
3.根據(jù)權(quán)利要求1或2所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述表達(dá)式執(zhí)行引擎啟動(dòng)時(shí),將所有規(guī)則的表達(dá)式部分載入到內(nèi)存中,并將文本描述的表達(dá)式轉(zhuǎn)換為可執(zhí)行的表達(dá)式,當(dāng)一個(gè)事件到達(dá)時(shí),表達(dá)式執(zhí)行引擎的執(zhí)行過程如下: (I)取出一條規(guī)則的所有表達(dá)式: a)將第一個(gè)表達(dá)式送到表達(dá)式執(zhí)行器,執(zhí)行器將該表達(dá)式的變量部分用事件中的實(shí)際值代替; b)值替換完畢后,表達(dá)式執(zhí)行器判斷這個(gè)表達(dá)式是否成立,如果成立,則匹配成功,送入關(guān)聯(lián)分析引擎,結(jié)束執(zhí)行當(dāng)前規(guī)則的余下部分表達(dá)式; c)如果不匹配,執(zhí)行下一個(gè)表達(dá)式; d)重復(fù)abc過程,直至事件匹配表達(dá)式或者該規(guī)則的所有表達(dá)式執(zhí)行完畢; (2 )執(zhí)行下一條規(guī)則的所有表達(dá)式,過程如前(I),直至事件匹配某一表達(dá)式或者所有的規(guī)則的表達(dá)式都執(zhí)行完畢; 上述(1)、(2)過程如果是在多處理器系統(tǒng)上執(zhí)行,那么多條規(guī)則之間則并發(fā)執(zhí)行,提升系統(tǒng)性能。
4.根據(jù)權(quán)利要求1所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述關(guān)聯(lián)分析引擎根據(jù)關(guān)聯(lián)條件,確定當(dāng)前事件是創(chuàng)建一個(gè)新的事件鏈則創(chuàng)建一個(gè)全新的事件鏈,并加入到緩存中,否則就匹配緩存中已經(jīng)存在的事件鏈,如果能夠匹配到事件鏈,將當(dāng)前事件加入到事件鏈中,并確定是否已經(jīng)完整,如果形成完整的事件鏈,送入聚合引擎中,如果不滿足創(chuàng)建事件鏈的條件并且匹配不到任何事件鏈則拋棄當(dāng)前事件,根據(jù)形成事件鏈的事件是否有順序要求,其具體過程有所不同,其中形成事件鏈的順序有要求指即先有事件1,再有事件2才能形成事件鏈;無要求則表示,只要事件I和事件2在某個(gè)時(shí)間區(qū)間范圍內(nèi)出現(xiàn),不管其先后,都能夠形成事件鏈; 如果規(guī)則不需要進(jìn)行關(guān)聯(lián),即一個(gè)規(guī)則只有一個(gè)表達(dá)式,只需要匹配一類事件,則關(guān)聯(lián)分析引擎直接把事件送入聚合引擎。
5.根據(jù)權(quán)利要求4所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述關(guān)聯(lián)分析引擎在形成事件鏈的事件有順序要求時(shí),執(zhí)行如下過程:(1)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈; (2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O,如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增; a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ; b)如果存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并加入到已經(jīng)存在的事件鏈集合的末尾; c)如果不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中; (3)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分; a)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈; b)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí),判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍; c)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件; d)將當(dāng)前事件加入到最早的并且可以添加當(dāng)前事件的事件鏈中; e)將事件加入到事件鏈后,判斷事件鏈的需要遷移,將事件鏈從緩存中移除;判斷事件鏈需要遷移的標(biāo)準(zhǔn)為用當(dāng)前事件表達(dá)式序號(hào)作為事件鏈數(shù)組的索引號(hào),此時(shí)索引號(hào)之前的事件鏈數(shù)組均存在事件; f)移除事件鏈后,重新構(gòu)造緩存的key,將事件鏈加入到新的事件鏈集合中;若新的事件鏈集合不存在,則先創(chuàng)建一個(gè),并加入緩存;構(gòu)造新的緩存key規(guī)則為將表達(dá)式序號(hào)增加I和下一個(gè)關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成; g)步驟e)中,事件鏈不需要遷移,則將當(dāng)前事件加入到已存在的事件鏈中; (4)如果事件匹配的規(guī)則中最后一個(gè)表達(dá)式部分; a)組合表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成的查詢條件,在緩存區(qū)域中查找是否存在事件鏈; b)如果事件鏈集合存在,判斷事件鏈集合中的事件鏈?zhǔn)欠癯瑫r(shí),判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍; c)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈;刪除超時(shí)事件鏈后,集合為空則拋棄當(dāng)前事件; d)將當(dāng)前事件加入到最老的事件鏈中,形成完整的事件鏈,送入聚合引擎中,并刪除緩存中存在的事件鏈;如果同時(shí)存在多個(gè)符合條件的事件鏈,將當(dāng)前事件加入到最早的那個(gè)事件鏈中; e)如果事件鏈不存在,拋棄當(dāng)前事件; (5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈; (6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí),判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間 > 聚合條件中的聚合周期范圍; a)存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈; b)刪除超時(shí)事件鏈后,事件鏈集合不存在任何事件鏈,此時(shí)當(dāng)前事件匹配的不是第一個(gè)表達(dá)式,說明不存在任何可以關(guān)聯(lián)的事件鏈,拋棄當(dāng)前事件。
6.根據(jù)權(quán)利要求4所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述關(guān)聯(lián)分析引擎在形成事件鏈的事件沒順序要求時(shí),執(zhí)行如下過程: (1)根據(jù)規(guī)則將緩存分為若干區(qū)域,不同區(qū)域存放不同規(guī)則的事件鏈; (2)如果事件匹配某一規(guī)則中的第一條表達(dá)式,認(rèn)為事件是初始狀態(tài),表達(dá)式序列號(hào)為O,如果事件匹配規(guī)則中的第二個(gè)表達(dá)式的序號(hào)為1,以此遞增; a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成;由于匹配的是第一個(gè)表達(dá)式,需要將表達(dá)式序號(hào)設(shè)置為I ; b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中; c)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束; d)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,則創(chuàng)建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束; e)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí),判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍; f)集合中存在超時(shí)的事件鏈,則刪除超時(shí)的事件鏈; g)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟c); h)刪除超時(shí)事件鏈后,不可以將當(dāng)前事件添加到事件鏈,后續(xù)操作同步驟b); i)將事件加入到事件鏈后,事件鏈的需要遷移,將事件鏈從緩存中移除;判斷事件鏈需要遷移的標(biāo)準(zhǔn)為事件鏈的前η個(gè)元素已經(jīng)完整,η>1 ; j)步驟b)中,將事件加入到事件鏈后,事件鏈已經(jīng)完整,將事件鏈從緩存中移除,并送聚合引擎;判斷事件鏈完整的標(biāo)準(zhǔn)為事件鏈中所有元素均存在; k)步驟f)中,移除事件鏈后,重新構(gòu)造查詢的key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合,構(gòu)造新的查詢key規(guī)則為將事件鏈中最后一個(gè)事件的表達(dá)式序號(hào)取出并增加I和關(guān)聯(lián)條件中最后一個(gè)事件的實(shí)際值構(gòu)成; I)重復(fù)執(zhí)行步驟b)到k)直至當(dāng)前事件處理結(jié)束; (3)如果事件匹配的規(guī)則中的最后一個(gè)表達(dá)式: a)根據(jù)規(guī)則中關(guān)聯(lián)條件部分結(jié)合表達(dá)式序列號(hào),在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合;組合查詢的key由表達(dá)式序號(hào)和關(guān)聯(lián)條件中當(dāng)前事件的實(shí)際值構(gòu)成; b)如果存在同類的事件鏈集合,將當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中; c)當(dāng)前事件加入到最早的并且可以加入當(dāng)前事件的事件鏈中后,判斷事件鏈?zhǔn)欠褚呀?jīng)完整,完整則從緩存中移除當(dāng)前事件鏈,并送聚合引擎,當(dāng)前事件執(zhí)行結(jié)束; d)如步驟b)中不存在同類的事件鏈集合,根據(jù)當(dāng)前事件創(chuàng)建一個(gè)新的事件鏈,并創(chuàng)建一個(gè)新的事件鏈集合,加入當(dāng)前事件鏈,將整個(gè)事件鏈集合加入到緩存區(qū)域中,當(dāng)前事件處理結(jié)束; e)如步驟b)中不可以將當(dāng)前事件添加到事件鏈,貝U倉Il建一個(gè)新的事件鏈,將當(dāng)前事件加入新事件鏈,并新事件鏈加入事件鏈集合的結(jié)尾,當(dāng)前事件處理結(jié)束; f)步驟b)中,將事件加入事件鏈過程中,判斷事件鏈集合中的事件鏈超時(shí),判斷超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件開始時(shí)間-集合中事件鏈的開始時(shí)間〉聚合條件中的聚合周期范圍; g)集合中存在超時(shí)的事件鏈 ,則刪除超時(shí)的事件鏈; h)刪除超時(shí)事件鏈后,集合為空則后續(xù)操作同步驟d); (4)如果事件匹配規(guī)則中的除第一個(gè)表達(dá)式和最后一個(gè)表達(dá)式以外部分: a)根據(jù)表達(dá)式序列和規(guī)則關(guān)聯(lián)條件中包含當(dāng)前事件的第一個(gè)關(guān)聯(lián)條件組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合; b)如果存在事件鏈集合,執(zhí)行步驟同2)中b),d)到I); c)如果不存在事件鏈集合,重新組合查詢key,在緩存中查找是否有已經(jīng)存在的同類型的事件鏈集合,重新組合key的規(guī)則為:組合當(dāng)前匹配的表達(dá)式序號(hào)增加I和包含當(dāng)前事件的第二個(gè)關(guān)聯(lián)條件; d)如果存在事件鏈集合,執(zhí)行步驟同3)中b)到h); e)如果b)和d)都查詢不到相應(yīng)的事件鏈集合,則根據(jù)步驟a)中的描述創(chuàng)建事件鏈集合的key,根據(jù)當(dāng)前事件創(chuàng)建事件鏈,將事件鏈加入事件鏈集合,并將事件鏈集合加入緩存,當(dāng)前事件執(zhí)行結(jié)束; (5)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)達(dá)到緩存容量的最大值,如果達(dá)到,刪除最老的一個(gè)事件鏈; (6)在將新事件鏈加入到已經(jīng)存在的事件鏈集合過程中,判斷已經(jīng)存在的事件鏈?zhǔn)欠褚呀?jīng)超時(shí),判斷的標(biāo)準(zhǔn)為事件鏈I的開始時(shí)間-事件鏈2的開始時(shí)間 > 聚合條件中的聚合周期范圍;存在超時(shí)事件鏈,刪除所有超時(shí)的事件鏈。
7.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述聚合引擎根據(jù)規(guī)則的聚合部分,將有相同屬性的事件鏈合并,并判斷是否可以進(jìn)行后續(xù)操作,聚合過程如下: (1)聚合次數(shù)為1,直接送報(bào)警引擎; (2)聚合次數(shù)大于1,根據(jù)規(guī)則將聚合部分使用的緩存劃分為不同的區(qū)域;聚合條件中存在相同屬性配置,聚合引擎根據(jù)聚合條件中相同屬性配置,組成查詢的key,組成查詢的key的由關(guān)聯(lián)分析引擎送入的事件鏈中的實(shí)際值構(gòu)成; a)根據(jù)key查到存在事件鏈集合,將當(dāng)前事件鏈加入到事件鏈集合中; b)將當(dāng)前事件鏈加入到事件鏈過程中,判斷已存在的事件鏈?zhǔn)欠癯^聚合周期,超過則刪除相應(yīng)的事件鏈,判斷事件鏈超時(shí)的標(biāo)準(zhǔn)為:當(dāng)前事件鏈的開始時(shí)間-存在事件鏈的開始時(shí)間 > 聚合周期; c)若步驟b)中不存在超時(shí)的事件鏈,確定事件鏈集合中事件鏈的數(shù)量達(dá)到聚合條件中的次數(shù)要求,將事件鏈集合中的所有事件送報(bào)警引擎;d)事件鏈集合送入報(bào)警引擎后,從緩存中刪除; e)若步驟a)中查詢不到事件鏈集合,則創(chuàng)建一個(gè)空的事件鏈集合,將當(dāng)前事件鏈加入到集合中,并加入到緩存; f)若步驟c)中事件鏈的數(shù)量未達(dá)到聚合條件的次數(shù),則繼續(xù)等待 (3)聚合次數(shù)大于1,聚合條件不存在相同屬性配置,則聚合引擎指定一個(gè)默認(rèn)的key,其余同步驟⑵中所述; (4)聚合次數(shù)大于1,聚合條件存在唯一屬性配置,則計(jì)算事件鏈集合中數(shù)量的時(shí)候,任意兩個(gè)事件鏈的唯一屬性配置的實(shí)際值不相同,才算一次。
8.根據(jù)權(quán)利要求1-6任一項(xiàng)所述的基于事件鏈的關(guān)聯(lián)分析系統(tǒng),其特征在于:所述報(bào)警引擎的報(bào)警過程如下: (1)判斷當(dāng)前需要報(bào)警的規(guī)則沒有觸發(fā)過報(bào)警信息; (2)報(bào)警引擎計(jì)算當(dāng)前報(bào)警的級(jí)別,計(jì)算報(bào)警級(jí)別的公式為:(資產(chǎn)級(jí)別+規(guī)則級(jí)別+事件級(jí)別)/3 ; 創(chuàng)建新的報(bào)警,將報(bào)警內(nèi)容寫入數(shù)據(jù)庫;并將和當(dāng)前報(bào)警相關(guān)聯(lián)的原始事件寫入數(shù)據(jù)庫; (4)如果步驟(1)中當(dāng)前需要報(bào)警的規(guī)則已經(jīng)產(chǎn)生過報(bào)警信息;則判斷當(dāng)前的報(bào)警信息和前一次報(bào)警是否可以合并;判斷合并的標(biāo)準(zhǔn)為兩次報(bào)警的時(shí)間區(qū)間不超過規(guī)則的聚合周期,并且前一次報(bào)警信息未被人工設(shè)置為已修復(fù); (5)如果步驟(4)中兩次 報(bào)警信息可以合并;則將前一次報(bào)警的次數(shù)累加,將新的事件鏈和相關(guān)聯(lián)的原始事件入關(guān)聯(lián)到前一次報(bào)警信息上; (6)如果步驟(4)中兩次報(bào)警信息不可以合并,則根據(jù)步驟(2)和步驟(3)創(chuàng)建新的報(bào) 自目 I R ο
【文檔編號(hào)】H04L12/24GK103580900SQ201210271970
【公開日】2014年2月12日 申請(qǐng)日期:2012年8月1日 優(yōu)先權(quán)日:2012年8月1日
【發(fā)明者】王新春, 徐培杰, 李剛, 錢向東 申請(qǐng)人:上海寶信軟件股份有限公司