專利名稱:一種基于應(yīng)用層的數(shù)據(jù)分割方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,尤其涉及一種基于應(yīng)用層的數(shù)據(jù)分割方法及 裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)的發(fā)展,應(yīng)用層(4層以上)業(yè)務(wù)越來越多,基于應(yīng)用層的設(shè)備 如IPS (Intrusion Prevention System,入侵防御系統(tǒng))、帶寬管理設(shè)備等都需要 進(jìn)行深度報(bào)文檢測,深度報(bào)文檢測除了分析IP數(shù)據(jù)包的4層以下的內(nèi)容(包 括源地址、目的地址、源端口、目的端口以及協(xié)議類型)以外,還增加了應(yīng) 用層分析,識別各種網(wǎng)絡(luò)應(yīng)用及其內(nèi)容。
在對報(bào)文進(jìn)行深度檢測時(shí),需要根據(jù)協(xié)議的不同進(jìn)行報(bào)文的重組和拷貝, 即將多個(gè)數(shù)據(jù)包拷貝到存儲(chǔ)器中進(jìn)行重組,使得多個(gè)數(shù)據(jù)包關(guān)聯(lián)到一個(gè)完整 的數(shù)據(jù)流當(dāng)中,在尋找攻擊異常行為的同時(shí),保持整個(gè)數(shù)據(jù)流的狀態(tài)。這種 重組和拷貝代價(jià)很大,需要占用大量存儲(chǔ)空間及控制資源。為此很多廠家提 出了基于流的檢測技術(shù),基于流的檢測可以在網(wǎng)絡(luò)數(shù)據(jù)經(jīng)過應(yīng)用層設(shè)備時(shí), 記錄數(shù)據(jù)流的檢測狀態(tài),將相鄰數(shù)據(jù)包之間的上下文連接起來,形成一個(gè)完 整的數(shù)據(jù)流,從而減少檢測引擎進(jìn)行大量的重組拷貝,提高應(yīng)用層設(shè)備的綜 合性能。
不管是重組拷貝還是基于流的檢測,都是通過TCP ( Transmission Control Protocol,傳輸控制協(xié)議)進(jìn)行通信。當(dāng)報(bào)文深度檢測時(shí),將TCP傳輸?shù)臄?shù)據(jù) 流劃分成一個(gè)個(gè)滿足應(yīng)用層數(shù)據(jù)檢測邏輯的深度4全測單元,發(fā)送給深度檢測 引擎。對于重組拷貝方式,劃分深度檢測單元就是決定哪些數(shù)據(jù)包應(yīng)該重組 拷貝,對于基于流的檢測,就是要決定哪些網(wǎng)絡(luò)數(shù)據(jù)要在一個(gè)檢測流上檢測, 什么時(shí)候創(chuàng)建和釋放檢測流,即在檢測前,確定檢測哪一段網(wǎng)絡(luò)數(shù)據(jù),在檢 測后,釋放該段網(wǎng)絡(luò)數(shù)據(jù)所占資源。如何確定上述深度檢測單元對于提高應(yīng)用層設(shè)備的檢測精度和檢測性能 至關(guān)重要,因?yàn)閼?yīng)用層設(shè)備對數(shù)據(jù)包進(jìn)行深度檢測的方法是模式匹配,指在
給定長度為n的目標(biāo)串T-T1 、 T2.....Tn中查找長度為m的模式串P^P1 、 P2.....
Pm的首次出現(xiàn)或多次出現(xiàn)的過程,若P在T中出現(xiàn)1次或多次,則匹配成功, 否則匹配失敗。例如,可以采用基于正則表達(dá)式(Regular Expression)的模式 匹配,用來描述或匹配一系列符合某個(gè)句法規(guī)則的字符串。簡單地說, 一個(gè) 正則表達(dá)式是普通字符(例如字符a到z)以及特殊字符(稱為元字符)組成的 文字模式,該模式描述在查找文字主體時(shí)待匹配的一個(gè)或多個(gè)字符串。比如 ".abc
S描述了這樣一類字符串頭部具有任意個(gè)任意字符,并以abc加一 個(gè)數(shù)字結(jié)尾。"
而較準(zhǔn)確的正則表達(dá)式需要對字符串模式有較準(zhǔn)確的位置定位,這種位 置定位的前提是交給深度檢測引擎的深度檢測單元本身滿足應(yīng)用協(xié)議數(shù)據(jù)邏 輯,比如需要將HTTP (HyperText Transfer Protocol,超文件傳輸協(xié)議)的某 個(gè)完整請求作為一個(gè)深度檢測單元交給深度檢測引擎進(jìn)行檢測,這樣基于 HTTP請求的特征匹配才會(huì)符合用戶本身語義要求,相反,如果這個(gè)請求單元 不完整或者含有其他請求單元的數(shù)據(jù),那么可能導(dǎo)致深度檢測引擎中的特征 無法命中造成的漏報(bào)或者誤報(bào)。
然而,現(xiàn)有的技術(shù)方案中,在進(jìn)入深度檢測引擎之前, 一般按照一個(gè)系 統(tǒng)預(yù)定義的長度對TCP數(shù)據(jù)流進(jìn)行切分,當(dāng)TCP請求或者回應(yīng)的負(fù)載數(shù)據(jù)積累 到一定長度(或超出一定時(shí)限),作為一個(gè)深度檢測單元,發(fā)送給深度檢測 引擎。
因此,如果按照系統(tǒng)預(yù)定義的切分長度對數(shù)據(jù)流進(jìn)行切分,有可能出現(xiàn) 深度檢測單元過大或者過小,導(dǎo)致該深度^^r測單元中的數(shù)據(jù)不完整或包含其 他數(shù)據(jù),進(jìn)而使得深度檢測單元與應(yīng)用層協(xié)議數(shù)據(jù)邏輯單元不一致,深度檢 測引擎中的特征無法命中,從而降低深度檢測的準(zhǔn)確度和效率。
現(xiàn)有技術(shù)中還可以采用精確 一些的系統(tǒng)對少數(shù)幾個(gè)協(xié)議進(jìn)行應(yīng)用分析, 根據(jù)應(yīng)用協(xié)議本身的具體格式進(jìn)行深度檢測單元的切分,使得切分后的深度 檢測單元滿足該幾個(gè)協(xié)議應(yīng)用層對應(yīng)的格式要求。但是應(yīng)用協(xié)議分析代價(jià)很行具體分析,并且無法實(shí)現(xiàn)通用性和高效性。
發(fā)明內(nèi)容
本發(fā)明提供了 一種基于應(yīng)用層的數(shù)據(jù)分割方法及裝置,以實(shí)現(xiàn)應(yīng)用層設(shè) 備切分?jǐn)?shù)據(jù)流,保持切分效果與應(yīng)用層協(xié)議數(shù)據(jù)邏輯單元一致,從而提高深 度檢測的準(zhǔn)確度和效率。
本發(fā)明提供了 一種基于應(yīng)用層的數(shù)據(jù)分割方法,應(yīng)用于深度檢測設(shè)備中,
所述方法包括以下步驟
所述深度檢測設(shè)備才企測來自用戶的數(shù)據(jù)流是否為具有會(huì)話的數(shù)據(jù)流,當(dāng) 為具有會(huì)話的數(shù)據(jù)流時(shí),獲取所述數(shù)據(jù)流對應(yīng)的切分特征;
所述深度檢測設(shè)備根據(jù)所述獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切分,獲 得深度檢測單元;
所述深度檢測設(shè)備對所述深度檢測單元進(jìn)行深度檢測。
分,之前還包括
判斷所述數(shù)據(jù)流是否為TCP數(shù)據(jù)流,如果是,根據(jù)數(shù)據(jù)流中TCP數(shù)據(jù)包 的TCP序列號,對所述TCP數(shù)據(jù)包進(jìn)行保序。
其中,所述獲取數(shù)據(jù)流對應(yīng)的切分特征,具體包括
在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征查找,當(dāng)所述會(huì)話命中切分對象且有 激活切分特征,將最高優(yōu)先級切分特征所屬切分對象作為當(dāng)前會(huì)話切分對象;
如果所述會(huì)話命中切分對象但沒有命中激活切分特征,提取其中優(yōu)先級 最高切分特征;
如果未命中切分特征、或所述會(huì)話上無切分對象且無激活切分特征命中、 或切分特征不屬于會(huì)話切分對象,將所述數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單 元的后續(xù)數(shù)據(jù)。
其中,所述深度4企測設(shè)備根據(jù)所述獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切 分,獲得深度檢測單元,具體包括
如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中開始切分特征,結(jié)束當(dāng)前請求檢測單元,所述數(shù)據(jù)包作為一個(gè)新請求檢測單元開始進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù) 據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元同方向,將所述數(shù)據(jù)包作為當(dāng) 前請求檢測單元的最后一個(gè)數(shù)據(jù)包進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命 中結(jié)束切分特征且與當(dāng)前請求檢測單元反向,結(jié)束當(dāng)前請求檢測單元,將所 述數(shù)據(jù)包作為當(dāng)前回應(yīng)檢測單元的第 一個(gè)數(shù)據(jù)包進(jìn)行檢測。 其中,所述切分特征包括協(xié)議類型、方向和正則表達(dá)式。 其中,所述切分特征包括協(xié)議類型、方向和"fe文的長度特征,所述報(bào)文 的長度特征是回應(yīng)方向的負(fù)載不為0,或者是具體的報(bào)文負(fù)載長度范圍。 其中,所述切分特征還包括優(yōu)先級。 本發(fā)明還提供了一種基于應(yīng)用層的數(shù)據(jù)分割裝置,包括 會(huì)話管理模塊,用于檢測來自用戶的數(shù)據(jù)流,將具有會(huì)話的數(shù)據(jù)流發(fā)送 到切分匹配模塊;
切分匹配模塊,與所述會(huì)話管理模塊連接,用于接收來自所述會(huì)話管理 模塊的數(shù)據(jù)流,獲取所述數(shù)據(jù)流對應(yīng)的切分特征;
檢測單元控制模塊,分別與所述會(huì)話管理模塊和所述切分匹配模塊連接, 用于根據(jù)所述切分匹配模塊獲得的切分特征對來自所述會(huì)話管理模塊的數(shù)據(jù) 流進(jìn)行切分,獲得深度檢測單元;
深度檢測模塊,與所述檢測單元控制模塊連接,用于對所述深度檢測單 元進(jìn)行深度纟企測。
其中,
所述會(huì)話管理模塊,還用于判斷所述數(shù)據(jù)流是否為TCP數(shù)據(jù)流; 所述裝置還包括TCP保序模塊,分別與所述會(huì)話管理模塊和切分匹配模 塊連接,用于接收來自所述會(huì)話管理模塊的TCP數(shù)據(jù)流,根據(jù)數(shù)據(jù)流中TCP 數(shù)據(jù)包的TCP序列號,對TCP數(shù)據(jù)包進(jìn)行保序,將TCP數(shù)據(jù)包有序地發(fā)送 給所述切分匹配模塊。
其中,所述切分匹配模塊,具體用于在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征 查找,當(dāng)該會(huì)話命中切分對象且有激活切分特征,將最高優(yōu)先級切分特征所 屬切分對象作為當(dāng)前會(huì)話切分對象;如果該會(huì)話命中切分對象但沒有命中激活切分特征,提取其中優(yōu)先級最高切分特征;如果未命中切分特征、或該會(huì) 話上無切分對象且無激活切分特征命中、或切分特征不屬于會(huì)話切分對象, 將該數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單元的后續(xù)數(shù)據(jù)。
其中,所述檢測單元控制模塊,具體用于如果所述會(huì)話中某個(gè)數(shù)據(jù)包命 中開始切分特征,結(jié)束當(dāng)前請求檢測單元,所述凄t據(jù)包作為一個(gè)新請求;險(xiǎn)測 單元開始進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與當(dāng)前 請求檢測單元同方向,將所述數(shù)據(jù)包作為當(dāng)前請求檢測單元的最后一個(gè)數(shù)據(jù) 包進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢 測單元反向,結(jié)束當(dāng)前請求檢測單元,將所述數(shù)據(jù)包作為當(dāng)前回應(yīng)檢測單元 的第 一個(gè)數(shù)據(jù)包進(jìn)行;險(xiǎn)測。
與現(xiàn)有技術(shù)相比,本發(fā)明具有以下優(yōu)點(diǎn)
本發(fā)明中,能夠十分高效的解決應(yīng)用層設(shè)備深度檢測數(shù)據(jù)切分問題,可 以使深度檢測單元和大部分協(xié)議的解析過程吻合,避免對這些協(xié)議的數(shù)據(jù)包 進(jìn)行解析,可以用于指導(dǎo)基于深度檢測引擎的重組和基于流檢測引擎檢測流 的創(chuàng)建和銷毀,從而大大提高檢測的精度和效率。
為了更清楚地說明本發(fā)明的技術(shù)方案,下面將對實(shí)施例描述中所需要使 用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一 些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下, 還可以才艮據(jù)這些附圖獲得其他的附圖。
圖l是本發(fā)明中一種基于應(yīng)用層的數(shù)據(jù)分割裝置結(jié)構(gòu)圖2是本發(fā)明中另一種基于應(yīng)用層的數(shù)據(jù)分割裝置結(jié)構(gòu)圖3是本發(fā)明中一種基于應(yīng)用層的數(shù)據(jù)分割方法流程圖4是本發(fā)明中基于圖3原理的一種基于應(yīng)用層的數(shù)據(jù)分割方法流程圖。
具體實(shí)施例方式
下面將結(jié)合本發(fā)明中的附圖,對本發(fā)明中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明的一部分實(shí)施例,而不是全部的 實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞 動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明的核心思想是通過分析應(yīng)用協(xié)議傳輸數(shù)據(jù)的共同特點(diǎn),根據(jù)協(xié) 議類型、傳輸方向、和協(xié)議內(nèi)容特征定義來定義切分?jǐn)?shù)據(jù)單元,把協(xié)議數(shù)據(jù) 切分成一個(gè)個(gè)符合協(xié)議數(shù)據(jù)邏輯單元,從而能夠滿足絕大多數(shù)應(yīng)用層協(xié)議的 數(shù)據(jù)邏輯?,F(xiàn)有技術(shù)中,深度檢測設(shè)備對接收的數(shù)據(jù)流采用固定長度的切分
方式,例如,按照協(xié)議數(shù)據(jù)邏輯5個(gè)數(shù)據(jù)包是一個(gè)組成單元,但如果設(shè)備按 照4個(gè)數(shù)據(jù)包進(jìn)行;險(xiǎn)測時(shí),則會(huì)導(dǎo)致漏報(bào),如果按照6個(gè)或者更多的數(shù)據(jù)包 進(jìn)行檢測,則會(huì)導(dǎo)致誤報(bào)。本發(fā)明中,深度檢測設(shè)備接收數(shù)據(jù)包,如果在請 求方向,獲得多個(gè)數(shù)據(jù)包后,在響應(yīng)方向獲得一個(gè)負(fù)載不為0的數(shù)據(jù)包,則 可以認(rèn)為該請求結(jié)束,將這幾個(gè)數(shù)據(jù)包組成請求深度檢測數(shù)據(jù)包,發(fā)給深度 檢測引擎。對于采用正則表達(dá)式,將某些需要查找的關(guān)鍵詞組成正則表達(dá)式, 利用該正則表達(dá)式在接收數(shù)據(jù)包中進(jìn)行匹配查找,將查找到的若干數(shù)據(jù)包組 成一個(gè)深度^r測單元,發(fā)給深度^f企測引擎。
本發(fā)明通過分析應(yīng)用協(xié)議發(fā)現(xiàn) 一個(gè)應(yīng)用層協(xié)議的會(huì)話,分為請求數(shù)據(jù) 流和回應(yīng)數(shù)據(jù)流,這兩個(gè)數(shù)據(jù)流是交叉確認(rèn)的,如果接收端設(shè)備回應(yīng)的數(shù)據(jù) 流滿足一定特征(例如,回應(yīng)數(shù)據(jù)流的應(yīng)用層負(fù)載長度不為0),則說明發(fā)送 端設(shè)備完成了請求數(shù)據(jù)流的傳輸;當(dāng)發(fā)送端設(shè)備開始發(fā)送一個(gè)新請求數(shù)據(jù)流 時(shí),則說明接收端設(shè)備的回應(yīng)數(shù)據(jù)流已經(jīng)完成,因此可以通過一個(gè)方向的報(bào) 文特征來對另一個(gè)方向的數(shù)據(jù)流進(jìn)行深度檢測單元切分,使深度檢測單元和 應(yīng)用協(xié)議的邏輯數(shù)據(jù)單元一致。例如,HTTP POST或GET頁面可能分片傳輸, 即分成多個(gè)數(shù)據(jù)包傳輸,在對TCP數(shù)據(jù)流進(jìn)行保序處理的前提下,往往可以 通過服務(wù)器回應(yīng)的TCP長度負(fù)載不為零來確定本次頁面請求傳輸完成。
本發(fā)明基于上述規(guī)律,提出了一種基于應(yīng)用層的數(shù)據(jù)分割裝置,通過通 用的切分特征定義和檢測方法,實(shí)現(xiàn)對應(yīng)用協(xié)議數(shù)據(jù)流的深度檢測單元自動(dòng) 切分,使深度檢測單元和應(yīng)用協(xié)議的解析過程吻合,該裝置如圖1所示,包括
會(huì)話管理模塊10,用于檢測來自用戶的數(shù)據(jù)流,對該數(shù)據(jù)流進(jìn)行會(huì)話管 理和狀態(tài)跟蹤,其中狀態(tài)跟蹤是把單個(gè)用戶的會(huì)話關(guān)聯(lián)起來,將該用戶的會(huì) 話數(shù)據(jù)流發(fā)送到切分匹配模塊20,會(huì)話管理和狀態(tài)跟蹤的實(shí)現(xiàn)類似與開源的 Netfilter機(jī)制,在此不贅述;
切分匹配模塊20,與會(huì)話管理模塊10連接,用于根據(jù)預(yù)先設(shè)置的切分特 征,對來自會(huì)話管理模塊IO的數(shù)據(jù)流進(jìn)行切分特征匹配,識別出數(shù)據(jù)流的切 分特征,作為檢測單元控制模塊30的切分依據(jù);切分匹配模塊20具體用于 在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征查找,當(dāng)該會(huì)話命中切分對象且有激活切 分特征,將最高優(yōu)先級切分特征所屬切分對象作為當(dāng)前會(huì)話切分對象;如果 該會(huì)話命中切分對象但沒有命中激活切分特征,提取其中優(yōu)先級最高切分特 征;如果未命中切分特征、或該會(huì)話上無切分對象且無激活切分特征命中、 或切分特征不屬于會(huì)話切分對象,將該數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單元 的后續(xù)數(shù)據(jù)。
其中,預(yù)先設(shè)置的切分特征的邏輯關(guān)系為
切分對象=多個(gè)切分對;
切分對=[開始切分特征組]+ [結(jié)束切分特征組]; 切分特征組=多個(gè)切分特征;
切分特征={TCP|UDP1ICMP} +方向+ [切分正則表達(dá)式]+ [報(bào)文長度屬性] +優(yōu)先級;
才艮文長度屬性={TCP-HAVE-DATAI payload low limit十payload high limit}。
本發(fā)明通過一個(gè)切分對象對一個(gè)會(huì)話兩個(gè)方向的數(shù)據(jù)流進(jìn)行相互切分, 一個(gè)切分對象可能包含一個(gè)或者多個(gè)切分對,每個(gè)切分對包含兩個(gè)切分特征 組
開始切分特征組當(dāng)前數(shù)據(jù)包中的特征命中開始切分特征組后,當(dāng)前數(shù) 據(jù)包為該會(huì)話上一個(gè)請求檢測單元的開始,該會(huì)話上一個(gè)回應(yīng)檢測單元結(jié)束; 結(jié)束切分特征組當(dāng)前數(shù)據(jù)包中的特征命中結(jié)束切分特征組后,該會(huì)話上一個(gè)當(dāng)前請求斥企測單元結(jié)束,此時(shí),如果一個(gè)當(dāng)前數(shù)據(jù)包方向和現(xiàn)有請求 沖企測單元方向一致,則該凄t據(jù)包為當(dāng)前請求;險(xiǎn)測單元的最后一個(gè)數(shù)據(jù)包,否 則當(dāng)前請求4全測單元結(jié)束,該數(shù)據(jù)包為當(dāng)前請求4全測單元對應(yīng)的回應(yīng)4企測單 元的開始;
一個(gè)切分對象的切分特征組中必須有一個(gè)切分特征標(biāo)志為激活切分特 征, 一個(gè)會(huì)話命中了這些特征,相應(yīng)的切分對象才會(huì)在該會(huì)話上生效。
切分特征有協(xié)議類型、方向、正則表達(dá)式、報(bào)文的長度特征、優(yōu)先級五
部分組成,其中
協(xié)議類型可以是UDP ( User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議)、TCP 、 ICMP (Internet Control Message Protocol,互聯(lián)網(wǎng)控制消息協(xié)議)中的 一種, 會(huì)話管理模塊IO會(huì)對這三個(gè)協(xié)議建立會(huì)話;當(dāng)然,協(xié)議類型不限于上述三種, 當(dāng)采用其他協(xié)議時(shí),原理相同,只是需要將該協(xié)議類型添加到切分特征的協(xié) 議類型中。
方向,可以選client to server,表示在按照客戶端到服務(wù)端的數(shù)據(jù)流上進(jìn) 行匹配;server to client,表示要在服務(wù)端到客戶端的數(shù)據(jù)流上進(jìn)行匹閨己;both, 表示要命中客戶端到服務(wù)端或服務(wù)端到客戶端。
正則表達(dá)式和報(bào)文的長度特征選項(xiàng)至少選一個(gè),其中,報(bào)文的長度特征 可以是TCP-HAVE-DATA (即TCP的負(fù)載不為0 ),或者是具體的報(bào)文負(fù)載長 度范圍(payload low limit, payload high limit);
在命中多個(gè)沖突的切分特征時(shí),優(yōu)先級高的將被選用。
本發(fā)明中,以HTTP為例進(jìn)行說明,針對HTTP的協(xié)議可以定義如下切 分特征組
Marcher rule 1: +刀分*見則1
PROTO: TCP 〃協(xié)議類型為TCP
DIR: request 〃方向是請求報(bào)文 REX: ,,A ( i) ge%ost|head|trace[x20\t],, 正則表達(dá)式含義為 匹配HTTP請求方向中包含get或post或head或trace,后跟空格或者tab的 字符串,且不區(qū)分大小寫PRIOR: 10 〃優(yōu)先級為10
Marcher rule 2:切分規(guī)則2
PROTO: TCP 〃f辦i義類型為TCP
DIR: response 〃方向是回應(yīng)才艮文
PACK—LEN: TCP-HAVE-DATA 〃數(shù)據(jù)包長度為有數(shù)據(jù)
PRIOR: 10 〃優(yōu)先級為10
Matcher Object HTTP:切分對象為HTTP Matcher Couple 1:切分對1 START:
1 key以命中切分規(guī)則1的數(shù)據(jù)包開始
END:
2 以命中切分規(guī)則2的數(shù)據(jù)包結(jié)束
上述HTTP切分對象的含義是當(dāng)會(huì)話的請求方向命中HTTP的幾個(gè)典 型請求方法頭(get或post)時(shí),切分對象激活,請求方向開始一個(gè)新的深度 檢測單元,回應(yīng)方向深度沖企測單元結(jié)束,當(dāng)回應(yīng)方向4全測到TCP負(fù)載長度不 為0的報(bào)文時(shí),當(dāng)前的請求檢測單元結(jié)束, 一個(gè)新的回應(yīng)檢測單元開始,這 樣切分的結(jié)果,對于絕大多數(shù)HTTP應(yīng)用,都可以把HTTP流切分成一個(gè)個(gè) 請求和回應(yīng)深度檢測單元。
檢測單元控制模塊30,分別與會(huì)話管理模塊10和切分匹配模塊20連接, 用于利用切分匹配模塊20的識別結(jié)果,對數(shù)據(jù)流進(jìn)行切分,獲得深度檢測單 元,交給深度檢測模塊40;檢測單元控制模塊30具體用于如果所述會(huì)話中某 個(gè)數(shù)據(jù)包命中開始切分特征,結(jié)束當(dāng)前請求檢測單元,所述數(shù)據(jù)包作為一個(gè) 新請求檢測單元開始進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特 征且與當(dāng)前請求檢測單元同方向,將所述數(shù)據(jù)包作為當(dāng)前請求檢測單元的最 后一個(gè)數(shù)據(jù)包進(jìn)行;險(xiǎn)測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與 當(dāng)前請求檢測單元反向,結(jié)束當(dāng)前請求檢測單元,將所述數(shù)據(jù)包作為當(dāng)前回 應(yīng)檢測單元的第 一個(gè)數(shù)據(jù)包進(jìn)行檢測。
深度檢測模塊40,與檢測單元控制模塊30連接,用于對深度檢測單元進(jìn)行特征查找,例如可以采用通用內(nèi)容搜索算法AC或者PCRE算法。本發(fā)明中,當(dāng)協(xié)議類型為TCP時(shí),會(huì)話管理模塊IO,還用于判斷所述數(shù) 據(jù)流是否為TCP數(shù)據(jù)流;還需要增加TCP保序模塊50,如圖2所示。其中, TCP保序模塊50用于接收來自會(huì)話管理模塊10的IP數(shù)據(jù)包,根據(jù)數(shù)據(jù)包的 TCP序列號,對進(jìn)入系統(tǒng)的數(shù)據(jù)包進(jìn)行保序處理,按盡力原則對亂序報(bào)文進(jìn) 行緩存,盡可能將TCP字節(jié)流有序的交給切分匹配模塊20進(jìn)行處理;例如, 接收了某個(gè)請求的數(shù)據(jù)流應(yīng)該包括10個(gè)數(shù)據(jù)包,TCP序列號分別標(biāo)為l到10, 但是由于網(wǎng)絡(luò)傳輸?shù)仍?,這些數(shù)據(jù)包到達(dá)TCP保序模塊50時(shí),可能不是按 照順序到達(dá)的,如果將亂序的數(shù)據(jù)包發(fā)送給切分匹配模塊20,則無法正確識 別出切分特征,因此,TCP保序模塊50將接收到的這些數(shù)據(jù)包都先進(jìn)行緩存, 在根據(jù)TCP序列號順序讀取數(shù)據(jù)包并輸出,以使輸出的數(shù)據(jù)包按照正常的順 序傳輸。本發(fā)明提供了 一種基于應(yīng)用層的數(shù)據(jù)分割方法,應(yīng)用于深度檢測設(shè)備中, 所述方法如圖3所示,包括以下步驟步驟301,所述深度檢測設(shè)備檢測來自用戶的數(shù)據(jù)流是否為具有會(huì)話的數(shù) 據(jù)流,當(dāng)為具有會(huì)話的數(shù)據(jù)流時(shí),獲取所述數(shù)據(jù)流對應(yīng)的切分特征。其中, 獲取數(shù)據(jù)流對應(yīng)的切分特征,具體包括在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征 查找,當(dāng)所述會(huì)話命中切分對象且有激活切分特征,將最高優(yōu)先級的切分特 征所屬切分對象為當(dāng)前會(huì)話切分對象;如果所述會(huì)話命中切分對象但沒有命 中激活切分特征,提取其中優(yōu)先級最高切分特征;如果未命中切分特征、或 所述會(huì)話上無切分對象且無激活切分特征命中、或切分特征不屬于會(huì)話切分 對象,將所述數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單元的后續(xù)數(shù)據(jù)。另外,對于 TCP協(xié)議,還需要判斷所述數(shù)據(jù)流是否為TCP數(shù)據(jù)流,如果是,根據(jù)數(shù)據(jù)流 中TCP數(shù)據(jù)包的TCP序列號,對所述TCP數(shù)據(jù)包進(jìn)行保序。步驟302,所述深度檢測設(shè)備根據(jù)所述獲得的切分特征對所述數(shù)據(jù)流進(jìn)行 切分,獲得深度檢測單元;具體包括如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中開始 切分特征,結(jié)束當(dāng)前請求檢測單元,所述數(shù)據(jù)包作為一個(gè)新請求檢測單元開始進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢 測單元同方向,將所述數(shù)據(jù)包作為當(dāng)前請求檢測單元的最后一個(gè)數(shù)據(jù)包進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元 反向,結(jié)束當(dāng)前請求4企測單元,將所述數(shù)據(jù)包作為當(dāng)前回應(yīng)4企測單元的第一 個(gè)數(shù)據(jù)包進(jìn)行檢測。其中,切分特征包括協(xié)議類型、方向和正則表達(dá)式;或 協(xié)議類型、方向和報(bào)文的長度特征,所述報(bào)文的長度特征是回應(yīng)方向的負(fù)載 不為0,或者是具體的報(bào)文負(fù)載長度范圍;切分特征還包括優(yōu)先級。 步驟303,所述深度檢測設(shè)備對所述深度檢測單元進(jìn)行深度檢測。如圖4所示,為圖3技術(shù)方案的一種具體應(yīng)用場景,包括以下步驟步驟401,深度檢測設(shè)備接收數(shù)據(jù)流,對該數(shù)據(jù)流進(jìn)行會(huì)話跟蹤,根據(jù)發(fā) 送設(shè)備和接收設(shè)備的地址將同 一用戶的同 一會(huì)話關(guān)聯(lián)起來;步驟402,深度檢測設(shè)備根據(jù)數(shù)據(jù)流中攜帶的報(bào)文類型標(biāo)識判斷該數(shù)據(jù)流 是否為TCP數(shù)據(jù)流,如果是TCP數(shù)據(jù)流,可能出現(xiàn)亂序現(xiàn)象,則轉(zhuǎn)步驟403, 如果不是,例如是UDP或ICMP報(bào)文,則直接轉(zhuǎn)步驟404;步驟403 、深度檢測設(shè)備對TCP數(shù)據(jù)流進(jìn)行TCP保序,根據(jù)數(shù)據(jù)包的TCP 序列號,對進(jìn)入深度檢測設(shè)備的TCP數(shù)據(jù)流進(jìn)行保序處理,按盡力原則對亂 序數(shù)據(jù)包進(jìn)行緩存,將TCP數(shù)據(jù)流有序發(fā)出;步驟404,深度檢測設(shè)備判斷該數(shù)據(jù)流是否有會(huì)話,如根據(jù)報(bào)文的五元組 信息(源IP地址、目的IP地址、協(xié)議號、源端口號、目的端口號)進(jìn)行判斷, 如果有會(huì)話,則轉(zhuǎn)步驟405,如果沒有會(huì)話,則轉(zhuǎn)步驟413;由于會(huì)話通常包 括多個(gè)請求及回應(yīng)報(bào)文,如果請求與回應(yīng)報(bào)文之間有聯(lián)系,可以確定有上層 應(yīng)用會(huì)話;步驟405,深度檢測設(shè)備在該會(huì)話中進(jìn)行切分特征查找,查找結(jié)果包括在 該會(huì)話中未命中切分對象和未命中切分特征兩種情況。當(dāng)該會(huì)話命中切分對 象且有激活切分特征,則轉(zhuǎn)步驟406,如果該會(huì)話命中切分對象但沒有命中激 活切分特征,則轉(zhuǎn)步驟407,如果未命中切分特征、或該會(huì)話上無切分對象且 無激活切分特征命中、或切分特征不屬于會(huì)話切分對象,則轉(zhuǎn)步驟414;步驟406,當(dāng)命中切分對象且有激活切分特征,將最高優(yōu)先級的切分特征 所屬切分對象作為當(dāng)前會(huì)話切分對象;
步驟407,提取其中優(yōu)先級最高切分特征; 步驟408,結(jié)束當(dāng)前回應(yīng)檢測單元;
上述步驟405至步驟408執(zhí)行的具體作用是判斷該會(huì)話中是否存在切分 特征,及相應(yīng)的處理策略。
步驟409,深度檢測設(shè)備對該會(huì)話進(jìn)行切分特征判斷,如果該會(huì)話中某個(gè) 數(shù)據(jù)包命中開始切分特征,則轉(zhuǎn)步驟410,如果該會(huì)話中某個(gè)數(shù)據(jù)包命中結(jié)束 切分特征且與當(dāng)前請求檢測單元同方向,則轉(zhuǎn)步驟411,如果該會(huì)話中某個(gè)數(shù) 據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元反向,則轉(zhuǎn)步驟412;
步驟410,深度4全測設(shè)備結(jié)束當(dāng)前請求4企測單元,該數(shù)據(jù)包作為一個(gè)新請 求檢測單元開始進(jìn)行檢測;
步驟411,深度檢測設(shè)備將該數(shù)據(jù)包作為當(dāng)前請求檢測單元的最后一個(gè)數(shù) 據(jù)包進(jìn)行檢測;
步驟412,深度檢測設(shè)備結(jié)束當(dāng)前請求檢測單元,將該數(shù)據(jù)包作為當(dāng)前回 應(yīng)檢測單元的第 一個(gè)數(shù)據(jù)包進(jìn)行檢測;
步驟413,深度檢測設(shè)備對數(shù)據(jù)包進(jìn)行單包檢測;對于不是會(huì)話的數(shù)據(jù)包, 由于前后數(shù)據(jù)包沒有聯(lián)系,且對于這些數(shù)據(jù)包沒有相應(yīng)的記錄,因此只能在 某一范圍內(nèi)逐個(gè)包進(jìn)行檢查;
步驟414,深度檢測設(shè)備將該數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單元的后續(xù) 數(shù)據(jù);
步驟415,深度檢測引擎對數(shù)據(jù)包進(jìn)行深度檢測,輸出深度檢測的匹配結(jié)果。
通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā) 明可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺(tái)的方式來實(shí)現(xiàn)。 基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟 件產(chǎn)品可以存儲(chǔ)在一個(gè)非易失性存儲(chǔ)介質(zhì)(可以是CD-ROM, U盤,移動(dòng)硬 盤等)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的
模塊或流程并不一定是實(shí)施本發(fā)明所必須的。
本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述
進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一
個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆
分成多個(gè)子模塊。
上述本發(fā)明序號僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此, 任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
1、一種基于應(yīng)用層的數(shù)據(jù)分割方法,應(yīng)用于深度檢測設(shè)備中,其特征在于,所述方法包括以下步驟所述深度檢測設(shè)備檢測來自用戶的數(shù)據(jù)流是否為具有會(huì)話的數(shù)據(jù)流,當(dāng)為具有會(huì)話的數(shù)據(jù)流時(shí),獲取所述數(shù)據(jù)流對應(yīng)的切分特征;所述深度檢測設(shè)備根據(jù)所述獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切分,獲得深度檢測單元;所述深度檢測設(shè)備對所述深度檢測單元進(jìn)行深度檢測。
2、 如權(quán)利要求1所述的方法,其特征在于,所述深度檢測設(shè)備根據(jù)所述 獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切分,之前還包括判斷所述數(shù)據(jù)流是否為TCP數(shù)據(jù)流,如果是,根據(jù)數(shù)據(jù)流中TCP數(shù)據(jù)包 的TCP序列號,對所述TCP數(shù)據(jù)包進(jìn)行保序。
3、 如權(quán)利要求2所述的方法,其特征在于,所述獲取數(shù)據(jù)流對應(yīng)的切分 特征,具體包括在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征查找,當(dāng)所述會(huì)話命中切分對象且有 激活切分特征,將最高優(yōu)先級切分特征所屬切分對象作為當(dāng)前會(huì)話切分對象;如果所述會(huì)話命中切分對象但沒有命中激活切分特征,提取其中優(yōu)先級 最高切分特征;如果未命中切分特征、或所述會(huì)話上無切分對象且無激活切分特征命中、 或切分特征不屬于會(huì)話切分對象,將所述數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前檢測單 元的后續(xù)數(shù)據(jù)。
4、 如權(quán)利要求l所述的方法,其特征在于,所述深度檢測設(shè)備根據(jù)所述 獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切分,獲得深度檢測單元,具體包括如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中開始切分特征,結(jié)束當(dāng)前請求檢測單元, 所述數(shù)據(jù)包作為一個(gè)新請求檢測單元開始進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù) 據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元同方向,將所述數(shù)據(jù)包作為當(dāng) 前請求檢測單元的最后一個(gè)數(shù)據(jù)包進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù)據(jù)包命 中結(jié)束切分特征且與當(dāng)前請求^r測單元反向,結(jié)束當(dāng)前請求檢測單元,將所述數(shù)據(jù)包作為當(dāng)前回應(yīng)檢測單元的第 一個(gè)數(shù)據(jù)包進(jìn)行檢測。
5、 如權(quán)利要求1所述的方法,其特征在于,所述切分特征包括協(xié)議類型、 方向和正則表達(dá)式。
6、 如權(quán)利要求1所述的方法,其特征在于,所述切分特征包括協(xié)議類型、 方向和報(bào)文的長度特征,所述報(bào)文的長度特征是回應(yīng)方向的負(fù)載不為0,或者 是具體的報(bào)文負(fù)載長度范圍。
7、 如權(quán)利要求1至6中任一項(xiàng)所述的方法,其特征在于,所述切分特征 還包括優(yōu)先級。
8、 一種基于應(yīng)用層的數(shù)據(jù)分割裝置,其特征在于,包括 會(huì)話管理模塊,用于檢測來自用戶的數(shù)據(jù)流,將具有會(huì)話的數(shù)據(jù)流發(fā)送到切分匹配模塊;切分匹配模塊,與所述會(huì)話管理模塊連接,用于接收來自所述會(huì)話管理 模塊的數(shù)據(jù)流,獲取所述數(shù)據(jù)流對應(yīng)的切分特征;檢測單元控制模塊,分別與所述會(huì)話管理模塊和所述切分匹配模塊連接, 用于根據(jù)所述切分匹配模塊獲得的切分特征對來自所述會(huì)話管理模塊的數(shù)據(jù) 流進(jìn)行切分,獲得深度4企測單元;深度檢測模塊,與所述檢測單元控制模塊連接,用于對所述深度檢測單 元進(jìn)行深度檢測。
9、 如權(quán)利要求8所述的裝置,其特征在于, 所述會(huì)話管理模塊,還用于判斷所述數(shù)據(jù)流是否為TCP數(shù)據(jù)流; 所述裝置還包括TCP保序模塊,分別與所述會(huì)話管理模塊和切分匹配模塊連接,用于接收來自所述會(huì)話管理模塊的TCP數(shù)據(jù)流,根據(jù)數(shù)據(jù)流中TCP 數(shù)據(jù)包的TCP序列號,對TCP數(shù)據(jù)包進(jìn)行保序,將TCP數(shù)據(jù)包有序地發(fā)送 給所述切分匹配模塊。
10、 如權(quán)利要求8所述的裝置,其特征在于,所述切分匹配模塊,具體 用于在所述會(huì)話數(shù)據(jù)流中進(jìn)行切分特征查找,當(dāng)該會(huì)話命中切分對象且有激 活切分特征,將最高優(yōu)先級切分特征所屬切分對象作為當(dāng)前會(huì)話切分對象;如果該會(huì)話命中切分對象但沒有命中激活切分特征,提取其中優(yōu)先級最高切分特征;如果未命中切分特征、或該會(huì)話上無切分對象且無激活切分特征命 中、或切分特征不屬于會(huì)話切分對象,將該數(shù)據(jù)包作為對應(yīng)方向上當(dāng)前^r測 單元的后續(xù)數(shù)據(jù)。
11、如權(quán)利要求8所述的裝置,其特征在于,所述檢測單元控制模塊, 具體用于如果所述會(huì)話中某個(gè)數(shù)據(jù)包命中開始切分特征,結(jié)束當(dāng)前請求檢測 單元,所述數(shù)據(jù)包作為一個(gè)新請求檢測單元開始進(jìn)行檢測;如果所述會(huì)話中 某個(gè)數(shù)據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元同方向,將所述數(shù)據(jù)包 作為當(dāng)前請求檢測單元的最后一個(gè)數(shù)據(jù)包進(jìn)行檢測;如果所述會(huì)話中某個(gè)數(shù) 據(jù)包命中結(jié)束切分特征且與當(dāng)前請求檢測單元反向,結(jié)束當(dāng)前請求檢測單元, 將所述數(shù)據(jù)包作為當(dāng)前回應(yīng)檢測單元的第一個(gè)數(shù)據(jù)包進(jìn)行4全測。
全文摘要
本發(fā)明公開了一種基于應(yīng)用層的數(shù)據(jù)分割方法,應(yīng)用于深度檢測設(shè)備中,所述方法包括以下步驟所述深度檢測設(shè)備檢測來自用戶的數(shù)據(jù)流是否為具有會(huì)話的數(shù)據(jù)流,當(dāng)為具有會(huì)話的數(shù)據(jù)流時(shí),獲取所述數(shù)據(jù)流對應(yīng)的切分特征;所述深度檢測設(shè)備根據(jù)所述獲得的切分特征對所述數(shù)據(jù)流進(jìn)行切分,獲得深度檢測單元;所述深度檢測設(shè)備對所述深度檢測單元進(jìn)行深度檢測。本發(fā)明中,能夠十分高效的解決應(yīng)用層設(shè)備深度檢測數(shù)據(jù)切分問題,可以使深度檢測單元和大部分協(xié)議的解析過程吻合,避免對這些協(xié)議的數(shù)據(jù)包進(jìn)行解析,可以用于指導(dǎo)基于深度檢測引擎的重組和基于流檢測引擎檢測流的創(chuàng)建和銷毀,從而大大提高檢測的精度和效率。
文檔編號H04L29/08GK101557329SQ20091014361
公開日2009年10月14日 申請日期2009年5月27日 優(yōu)先權(quán)日2009年5月27日
發(fā)明者捷 閔 申請人:杭州迪普科技有限公司