本發(fā)明涉及到互聯(lián)網(wǎng)技術(shù)領(lǐng)域,特別涉及到一種DNS隧道檢測的方法和裝置。
背景技術(shù):隨著互聯(lián)網(wǎng)的迅猛發(fā)展,防火墻作為保護(hù)信息的一道屏障,已成為通信技術(shù)研究的一個重要領(lǐng)域。如今網(wǎng)絡(luò)上存在一些防火墻穿透技術(shù),能讓數(shù)據(jù)包安全通過網(wǎng)絡(luò)層,DNS隧道技術(shù)就是防火墻穿透技術(shù)中的一種。目前防御DNS隧道技術(shù)的方法主要有以下兩種:一、基于端口封鎖防卸:這是傳統(tǒng)防火墻防御攻擊最常用的方法,防火墻通過封鎖53端口,進(jìn)而阻止DNS隧道數(shù)據(jù),達(dá)到防御DNS隧道穿透的目的,但是,這樣,在阻斷DNS隧道數(shù)據(jù)的同時,也將正常的DNS數(shù)據(jù)進(jìn)行了阻斷,而影響到了正常的業(yè)務(wù);二、基于請求域名長度及請求頻率統(tǒng)計分析方法:采用這種方法,是將客戶端請求的DNS域名中長度大于長度閾值的以<客戶端IP,純域名>形式記錄下來,然后統(tǒng)計<客戶端IP,純域名>的頻率,當(dāng)頻率大于頻率告警閾值時則判定此客戶端使用了DNS隧道技術(shù),但是,很難準(zhǔn)確的區(qū)分DNS隧道數(shù)據(jù)和正常的DNS請求數(shù)據(jù),因為在正常的DNS請求中也可能存長度很長的域名,通過域名長度閾值和頻率告警閾值的取值上很難把握,存在很大的不可控性,高閾值存在高漏判低誤判,低閾值存在低漏判高誤判。
技術(shù)實現(xiàn)要素:本發(fā)明的主要目的為提供一種DNS隧道檢測的方法和裝置,能夠?qū)NS隧道進(jìn)行全面檢測,從而對防火墻進(jìn)行有效地防護(hù)。本發(fā)明提供一種DNS隧道檢測的方法,包括步驟:檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包;當(dāng)所述客戶端數(shù)據(jù)包為DNS數(shù)據(jù)包時,檢測所述客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,若是,則檢測所述客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;當(dāng)客戶端數(shù)據(jù)包的格式不符合所述格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合所述域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對所述客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。優(yōu)選地,所述預(yù)置的DNS隧道處理規(guī)則至少包括以下之一:丟棄所述客戶端數(shù)據(jù)包、提示告警信息。優(yōu)選地,所述檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件至少包括:檢測所述客戶端數(shù)據(jù)包的請求包中是否包括回答字段和/或授權(quán)字段;和/或檢測所述客戶端數(shù)據(jù)包的響應(yīng)包中的查詢域名與回答域名是否一致;和/或檢測所述客戶端數(shù)據(jù)包的請求包中查詢域名的類型字段值是否符合所述格式約束條件。優(yōu)選地,所述檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件至少包括:通過正則表達(dá)式區(qū)配所述客戶端數(shù)據(jù)包的查詢域名的內(nèi)容;和/或檢測所述客戶端數(shù)據(jù)包的查詢域名中是否包括DNS域名特殊字符。優(yōu)選地,在執(zhí)行所述檢測發(fā)往DNS服務(wù)器的端口的數(shù)據(jù)包是否是DNS數(shù)據(jù)包的步驟之前,還包括:獲取發(fā)送所述客戶端數(shù)據(jù)包的客戶端的IP地址,在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址;如存在,則執(zhí)行所述根據(jù)預(yù)置的DNS隧道處理規(guī)則,對所述客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理的步驟。本發(fā)明還提供一種DNS隧道檢測的裝置,包括:第一檢測模塊,用于檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,第二檢測模塊,用于當(dāng)所述客戶端數(shù)據(jù)包為DNS數(shù)據(jù)包時,檢測所述客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件;第三檢測模塊,用于當(dāng)所述客戶端數(shù)據(jù)包的格式符合預(yù)置的格式約束條件時,檢測所述客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;處理模塊,用于當(dāng)客戶端數(shù)據(jù)包的格式不符合所述格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合所述域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對所述客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。優(yōu)選地,所述預(yù)置的DNS隧道處理規(guī)則至少包括以下之一:丟棄所述客戶端數(shù)據(jù)包、提示告警信息。優(yōu)選地,所述第二檢測模塊具體用于:檢測所述客戶端數(shù)據(jù)包的請求包中是否包括回答字段和/或授權(quán)字段;和/或檢測所述客戶端數(shù)據(jù)包的響應(yīng)包中的查詢域名與回答域名是否一致;和/或檢測所述客戶端數(shù)據(jù)包的請求包中查詢域名的類型字段值是否符合所述格式約束條件。優(yōu)選地,所述第三檢測模塊具體用于:通過正則表達(dá)式區(qū)配所述客戶端數(shù)據(jù)包的查詢域名的內(nèi)容;和/或檢測所述客戶端數(shù)據(jù)包的查詢域名中是否包括DNS域名特殊字符。優(yōu)選地,DNS隧道檢測的裝置還包括:獲取及查找模塊,用于獲取發(fā)送所述客戶端數(shù)據(jù)包的客戶端的IP地址,在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址,如存在,則通過所述處理模塊對所述客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。本發(fā)明通過檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,如是,進(jìn)一步檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,當(dāng)符合時,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,能夠區(qū)分正常的DNS數(shù)據(jù)包與DNS隧道數(shù)據(jù)包,有效解決對正常的DNS的誤判問題,實現(xiàn)了對DNS隧道進(jìn)行全面的檢測,從而增強(qiáng)了防火墻的防護(hù)能力。附圖說明圖1為本發(fā)明DNS隧道檢測的方法第一實施例的流程示意圖;圖2為本發(fā)明DNS隧道檢測的方法第二實施例的流程示意圖;圖3為本發(fā)明DNS隧道檢測的裝置第一實施例的結(jié)構(gòu)示意圖;圖4為本發(fā)明DNS隧道檢測的裝置第二實施例的結(jié)構(gòu)示意圖。本發(fā)明目的的實現(xiàn)、功能特點及優(yōu)點將結(jié)合實施例,參照附圖做進(jìn)一步說明。具體實施方式應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明提供一種DNS隧道檢測的方法。參照圖1,圖1為本發(fā)明DNS隧道檢測的方法第一實施例的流程示意圖。本實施例所提供的DNS隧道檢測的方法,包括:步驟S10,檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,若是,則執(zhí)行步驟S20;步驟S20,檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,若是,則執(zhí)行步驟S21;步驟S21,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件時,執(zhí)行步驟S30;步驟S30,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。本實施例中,以DNS服務(wù)器的53端口接收到客戶端發(fā)送的客戶端數(shù)據(jù)包為例進(jìn)行說明。當(dāng)DNS服務(wù)器的53端口接收到客戶端數(shù)據(jù)包后,首先檢測該客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,如客戶端數(shù)據(jù)包不是DNS數(shù)據(jù)包,則表明客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),然后根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,本實施例中所提出的預(yù)置的DNS隧道處理規(guī)則為在檢測出客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包之后,對其進(jìn)行處理的相應(yīng)規(guī)則,該DNS隧道處理規(guī)則至少包括丟棄所述客戶端數(shù)據(jù)包、提示告警信息等對DNS隧道數(shù)據(jù)包的處理方式。如客戶端數(shù)據(jù)包是DNS數(shù)據(jù)包,則檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,本實施例所提出的預(yù)置的格式約束條件可以為用于定義互聯(lián)網(wǎng)協(xié)議中關(guān)于域名的RFC文檔中所定義的格式約束條件,如RFC1034和RFC1035;也可以為用戶自定義的格式約束條件。如客戶端數(shù)據(jù)包的格式符合預(yù)置的格式約束條件,則進(jìn)一步檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件,本實施例所提出的預(yù)置的域名約束條件可以為用于定義互聯(lián)網(wǎng)協(xié)議中關(guān)于域名的RFC文檔中所定義的域名約束條件,如RFC1034和RFC1035;也可以為用戶自定義的域名約束條件。當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件,則表明客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),此時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。在本實施例中,檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件至少包括以下幾種:檢測客戶端數(shù)據(jù)包的請求包中是否包括回答字段和/或授權(quán)字段,如包括,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件;和/或檢測客戶端數(shù)據(jù)包的響應(yīng)包中的查詢域名與回答域名是否一致,如不一致,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件;和/或檢測客戶端數(shù)據(jù)包的請求包中查詢域名的類型字段值是否符合格式約束條件。本實施例在RFC1035文檔中,定義了類型字段值只能包含主機(jī)地址、權(quán)威名稱服務(wù)器、郵件目的地、郵件轉(zhuǎn)發(fā)器、別名的正則名稱、標(biāo)記權(quán)威區(qū)域的開始、郵箱域名、郵件組成員、郵件重新命名域名、空RR、眾所周知的業(yè)務(wù)描述、域名指針、主機(jī)信息、郵箱或郵件列表信息、郵件交換和文本字符串;如客戶端數(shù)據(jù)包的請求包中所包含的類型字段值的數(shù)值不符合格式約束條件,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件。在本實施例中,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件至少包括以下幾種:通過正則表達(dá)式區(qū)配客戶端數(shù)據(jù)包的查詢域名的內(nèi)容;當(dāng)查詢域名的內(nèi)容不符合正則表達(dá)式的過濾邏輯時,則表明客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件;和/或檢測客戶端數(shù)據(jù)包的查詢域名中是否包括DNS域名特殊字符,如包括,則表明客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件。本實施例中,在RFC1034文檔中,定義了查詢域名只能包含數(shù)字、大小寫字母和“-”以及域名分隔符“.”,除此之外的字符則為DNS域名特殊字符。由于DNS隧道攜帶的數(shù)據(jù)中通常會包含DNS域名特殊字符,即使經(jīng)過Punycode轉(zhuǎn)碼后,一些特殊字符(例如:“:”、“\”)仍然保持DNS域名特殊字符特性。對于使用地方語言的域名,瀏覽器都會對其進(jìn)行Punycode轉(zhuǎn)碼(轉(zhuǎn)碼后只由26個字母、數(shù)字或者“-”組成)后再發(fā)送給DNS服務(wù)器,因此,此處檢測不會對使用地方語言的域名造成誤判。本實施例通過檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,如是,進(jìn)一步檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,當(dāng)符合時,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,能夠區(qū)分正常的DNS數(shù)據(jù)包與DNS隧道數(shù)據(jù)包,有效解決對正常的DNS的誤判問題,實現(xiàn)了對DNS隧道進(jìn)行全面的檢測,從而增強(qiáng)了防火墻的防護(hù)能力。參照圖2,圖2為本發(fā)明DNS隧道檢測的方法第二實施例的流程示意圖。在本發(fā)明DNS隧道檢測的方法第一實施例的基礎(chǔ)上,在執(zhí)行步驟S10之前,該方法還包括:步驟S40,獲取發(fā)送客戶端數(shù)據(jù)包的客戶端的IP地址;步驟S41,在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址;如不存在,則執(zhí)行步驟S20;如存在,則執(zhí)行步驟S30。當(dāng)客戶端向DNS服務(wù)器的53端口發(fā)送客戶端數(shù)據(jù)包后,獲取該客戶端的IP地址,然后在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址,本實施例所提出的預(yù)置的DNS隧道黑名單中記錄了在一定時間內(nèi)使用過DNS隧道技術(shù)的客戶端的IP地址,如在DNS隧道黑名單庫中查找到與發(fā)送客戶端數(shù)據(jù)包的客戶端的IP地址,則直接跳過其他檢測,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。本實施例中,如在對客戶端數(shù)據(jù)包進(jìn)行了其是否為DNS數(shù)據(jù)包、客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,以及客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件的檢測之后,判斷出客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),則獲取該客戶端的IP地址,并將IP地址記錄在DNS隧道黑名單庫中,以便在下次檢測時使用。在接收到客戶端發(fā)送的客戶端數(shù)據(jù)包后,獲取客戶端的IP地址,并在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址;如存在,則根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,進(jìn)一步保證了對DNS隧道的全面檢測,從而進(jìn)一步增強(qiáng)了防火墻的防護(hù)能力。本發(fā)明還提供一種DNS隧道檢測的裝置。參照圖3,圖3為本發(fā)明DNS隧道檢測的裝置第一實施例的結(jié)構(gòu)示意圖。本實施例所提供的DNS隧道檢測的裝置,包括:第一檢測模塊10,用于檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,第二檢測模塊20,用于當(dāng)客戶端數(shù)據(jù)包為DNS數(shù)據(jù)包時,檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件;第三檢測模塊30,用于當(dāng)客戶端數(shù)據(jù)包的格式符合預(yù)置的格式約束條件時,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;處理模塊40,用于當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。本實施例中,以DNS服務(wù)器的53端口接收到客戶端發(fā)送的客戶端數(shù)據(jù)包為例進(jìn)行說明。當(dāng)DNS服務(wù)器的53端口接收到客戶端數(shù)據(jù)包后,第一檢測模塊10首先檢測該客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,如客戶端數(shù)據(jù)包不是DNS數(shù)據(jù)包,則表明客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),然后根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,本實施例中所提出的預(yù)置的DNS隧道處理規(guī)則為在檢測出客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包之后,對其進(jìn)行處理的相應(yīng)規(guī)則,該DNS隧道處理規(guī)則至少包括丟棄所述客戶端數(shù)據(jù)包、提示告警信息等對DNS隧道數(shù)據(jù)包的處理方式。如客戶端數(shù)據(jù)包是DNS數(shù)據(jù)包,則通過第二檢測模塊20檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,本實施例所提出的預(yù)置的格式約束條件可以為用于定義互聯(lián)網(wǎng)協(xié)議中關(guān)于域名的RFC文檔中所定義的格式約束條件,如RFC1034和RFC1035;也可以為用戶自定義的格式約束條件。如客戶端數(shù)據(jù)包的格式符合預(yù)置的格式約束條件,則第三檢測模塊30進(jìn)一步檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件,本實施例所提出的預(yù)置的域名約束條件可以為用于定義互聯(lián)網(wǎng)協(xié)議中關(guān)于域名的RFC文檔中所定義的域名約束條件,如RFC1034和RFC1035;也可以為用戶自定義的域名約束條件。當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件,則表明客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),此時,處理模塊40根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。在本實施例中,通過第二檢測模塊20檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件至少包括以下幾種:檢測客戶端數(shù)據(jù)包的請求包中是否包括回答字段和/或授權(quán)字段,如包括,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件;和/或檢測客戶端數(shù)據(jù)包的響應(yīng)包中的查詢域名與回答域名是否一致,如不一致,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件;和/或檢測客戶端數(shù)據(jù)包的請求包中查詢域名的類型字段值是否符合格式約束條件。本實施例在RFC1035文檔中,定義了類型字段值只能包含主機(jī)地址、權(quán)威名稱服務(wù)器、郵件目的地、郵件轉(zhuǎn)發(fā)器、別名的正則名稱、標(biāo)記權(quán)威區(qū)域的開始、郵箱域名、郵件組成員、郵件重新命名域名、空RR、眾所周知的業(yè)務(wù)描述、域名指針、主機(jī)信息、郵箱或郵件列表信息、郵件交換和文本字符串;如客戶端數(shù)據(jù)包的請求包中所包含的類型字段值的數(shù)值不符合格式約束條件,則表明客戶端數(shù)據(jù)包的格式不符合格式約束條件。在本實施例中,通過第三檢測模塊30檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件至少包括以下幾種:通過正則表達(dá)式區(qū)配客戶端數(shù)據(jù)包的查詢域名的內(nèi)容;當(dāng)查詢域名的內(nèi)容不符合正則表達(dá)式的過濾邏輯時,則表明客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件;和/或檢測客戶端數(shù)據(jù)包的查詢域名中是否包括DNS域名特殊字符,如包括,則表明客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件。本實施例中,在RFC1034文檔中,定義了查詢域名只能包含數(shù)字、大小寫字母和“-”以及域名分隔符“.”,除此之外的字符則為DNS域名特殊字符。由于DNS隧道攜帶的數(shù)據(jù)中通常會包含DNS域名特殊字符,即使經(jīng)過Punycode轉(zhuǎn)碼后,一些特殊字符(例如:“:”、“\”)仍然保持DNS域名特殊字符特性。對于使用地方語言的域名,瀏覽器都會對其進(jìn)行Punycode轉(zhuǎn)碼(轉(zhuǎn)碼后只由26個字母、數(shù)字或者“-”組成)后再發(fā)送給DNS服務(wù)器,因此,此處檢測不會對使用地方語言的域名造成誤判。本實施例通過檢測發(fā)往DNS服務(wù)器的端口的客戶端數(shù)據(jù)包是否為DNS數(shù)據(jù)包,如是,進(jìn)一步檢測客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,當(dāng)符合時,檢測客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件;當(dāng)客戶端數(shù)據(jù)包的格式不符合格式約束條件,和/或當(dāng)客戶端數(shù)據(jù)包的查詢域名不符合域名約束條件時,根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,能夠區(qū)分正常的DNS數(shù)據(jù)包與DNS隧道數(shù)據(jù)包,有效解決對正常的DNS的誤判問題,實現(xiàn)了對DNS隧道進(jìn)行全面的檢測,從而增強(qiáng)了防火墻的防護(hù)能力。參照圖4,圖4為本發(fā)明DNS隧道檢測的裝置第二實施例的結(jié)構(gòu)示意圖。在本發(fā)明DNS隧道檢測的裝置第一實施例的基礎(chǔ)上,該裝置還包括:獲取及查找模塊50,用于獲取發(fā)送客戶端數(shù)據(jù)包的客戶端的IP地址,在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址;如存在,則通過處理模塊40對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。當(dāng)客戶端向DNS服務(wù)器的53端口發(fā)送客戶端數(shù)據(jù)包后,獲取及查找模塊50獲取該客戶端的IP地址,然后在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址,本實施例所提出的預(yù)置的DNS隧道黑名單中記錄了在一定時間內(nèi)使用過DNS隧道技術(shù)的客戶端的IP地址,如在DNS隧道黑名單庫中查找到與發(fā)送客戶端數(shù)據(jù)包的客戶端的IP地址,則直接跳過其他檢測,通過第二處理模塊51根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理。本實施例中,如在對客戶端數(shù)據(jù)包進(jìn)行了其是否為DNS數(shù)據(jù)包、客戶端數(shù)據(jù)包的格式是否符合預(yù)置的格式約束條件,以及客戶端數(shù)據(jù)包的查詢域名是否符合預(yù)置的域名約束條件的檢測之后,判斷出客戶端數(shù)據(jù)包為DNS隧道數(shù)據(jù)包,該客戶端使用了DNS隧道技術(shù),則獲取該客戶端的IP地址,并將IP地址記錄在DNS隧道黑名單庫中,以便在下次檢測時使用。在接收到客戶端發(fā)送的客戶端數(shù)據(jù)包后,獲取客戶端的IP地址,并在預(yù)置的DNS隧道黑名單庫中查找是否存在相同的IP地址;如存在,則根據(jù)預(yù)置的DNS隧道處理規(guī)則,對客戶端數(shù)據(jù)包進(jìn)行相應(yīng)的處理,進(jìn)一步保證了對DNS隧道的全面檢測,從而進(jìn)一步實現(xiàn)了對防火墻進(jìn)行有效地防護(hù)。以上所述僅為本發(fā)明的優(yōu)選實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護(hù)范圍。