国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種基于事件鏈的關(guān)聯(lián)分析系統(tǒng)的制作方法

      文檔序號(hào):7981606閱讀:134來源:國知局
      一種基于事件鏈的關(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)人:上海寶信軟件股份有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1