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