本發(fā)明涉及深度包檢測(cè)技術(shù),具體涉及一種匹配正則集的生成及深度包檢測(cè)方法。
背景技術(shù):
隨著移動(dòng)互聯(lián)時(shí)代的到來,網(wǎng)絡(luò)數(shù)據(jù)流量出現(xiàn)了指數(shù)爆炸式的增長。由此產(chǎn)生了網(wǎng)絡(luò)攻擊防范、網(wǎng)絡(luò)包內(nèi)容安全等問題。為了解決這類問題,深度包檢測(cè)(DPI)技術(shù)應(yīng)運(yùn)而生。
深度包檢測(cè)技術(shù)是一種面向網(wǎng)絡(luò)數(shù)據(jù)的高速檢測(cè)方法,主要用于檢測(cè)網(wǎng)絡(luò)包的載荷字段內(nèi)容。該技術(shù)在入侵防御系統(tǒng)(IPS)、入侵檢測(cè)系統(tǒng)(IDS)中被廣泛應(yīng)用。目前,在深度包檢測(cè)系統(tǒng)中,所使用的規(guī)則多為正則表達(dá)式規(guī)則,然而大多數(shù)正則表達(dá)式需要人工抓取數(shù)據(jù)包,并根據(jù)數(shù)據(jù)包特點(diǎn),歸納其中規(guī)律并編寫相應(yīng)正則規(guī)則。而對(duì)于新類型的攻擊模式和攻擊數(shù)據(jù),不能針對(duì)性地快速生成規(guī)則進(jìn)行匹配和防御。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于克服現(xiàn)有深度包檢測(cè)技術(shù)中存在的上述缺陷,提供了一種匹配正則集的生成方法,該方法能夠根據(jù)接收到的網(wǎng)絡(luò)數(shù)據(jù)包自動(dòng)生成匹配正則集,基于該正則集,本發(fā)明還提供了一種深度包檢測(cè)方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明提供了一種匹配正則集的生成方法,所述方法包括:
步驟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ù)據(jù)集的原子規(guī)則,構(gòu)造黑名單數(shù)據(jù)集的修飾規(guī)則樹;
步驟104)基于白名單數(shù)據(jù)集的修飾規(guī)則樹和黑名單數(shù)據(jù)集的修飾規(guī)則樹,在滿足規(guī)則生成邊界條件前提下,生成白名單正則集S1和黑名單正則集S2;所述匹配正則集為所述白名單正則集S1和黑名單正則集S2的并集。
上述技術(shù)方案中,所述步驟1)的預(yù)處理包括分類和清洗,具體過程為:對(duì)已有帶標(biāo)記的數(shù)據(jù)包進(jìn)行黑白名單的分類,然后對(duì)黑名單和白名單中相同的數(shù)據(jù)包進(jìn)行篩查和剔除得到黑名單數(shù)據(jù)集和白名單數(shù)據(jù)集。
上述技術(shù)方案中,所述步驟2)生成原子規(guī)則的過程為:對(duì)一個(gè)數(shù)據(jù)集的所有字符按照設(shè)定的正則匹配規(guī)則進(jìn)行正則匹配。
上述技術(shù)方案中,所述步驟103)包括:
步驟103-1)根據(jù)白名單數(shù)據(jù)集各層對(duì)應(yīng)的原子規(guī)則,生成初始規(guī)則樹;
步驟103-2)對(duì)初始規(guī)則樹按照修飾規(guī)則進(jìn)行修飾;
所述修飾規(guī)則為:
(1)“.*”類葉子節(jié)點(diǎn)向根節(jié)點(diǎn)上移;
(2)添加同層級(jí)相同節(jié)點(diǎn)合并后的節(jié)點(diǎn)層;
步驟103-3)根據(jù)所述修飾規(guī)則對(duì)規(guī)則樹進(jìn)行反復(fù)修飾,直至沒有可以修飾的節(jié)點(diǎn);得到白名單的數(shù)據(jù)集修飾規(guī)則樹;
步驟103-4)根據(jù)黑名單數(shù)據(jù)集各層對(duì)應(yīng)的原子規(guī)則,生成初始規(guī)則樹;
步驟103-5)對(duì)初始規(guī)則樹進(jìn)行修飾;
步驟103-6)根據(jù)所述修飾規(guī)則對(duì)規(guī)則樹進(jìn)行反復(fù)修飾,直至沒有可以修飾的節(jié)點(diǎn);得到黑名單數(shù)據(jù)集的修飾規(guī)則樹。
上述技術(shù)方案中,所述步驟104)具體包括:
步驟104-1)構(gòu)造邊界條件;
步驟104-2)對(duì)白名單數(shù)據(jù)集內(nèi)所有N個(gè)修飾規(guī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-3)對(duì)步驟104-2)生成的相同的最深共同正則規(guī)則子樹進(jìn)行合并,得到白名單正則規(guī)則子樹;然后記錄每棵子樹對(duì)應(yīng)的數(shù)據(jù)包編號(hào)index;
步驟104-4)將白名單正則規(guī)則子樹轉(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ī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-9)對(duì)步驟104-8)生成的相同的最深共同正則規(guī)則子樹進(jìn)行合并,得到黑名單正則規(guī)則子樹;然后記錄每棵子樹對(duì)應(yīng)的數(shù)據(jù)包編號(hào)index;
步驟104-10)將黑名單正則規(guī)則子樹轉(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的并集。
上述技術(shù)方案中,所述步驟104-1)的邊界條件是全局控制最后合并子樹的數(shù)量的條件,所述邊界條件包括:
(1)設(shè)定樹的總量;在進(jìn)行樹合并時(shí),最終生成的正則規(guī)則子樹數(shù)量不得少于這個(gè)總量;
(2)設(shè)定子樹的深度臨界值,每個(gè)合并后的子樹的深度不得小于這個(gè)臨界值。
上述技術(shù)方案中,所述步驟104-5)的重構(gòu)的過程為:設(shè)規(guī)則rk對(duì)應(yīng)的正則規(guī)則子樹數(shù)記作treek,分別對(duì)treek的每個(gè)具有相同父節(jié)點(diǎn)的葉子節(jié)點(diǎn)集合進(jìn)行的刪去操作,重新生成新的子樹集合T{sub-tree0,sub-tree1,…,sub-treet}。
基于上述匹配正則集的生成方法生成的匹配正則集,本發(fā)明還提供了一種深度包檢測(cè)方法,該方法包括:
步驟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ù)包先通過黑名單狀態(tài)機(jī)A_b,若狀態(tài)機(jī)A_b檢測(cè)出該數(shù)據(jù)包為黑名單匹配數(shù)據(jù),則按照黑名單的正則規(guī)則進(jìn)行過濾處理;轉(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)行過濾處理,轉(zhuǎn)入步驟206);否則,判定該數(shù)據(jù)包為灰名單數(shù)據(jù);轉(zhuǎn)入步驟205);
步驟205)按照系統(tǒng)的安全等級(jí)對(duì)灰名單數(shù)據(jù)包進(jìn)行過濾處理;
步驟206)待檢測(cè)數(shù)據(jù)包檢測(cè)完畢。
本發(fā)明的優(yōu)點(diǎn)在于:
1、本發(fā)明的方法可以利用已標(biāo)記的數(shù)據(jù)包,自動(dòng)生成正則規(guī)則,為深度包檢測(cè)系統(tǒng)提供匹配規(guī)則;
2、本發(fā)明生成的匹配正則集,保證規(guī)則的準(zhǔn)確性,可以有效減少誤判錯(cuò)判的概率;
3、通過本發(fā)明的方法生成匹配正則集,可以減少人工歸納正則規(guī)則的工作量,節(jié)約人工成本。
附圖說明
圖1為本發(fā)明的匹配正則集的生成方法的流程圖;
圖2為本發(fā)明的黑名單數(shù)據(jù)集的修飾規(guī)則樹的生成流程。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明做進(jìn)一步詳細(xì)的說明。
如圖1所示,一種匹配正則集的生成方法,所述方法包括:
步驟101)對(duì)接收到的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行預(yù)處理;得到白名單數(shù)據(jù)集和黑名單數(shù)據(jù)集;
所述預(yù)處理包括分類和清洗,具體過程為:對(duì)已有帶標(biāo)記的數(shù)據(jù)包進(jìn)行黑白名單的分類,然后對(duì)黑名單和白名單中相同的數(shù)據(jù)包進(jìn)行篩查和剔除得到黑名單數(shù)據(jù)集和白名單數(shù)據(jù)集;
步驟102)基于白名單數(shù)據(jù)集和黑名單數(shù)據(jù)集,根據(jù)正則表達(dá)式基本規(guī)則,分別生成黑名單數(shù)據(jù)集的原子規(guī)則和白名單數(shù)據(jù)集的原子規(guī)則;
所述生成原子規(guī)則的過程為:對(duì)一個(gè)數(shù)據(jù)集的所有字符按照正則匹配規(guī)則進(jìn)行正則匹配,所述正則匹配規(guī)則見表1:
表1
步驟103)基于白名單數(shù)據(jù)集的原子規(guī)則,構(gòu)造白名單數(shù)據(jù)集的修飾規(guī)則樹;基于黑名單數(shù)據(jù)集的原子規(guī)則,構(gòu)造黑名單數(shù)據(jù)集的修飾規(guī)則樹;
所述步驟103)包括:
步驟103-1)根據(jù)白名單數(shù)據(jù)集各層對(duì)應(yīng)的原子規(guī)則,生成初始規(guī)則樹;
步驟103-2)對(duì)初始規(guī)則樹按照修飾規(guī)則進(jìn)行修飾;
所述修飾規(guī)則為:
(1):“.*”類葉子節(jié)點(diǎn)向根節(jié)點(diǎn)上移;
(2):添加同層級(jí)相同節(jié)點(diǎn)合并后的節(jié)點(diǎn)層。
步驟103-3)根據(jù)所述修飾規(guī)則對(duì)規(guī)則樹進(jìn)行反復(fù)修飾,直至沒有可以修飾的節(jié)點(diǎn);得到白名單的數(shù)據(jù)集修飾規(guī)則樹;
步驟103-4)根據(jù)黑名單數(shù)據(jù)集各層對(duì)應(yīng)的原子規(guī)則,生成初始規(guī)則樹;
步驟103-5)對(duì)初始規(guī)則樹按照上述修飾規(guī)則進(jìn)行修飾;
步驟103-6)根據(jù)所述修飾規(guī)則對(duì)規(guī)則樹進(jìn)行反復(fù)修飾,直至沒有可以修飾的節(jié) 點(diǎn);得到黑名單數(shù)據(jù)集的修飾規(guī)則樹;
步驟104)基于白名單數(shù)據(jù)集的修飾規(guī)則樹和黑名單數(shù)據(jù)集的修飾規(guī)則樹,在滿足規(guī)則生成邊界條件前提下,生成白名單正則集S1和黑名單正則集S2;所述匹配正則集為所述白名單正則集S1和黑名單正則集S2的并集。
具體包括:
如圖2所示,所述步驟104-1)到步驟104-7)的流程為:
步驟104-1)構(gòu)造邊界條件;
步驟104-2)對(duì)白名單數(shù)據(jù)集內(nèi)所有N個(gè)修飾規(guī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-3)對(duì)步驟104-2)生成的相同的最深共同正則規(guī)則子樹進(jìn)行合并,得到白名單正則規(guī)則子樹;然后記錄每棵子樹對(duì)應(yīng)的數(shù)據(jù)包編號(hào)index;
步驟104-4)將白名單正則規(guī)則子樹轉(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ī)則樹依次兩兩構(gòu)造最深共同正則規(guī)則子樹;
步驟104-9)對(duì)步驟104-8)生成的相同的最深共同正則規(guī)則子樹進(jìn)行合并,得到黑名單正則規(guī)則子樹;然后記錄每棵子樹對(duì)應(yīng)的數(shù)據(jù)包編號(hào)index;
步驟104-10)將黑名單正則規(guī)則子樹轉(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的并集。
基于上述方法生成的匹配正則集,本發(fā)明還提供了一種深度包檢測(cè)方法,所述方法包括:
步驟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ù)包先通過黑名單狀態(tài)機(jī)A_b,若狀態(tài)機(jī)A_b檢測(cè)出該數(shù)據(jù)包為黑名單匹配數(shù)據(jù),則按照黑名單的正則規(guī)則進(jìn)行過濾處理;轉(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)行過濾處理,轉(zhuǎn)入步驟206);否則,判定該數(shù)據(jù)包為灰名單數(shù)據(jù);轉(zhuǎn)入步驟205);
步驟205)按照系統(tǒng)的安全等級(jí)對(duì)灰名單數(shù)據(jù)包進(jìn)行過濾處理;
步驟206)待檢測(cè)數(shù)據(jù)包檢測(cè)完畢。
最后所應(yīng)說明的是,以上實(shí)施例僅用以說明本發(fā)明的技術(shù)方案而非限制。盡管參照實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對(duì)本發(fā)明的技術(shù)方案進(jìn)行修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍當(dāng)中。