基于會(huì)話及http協(xié)議標(biāo)準(zhǔn)檢測http隧道數(shù)據(jù)的方法
【專利摘要】本發(fā)明屬計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,是一種區(qū)分標(biāo)準(zhǔn)HTTP協(xié)議數(shù)據(jù)和HTTP隧道數(shù)據(jù)的方法。系統(tǒng)捕獲HTTP端口的數(shù)據(jù)包,并根據(jù)IP地址和端口建立會(huì)話連接表。當(dāng)數(shù)據(jù)包到達(dá)檢測系統(tǒng)時(shí):1、系統(tǒng)檢查維護(hù)會(huì)話連接表,如果沒有記錄,則增加記錄。如果是RST或FIN數(shù)據(jù)包則從會(huì)話連接表中刪除記錄。2、系統(tǒng)檢查數(shù)據(jù)包內(nèi)容并判斷會(huì)話連接是否符合標(biāo)準(zhǔn)HTTP協(xié)議(例如:客戶端命令GET、POST等,服務(wù)端響應(yīng)HTTP/1.0、HTTP/1.1等)。如果符合則標(biāo)記該會(huì)話為HTTP協(xié)議數(shù)據(jù),否則標(biāo)記為HTTP隧道數(shù)據(jù)。使用本發(fā)明可以識別HTTP隧道數(shù)據(jù)并對其實(shí)行差別服務(wù),或阻止非HTTP協(xié)議數(shù)據(jù)穿透HTTP端口。
【專利說明】基于會(huì)話及HTTP協(xié)議標(biāo)準(zhǔn)檢測HTTP隧道數(shù)據(jù)的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,是一種區(qū)分標(biāo)準(zhǔn)HTTP協(xié)議數(shù)據(jù)和HTTP隧道數(shù)據(jù)的方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,如何控制內(nèi)網(wǎng)用戶訪問互聯(lián)網(wǎng)已經(jīng)成了網(wǎng)絡(luò)管理的重點(diǎn)。傳統(tǒng)的網(wǎng)絡(luò)管理以端口來區(qū)分各種網(wǎng)絡(luò)服務(wù),通過開放或關(guān)閉某些端口來實(shí)現(xiàn)外網(wǎng)訪問的控制。WEB瀏覽作為最基本的互聯(lián)網(wǎng)服務(wù)通常需要開放給用戶使用,它所使用的是HTTP協(xié)議,默認(rèn)端口為TCP80。鑒于HTTP端口一般是開放的,各類軟件紛紛使用了 HTTP隧道技術(shù)與外部建立連接。HTTP協(xié)議數(shù)據(jù)和HTTP隧道數(shù)據(jù)都使用相同的端口,因此不能簡單的通過關(guān)閉端口來控制HTTP隧道數(shù)據(jù),否則用戶將無法瀏覽網(wǎng)頁。傳統(tǒng)的端口控制方法已經(jīng)無法應(yīng)對HTTP隧道穿透技術(shù),未經(jīng)授權(quán)的外網(wǎng)訪問嚴(yán)重威脅著內(nèi)部網(wǎng)絡(luò)的安全。
【發(fā)明內(nèi)容】
[0003]本發(fā)明的目的在于提出一種區(qū)分標(biāo)準(zhǔn)HTTP協(xié)議數(shù)據(jù)和HTTP隧道數(shù)據(jù)的方法,使用本發(fā)明可以識別HTTP隧道數(shù)據(jù)并對其實(shí)行差別服務(wù),或阻止非HTTP協(xié)議數(shù)據(jù)穿透HTTP端口。
[0004]為了方便敘述,首先將本發(fā)明涉及的常用術(shù)語和標(biāo)記介紹如下:
[0005]1.SrcIP, SrcPort, DstIP, DstPort:分別表示源 IP、源端口、目標(biāo) IP、目標(biāo)端口。
[0006]2.會(huì)話(Sess1n):客戶端與服務(wù)器一次連接過程中的所有信息數(shù)據(jù)。
[0007]3.會(huì)話連接表(Sess1n Table):用于保存多個(gè)會(huì)話的數(shù)據(jù)表,通??刹捎霉1怼?br>
[0008]HTTP隧道數(shù)據(jù)檢測原理:
[0009]標(biāo)準(zhǔn)的HTTP 協(xié)議遵從 RFC2616 (Hypertext Transfer Protocol—HTTP/1.1)和RFC1945 (Hypertext Transfer Protocol—HTTP/1.0)標(biāo)準(zhǔn)。
[0010]根據(jù)RFC文檔的描述:
[0011]1、當(dāng)HTTP客戶端向HTTP服務(wù)端發(fā)起請求時(shí),將發(fā)送請求命令:如“GET”、“HEAD”、“POST ”、“PUT ”、“DELETE ”、“ CONNECT ”等。其中“GET ”、“HEAD ”、“POST ”為最常見的 HTTP 命令,其他HTTP命令則較少使用或用于連接代理服務(wù)器。HTTP協(xié)議標(biāo)準(zhǔn)規(guī)定,請求命令應(yīng)當(dāng)位于客戶端發(fā)給服務(wù)端的數(shù)據(jù)首行起始部分。
[0012]例如:
[0013]GET/index.html HTTP/1.1
[0014]Host:www.example, com
[0015]Connect1n:keep-alive
[0016]Accept:text/html
[0017]......
[0018]2、當(dāng)HTTP服務(wù)端收到HTTP客戶端的請求命令后,將返回響應(yīng)信息:如“HTTP/1.12000K”、“HTTP/1.0404 Not Found”等。HTTP協(xié)議標(biāo)準(zhǔn)規(guī)定,響應(yīng)信息應(yīng)當(dāng)位于服務(wù)端發(fā)給客戶端的數(shù)據(jù)首行起始部分。
[0019]例如:
[0020]HTTP/1.1 2000K
[0021]Server:Apache
[0022]Content-Type:text/html ;charset = utf-8
[0023]Connect1n:keep-alive
[0024]......
[0025]HTTP隧道數(shù)據(jù)則采用私有協(xié)議,其不遵從HTTP協(xié)議標(biāo)準(zhǔn)??蛻舳税l(fā)給服務(wù)端的數(shù)據(jù)起始部分不是“GET”、“HEAD”、“P0ST”等請求命令;服務(wù)端返回給客戶端的數(shù)據(jù)起始部分也不是 “HTTP/1.1 2000Κ”、“ΗΤΤΡ/1.0404 Not Found” 等狀態(tài)響應(yīng)信息。
[0026]根據(jù)這些差別,我們可以通過檢查一條會(huì)話連接客戶端最開始的請求命令和服務(wù)端最開始的響應(yīng)信息,來判斷該會(huì)話是HTTP協(xié)議會(huì)話還是HTTP隧道會(huì)話。
【專利附圖】
【附圖說明】
[0027]圖1為本發(fā)明系統(tǒng)網(wǎng)絡(luò)部署方式圖
[0028]圖2為本發(fā)明系統(tǒng)會(huì)話連接表維護(hù)處理流程圖
[0029]圖3為本發(fā)明系統(tǒng)對客戶端數(shù)據(jù)包檢測流程圖
[0030]圖4為本發(fā)明系統(tǒng)對服務(wù)端數(shù)據(jù)包檢測流程圖
【具體實(shí)施方式】
[0031]下面結(jié)合附圖對本發(fā)明做進(jìn)一步的詳細(xì)介紹。
[0032]系統(tǒng)網(wǎng)絡(luò)部署方式:
[0033]參見圖1,本發(fā)明系統(tǒng)通常部署在局域網(wǎng)連接互聯(lián)網(wǎng)的出口網(wǎng)關(guān)處,從網(wǎng)絡(luò)中捕獲指定端口的數(shù)據(jù)包。該端口一般為TCP80,必要時(shí)也可以指定或者增加其他端口。
[0034]會(huì)話連接表的維護(hù):
[0035]參見圖2,系統(tǒng)從網(wǎng)絡(luò)中捕獲到指定端口數(shù)據(jù)包,從數(shù)據(jù)包中提取SrcIP、DstIP、SrcPort> DstPort等信息,與會(huì)話連接表中已有的項(xiàng)目進(jìn)行對比。如果會(huì)話連接表中不存在該會(huì)話記錄,則新增本次會(huì)話信息到會(huì)話連接表中。如果已經(jīng)存在該會(huì)話連接記錄,則更新會(huì)話最后活動(dòng)時(shí)間。當(dāng)收到會(huì)話結(jié)束數(shù)據(jù)包(TCPRST、TCP FIN)或者會(huì)話超時(shí)則從會(huì)話連接表中刪除本次會(huì)話信息。
[0036]會(huì)話協(xié)議檢測方法:
[0037]檢測的標(biāo)準(zhǔn)在于判斷會(huì)話數(shù)據(jù)是否符合HTTP協(xié)議,只要符合即可判斷該會(huì)話為HTTP協(xié)議會(huì)話,否則為HTTP隧道會(huì)話。這里選擇以一種高效的檢測方式為例:通過檢測會(huì)話數(shù)據(jù)前4個(gè)字節(jié),來判斷是否為HTTP協(xié)議。但并不意味著本發(fā)明只能以此作為唯一檢測方法。
[0038]1、客戶端數(shù)據(jù)檢測
[0039]參見圖3,系統(tǒng)捕獲到客戶端發(fā)給服務(wù)端的會(huì)話數(shù)據(jù),首先進(jìn)行組包排序等操作。然后提取客戶端數(shù)據(jù)內(nèi)容的前4個(gè)字節(jié),并將這4個(gè)字節(jié)統(tǒng)一轉(zhuǎn)換為大寫字符。再與“GET”、“HEAD”、“POST”等請求命令進(jìn)行匹配。(“GET”命令只有3個(gè)字節(jié),但HTTP協(xié)議標(biāo)準(zhǔn)規(guī)定HTTP請求命令后緊跟著空格作為分隔符。因此以“GET”命令加一個(gè)空格字符來匹配。同理“CONNECT”命令則截取前4字節(jié),以“CONN”來匹配。)如果匹配成功則標(biāo)記該會(huì)話為HTTP協(xié)議會(huì)話,否則標(biāo)記為HTTP隧道會(huì)話。
[0040]2、服務(wù)端數(shù)據(jù)檢測
[0041]參見圖4,系統(tǒng)捕獲到服務(wù)端發(fā)給客戶端的會(huì)話數(shù)據(jù),首先進(jìn)行組包排序等操作。然后提取服務(wù)端數(shù)據(jù)內(nèi)容的前4個(gè)字節(jié),并將這4個(gè)字節(jié)統(tǒng)一轉(zhuǎn)換為大寫字符。再與“HTTP”等響應(yīng)信息進(jìn)行匹配。如果匹配成功則標(biāo)記該會(huì)話為HTTP協(xié)議會(huì)話,否則標(biāo)記為HTTP隧道會(huì)話。
[0042]在一次會(huì)話連接里,客戶端數(shù)據(jù)和服務(wù)端數(shù)據(jù)是雙向的。因此可選擇只檢測客戶端數(shù)據(jù),也可選擇只檢測服務(wù)端數(shù)據(jù),還可以選擇同時(shí)檢測客戶端數(shù)據(jù)和服務(wù)端數(shù)據(jù)。
[0043]以上實(shí)施例僅用于說明本發(fā)明而非限制。本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明修改變形或者等同替換,而不脫離本發(fā)明精神范圍的,其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求當(dāng)中。
【權(quán)利要求】
1.一種區(qū)分標(biāo)準(zhǔn)HTTP協(xié)議數(shù)據(jù)和HTTP隧道數(shù)據(jù)的方法。其至少包含以下步驟: (1):系統(tǒng)初始化會(huì)話連接表; (2):系統(tǒng)捕獲指定端口數(shù)據(jù)包; (3):分析數(shù)據(jù)包中的IP地址和端口信息,維護(hù)會(huì)話連接表中的會(huì)話狀態(tài); (4):分析會(huì)話的數(shù)據(jù)內(nèi)容,判斷會(huì)話是否符合HTTP協(xié)議標(biāo)準(zhǔn)。如果符合則標(biāo)記該會(huì)話為HTTP協(xié)議數(shù)據(jù),否則標(biāo)記為HTTP隧道數(shù)據(jù)。
2.根據(jù)權(quán)利要求1的方法,所述步驟(4)判斷會(huì)話是否符合HTTP協(xié)議標(biāo)準(zhǔn)。其特征在于:檢查客戶端發(fā)給服務(wù)端的請求命令是否符合HTTP協(xié)議標(biāo)準(zhǔn)。
3.根據(jù)權(quán)利要求1的方法,所述步驟(4)判斷會(huì)話是否符合HTTP協(xié)議標(biāo)準(zhǔn)。其特征在于:檢查服務(wù)端發(fā)給客戶端的響應(yīng)信息是否符合HTTP協(xié)議標(biāo)準(zhǔn)。
【文檔編號】H04L12/26GK104243228SQ201310248911
【公開日】2014年12月24日 申請日期:2013年6月7日 優(yōu)先權(quán)日:2013年6月7日
【發(fā)明者】金琥 申請人:金琥