1.一種匹配正則集的生成方法,所述方法包括:
步驟101)對接收到的網(wǎng)絡數(shù)據(jù)包進行預處理;得到白名單數(shù)據(jù)集和黑名單數(shù)據(jù)集;
步驟102)基于白名單數(shù)據(jù)集和黑名單數(shù)據(jù)集,根據(jù)正則表達式基本規(guī)則,分別生成黑名單數(shù)據(jù)集的原子規(guī)則和白名單數(shù)據(jù)集的原子規(guī)則;
步驟103)基于白名單數(shù)據(jù)集的原子規(guī)則,構(gòu)造白名單數(shù)據(jù)集的修飾規(guī)則樹;基于黑名單數(shù)據(jù)集的原子規(guī)則,構(gòu)造黑名單數(shù)據(jù)集的修飾規(guī)則樹;
步驟104)基于白名單數(shù)據(jù)集的修飾規(guī)則樹和黑名單數(shù)據(jù)集的修飾規(guī)則樹,在滿足規(guī)則生成邊界條件前提下,生成白名單正則集S1和黑名單正則集S2;所述匹配正則集為所述白名單正則集S1和黑名單正則集S2的并集。
2.根據(jù)權(quán)利要求1所述的匹配正則集的生成方法,其特征在于,所述步驟1)的預處理包括分類和清洗,具體過程為:對已有帶標記的數(shù)據(jù)包進行黑白名單的分類,然后對黑名單和白名單中相同的數(shù)據(jù)包進行篩查和剔除得到黑名單數(shù)據(jù)集和白名單數(shù)據(jù)集。
3.根據(jù)權(quán)利要求1所述的匹配正則集的生成方法,其特征在于,所述步驟2)生成原子規(guī)則的過程為:對一個數(shù)據(jù)集的所有字符按照設(shè)定的正則匹配規(guī)則進行正則匹配。
4.根據(jù)權(quán)利要求1所述的匹配正則集的生成方法,其特征在于,所述步驟103)包括:
步驟103-1)根據(jù)白名單數(shù)據(jù)集各層對應的原子規(guī)則,生成初始規(guī)則樹;
步驟103-2)對初始規(guī)則樹按照修飾規(guī)則進行修飾;
所述修飾規(guī)則為:
(1)“.*”類葉子節(jié)點向根節(jié)點上移;
(2)添加同層級相同節(jié)點合并后的節(jié)點層;
步驟103-3)根據(jù)所述修飾規(guī)則對規(guī)則樹進行反復修飾,直至沒有可以修飾的節(jié)點;得到白名單的數(shù)據(jù)集修飾規(guī)則樹;
步驟103-4)根據(jù)黑名單數(shù)據(jù)集各層對應的原子規(guī)則,生成初始規(guī)則樹;
步驟103-5)對初始規(guī)則樹進行修飾;
步驟103-6)根據(jù)所述修飾規(guī)則對規(guī)則樹進行反復修飾,直至沒有可以修飾的節(jié)點;得到黑名單數(shù)據(jù)集的修飾規(guī)則樹。
5.根據(jù)權(quán)利要求4所述的匹配正則集的生成方法,其特征在于,所述步驟104)具體包括:
步驟104-1)構(gòu)造邊界條件;
步驟104-2)對白名單數(shù)據(jù)集內(nèi)所有N個修飾規(guī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-3)對步驟104-2)生成的相同的最深共同正則規(guī)則子樹進行合并,得到白名單正則規(guī)則子樹;然后記錄每棵子樹對應的數(shù)據(jù)包編號index;
步驟104-4)將白名單正則規(guī)則子樹轉(zhuǎn)化為對應的白名單正則集,記作S1{r0,r1,…,rn};
步驟104-5)從白名單正則集S1中取出一個規(guī)則測試黑名單數(shù)據(jù)包,如果在S1中存在一個rk,能夠匹配黑名單的數(shù)據(jù),則對rk進行重構(gòu);
步驟104-6)判斷白名單正則集S1中所有的規(guī)則是否被匹配完,如果判斷結(jié)果是肯定的,轉(zhuǎn)入步驟104-7);否則,轉(zhuǎn)入步驟104-4);
步驟104-7)生成白名單正則集S1;
步驟104-8)對黑名單數(shù)據(jù)集內(nèi)所有M個修飾規(guī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-9)對步驟104-8)生成的相同的最深共同正則規(guī)則子樹進行合并,得到黑名單正則規(guī)則子樹;然后記錄每棵子樹對應的數(shù)據(jù)包編號index;
步驟104-10)將黑名單正則規(guī)則子樹轉(zhuǎn)化為對應的黑名單正則集,記作S2{t0,t1,…,tn};
步驟104-11)從黑名單正則集S2中取出一個規(guī)則測試白名單數(shù)據(jù)包,如果在S2中存在一個tk,能夠匹配白名單的數(shù)據(jù),則對tk進行重構(gòu);
步驟104-12)判斷黑名單正則集S2中所有的規(guī)則是否被匹配完,如果判斷結(jié)果是肯定的,轉(zhuǎn)入步驟104-13);否則,轉(zhuǎn)入步驟104-10);
步驟104-13)生成黑名單正則集S2;所述匹配正則集為所述白名單正則集S1和黑名單正則集S2的并集。
6.根據(jù)權(quán)利要求5所述的匹配正則集的生成方法,其特征在于,所述步驟104-1)的邊界條件是全局控制最后合并子樹的數(shù)量的條件,所述邊界條件包括:
(1)設(shè)定樹的總量;在進行樹合并時,最終生成的正則規(guī)則子樹數(shù)量不得少于這個總量;
(2)設(shè)定子樹的深度臨界值,每個合并后的子樹的深度不得小于這個臨界值。
7.根據(jù)權(quán)利要求5所述的匹配正則集的生成方法,其特征在于,所述步驟104-5)的重構(gòu)的過程為:設(shè)規(guī)則rk對應的正則規(guī)則子樹數(shù)記作treek,分別對treek的每個具有相同父節(jié)點的葉子節(jié)點集合進行的刪去操作,重新生成新的子樹集合T{sub-tree0,sub-tree1,…,sub-treet}。
8.一種深度包檢測方法,基于權(quán)利要求1-7之一所述的匹配正則集的生成方法生成的匹配正則集實現(xiàn),該方法包括:
步驟201)根據(jù)黑名單正則集S2和白名單正則集S1,生成正則規(guī)則匹配自動狀態(tài)機,分別定義為黑名單狀態(tài)機A_b和白名單狀態(tài)機A_w;
步驟202)從外部網(wǎng)絡入口獲取待檢測的數(shù)據(jù)包;
步驟203)待檢測的數(shù)據(jù)包先通過黑名單狀態(tài)機A_b,若狀態(tài)機A_b檢測出該數(shù)據(jù)包為黑名單匹配數(shù)據(jù),則按照黑名單的正則規(guī)則進行過濾處理;轉(zhuǎn)入步驟206);否則,轉(zhuǎn)入步驟204);
步驟204)待檢測數(shù)據(jù)包進入白名單狀態(tài)機A_w進行檢測,若狀態(tài)機A_w檢測出該數(shù)據(jù)包為白名單匹配數(shù)據(jù),則按照白名單的正則規(guī)則進行過濾處理,轉(zhuǎn)入步驟206);否則,判定該數(shù)據(jù)包為灰名單數(shù)據(jù);轉(zhuǎn)入步驟205);
步驟205)按照系統(tǒng)的安全等級對灰名單數(shù)據(jù)包進行過濾處理;
步驟206)待檢測數(shù)據(jù)包檢測完畢。