Dns系統(tǒng)以及dns攻擊的防御方法和防御裝置制造方法
【專利摘要】本發(fā)明提供了一種DNS系統(tǒng)以及DNS攻擊的防御方法和防御裝置。其中該防御方法包括:獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源在的請求記錄信息;判斷請求記錄信息中預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;若是,判定請求源進(jìn)行DNS攻擊,并進(jìn)行防御。由于對每個(gè)請求源的IP地址進(jìn)行判斷,不會影響其他請求源的正常訪問,實(shí)現(xiàn)了精確的攻擊防御。
【專利說明】DNS系統(tǒng)以及DNS攻擊的防御方法和防御裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)安全【技術(shù)領(lǐng)域】,特別是涉及DNS系統(tǒng)以及DNS攻擊的防御方法和防御裝置。
【背景技術(shù)】
[0002]域名系統(tǒng)(Domain Name System,簡稱DNS)是因特網(wǎng)(Internet)的一項(xiàng)核心服務(wù),有著極其重要的地位,其作為可以將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使人更方便的訪問互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。
[0003]域名系統(tǒng)作為一個(gè)基礎(chǔ)性的互聯(lián)網(wǎng)協(xié)議,相對于目前防范措施比較完善的各種WEB服務(wù),基于DNS的防范依然很弱,易被黑客利用攻擊。DNS攻擊時(shí)一種新型的拒絕服務(wù)攻擊(Denial of Service,簡稱 Dos 攻擊)。
[0004]DNS自身的特性決定了它可以被利用作為“攻擊放大器”進(jìn)行分布式拒絕服務(wù)攻擊。一是DNS協(xié)議自身的弱點(diǎn)導(dǎo)致查詢請求報(bào)文和查詢應(yīng)答報(bào)文均可被偽造,網(wǎng)絡(luò)攻擊者可以通過虛假的源地址偽造成被攻擊主機(jī)向DNS服務(wù)器發(fā)送DNS查詢請求,同時(shí)還可以隱藏攻擊者的身份;二是DNS服務(wù)器對DNS查詢請求時(shí)“有求必應(yīng)”,并且無法判斷一個(gè)DNS查詢請求是否為惡意攻擊;三是DNS服務(wù)器解析域名時(shí),應(yīng)答報(bào)文比查詢報(bào)文要大,可以實(shí)現(xiàn)放大攻擊的效果。
[0005]例如,在早期針對DNS服務(wù)器的攻擊行為中,攻擊者能夠向DNS服務(wù)器發(fā)出60個(gè)字節(jié)的查詢信息,收到512個(gè)字節(jié)的回應(yīng)信息,使通訊量放大8.5倍。隨著對DNS協(xié)議的深入研究,攻擊者發(fā)現(xiàn)利用具有遞歸查詢功能的DNS服務(wù)器可以把DNS回應(yīng)數(shù)據(jù)放大到66倍。如果數(shù)以萬計(jì)的計(jì)算機(jī),偽裝成被攻擊主機(jī)同時(shí)向DNS服務(wù)器連續(xù)發(fā)送大量的DNS請求數(shù)據(jù)包,由DNS服務(wù)器返回的應(yīng)答數(shù)據(jù)量成倍放大,甚至能夠超過每秒鐘100GB,這對被攻擊主機(jī)來說是致命的攻擊行為。
[0006]DNS攻擊的一個(gè)明顯特征是偽造成被攻擊者的IP發(fā)送大量的請求數(shù)據(jù)包,迫使其回應(yīng),達(dá)到放大效果。
[0007]現(xiàn)有技術(shù)中針對DNS攻擊采取的方法是利用防火墻限制IP地址的請求量,例如控制某IP段內(nèi)通過的DNS請求包限制在300個(gè)以內(nèi)每秒,大于這個(gè)的請求認(rèn)為可能是攻擊,直接丟棄。采取這樣的限制措施,需要對IP地址段設(shè)置對應(yīng)的限制閾值。但是通常DNS服務(wù)器的服務(wù)的是全球的所有IP。特別是授權(quán)DNS服務(wù)器的服務(wù)對象是全球的本地遞歸服務(wù)器。這些本地遞歸服務(wù)器IP不可能預(yù)先知道。因此無法把全球所有的IP逐一進(jìn)行配置。
[0008]當(dāng)然也可以將IP段設(shè)置成較大的地址段進(jìn)行限制,也就是限制該段的請求總量,這樣會造成大量的誤攔,無法做到精確對DNS攻擊進(jìn)行防御。
[0009]現(xiàn)有技術(shù)中的另一種防御方法為:存在發(fā)生攻擊時(shí),查找攻擊源的IP地址,再將該IP地址的限速策略設(shè)置到防火墻配置,這種方式的實(shí)時(shí)性差,無法實(shí)現(xiàn)實(shí)時(shí)防御。
【發(fā)明內(nèi)容】
[0010]鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的DNS系統(tǒng)、DNS攻擊的防御裝置和相應(yīng)的DNS攻擊的防御方法。
[0011]本發(fā)明一個(gè)進(jìn)一步的目的是要使得精確對DNS攻擊進(jìn)行防御。
[0012]本發(fā)明另一個(gè)進(jìn)一步的目的是要提高防御DNS攻擊的實(shí)時(shí)性,不降低服務(wù)的性能和效率。
[0013]依據(jù)本發(fā)明的一個(gè)方面,提供了一種DNS攻擊的防御方法。該防御方法包括:獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源的請求記錄信息;判斷請求記錄信息中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;若是,判定請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
[0014]可選地,獲取DNS查詢請求包括:在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù);利用鉤子函數(shù)捕捉DNS查詢請求。
[0015]可選地,在獲取DNS查詢請求之后還包括:分別判斷DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及DNS查詢請求的目的端口是否為預(yù)定端口 ;若均為是,執(zhí)行查詢請求記錄信息的步驟。
[0016]可選地,按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源在預(yù)定周期內(nèi)的請求記錄信息包括:按照IP地址中前三段的數(shù)值,在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,其中第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針;按照IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息;按照IP地址的第四段的數(shù)值,在IP地址中前三段的數(shù)值對應(yīng)的第二索引表中查找IP地址對應(yīng)的請求記錄信息。
[0017]可選地,在第一索引表中,索引值為IP地址的前三段數(shù)值的哈希值,索引項(xiàng)為IP地址段對應(yīng)的第二索引表的存儲指針,在訪問記錄數(shù)據(jù)庫的第一索弓I表中查找對應(yīng)的存儲指針包括:計(jì)算IP地址中的前三段的數(shù)值的哈希值;將哈希值作為索引值在第一索引表中查找對應(yīng)的存儲指針。
[0018]可選地,按照IP地址中前三段的數(shù)值,在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針之后還包括:判斷存儲指針是否為空;若是,為IP地址所在的IP地址段分配存儲空間,并在存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存存儲空間的存儲指針;若否,執(zhí)行按照存儲指針讀取對應(yīng)的第二索引表的步驟。
[0019]可選地,按照IP地址的第四段的數(shù)值,在IP地址中前三段的數(shù)值對應(yīng)的第二索引表中查找IP地址對應(yīng)的請求記錄信息之后還包括:判斷第二索引表中是否包含IP地址對應(yīng)的請求記錄信息;若否,在第二索引表中分配IP地址的存儲空間,并將DNS查詢請求的信息保存為請求記錄信息;若是,在IP地址對應(yīng)的請求記錄信息中添加DNS查詢請求的信息,以對請求記錄信息進(jìn)行更新。
[0020]可選地,在判斷第二索引表中是否包含IP地址對應(yīng)的請求記錄信息之后還包括:掃描第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。
[0021]可選地,在判定請求源進(jìn)行DNS攻擊之后還包括:向所述請求源的客戶端返回DNS請求異常的信息,以便所述客戶端進(jìn)行提示或處理。。
[0022]根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種DNS攻擊的防御裝置,包括:請求獲取模塊,用于獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;請求記錄信息查詢模塊,用于按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源的請求記錄信息;攻擊判斷模塊,用于判斷請求記錄信息記錄中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;防御模塊,用于在攻擊判斷模塊的判斷結(jié)果為是的情況下,攔截DNS查詢請求。
[0023]可選地,上述防御裝置還包括:函數(shù)注冊模塊,用于在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù);請求獲取模塊還被配置為:利用鉤子函數(shù)捕捉DNS查詢請求。
[0024]可選地,上述防御裝置還包括:DNS查詢請求包判斷模塊,用于分別判斷DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及DNS查詢請求的目的端口是否為預(yù)定端口 ;請求記錄信息查詢模塊還被配置為:如果DNS查詢請求包判斷模塊的判斷結(jié)果均為是,執(zhí)行查詢請求記錄信息的步驟。
[0025]可選地,請求記錄信息查詢模塊包括:第一索引表查詢子模塊,用于按照IP地址中前三段的數(shù)值在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,其中第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針;第二索引表查詢子模塊,用于按照IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,并按照IP地址的第四段的數(shù)值在IP地址中前三段的數(shù)值對應(yīng)的第二索引表中查找IP地址對應(yīng)的請求記錄信息,第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息。
[0026]可選地,上述防御裝置還包括:第一索引表更新模塊,用于判斷第一索引表查詢子模塊查詢出的存儲指針是否為空;若是,為IP地址所在的IP地址段分配存儲空間,并在存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存存儲空間的存儲指針。
[0027]可選地,上述防御裝置還包括:第二索引表更新模塊,用于判斷第二索引表中是否包含IP地址對應(yīng)的請求記錄信息;若否,在第二索引表中分配IP地址的存儲空間,并將DNS查詢請求的信息保存為請求記錄信息;若是,在IP地址對應(yīng)的請求記錄信息中添加DNS查詢請求的信息,以對請求記錄信息進(jìn)行更新。
[0028]可選地,上述防御裝置還包括:資源回收模塊,用于掃描第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。
[0029]可選地,上述防御裝置還包括:攻擊提示模塊,用于向請求源的客戶端返回DNS請求異常的信息,以便客戶端進(jìn)行提示或處理。。
[0030]根據(jù)本發(fā)明的另一個(gè)方面,還提供了一種DNS系統(tǒng)。該DNS系統(tǒng)包括:至少一臺DNS安全服務(wù)器,用于根據(jù)用戶請求進(jìn)行域名解析,DNS安全服務(wù)器中設(shè)置有根據(jù)上述的任一種DNS攻擊的防御裝置。。
[0031]可選地,上述DNS系統(tǒng)還包括:用戶客戶端,配置為接收DNS攻擊的防御裝置下發(fā)的DNS請求異常的信息,并在安全建議顯示區(qū)域輸出提示信息和/或?qū)NS服務(wù)器地址修改為預(yù)設(shè)的安全地址。
[0032]本發(fā)明的DNS攻擊的防御方法在接收到DNS查詢請求后,實(shí)時(shí)在訪問記錄數(shù)據(jù)庫中查找對應(yīng)的請求記錄信息,對該請求源的預(yù)定周期內(nèi)的訪問次數(shù)進(jìn)行判斷,對于超出訪問次數(shù)的請求源進(jìn)行訪問限制。由于對每個(gè)請求源的IP地址進(jìn)行判斷,不會影響其他請求源的正常訪問,實(shí)現(xiàn)了精確的攻擊防御。
[0033]進(jìn)一步地,本發(fā)明優(yōu)化了 IP地址對應(yīng)請求記錄信息的查詢方法,采用兩級索引表的查詢方式,實(shí)時(shí)性好,不影響服務(wù)器正常工作的性能和效率。
[0034]上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
[0035]根據(jù)下文結(jié)合附圖對本發(fā)明具體實(shí)施例的詳細(xì)描述,本領(lǐng)域技術(shù)人員將會更加明了本發(fā)明的上述以及其他目的、優(yōu)點(diǎn)和特征。
【專利附圖】
【附圖說明】
[0036]通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中:
[0037]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御裝置的示意框圖;
[0038]圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法的示意圖;
[0039]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法中二級索引結(jié)構(gòu)的示意圖;
[0040]圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法的一種流程圖;以及
[0041]圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS系統(tǒng)的系統(tǒng)架構(gòu)圖。
【具體實(shí)施方式】
[0042]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0043]圖1是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御裝置的示意框圖。該DNS攻擊的防御裝置100 —般性地可包括:請求獲取模塊110、請求記錄信息查詢模塊120、攻擊判斷模塊130、防御模塊140。在本發(fā)明的一些可選實(shí)施例中,根據(jù)DNS攻擊的防御裝置100的功能需求和進(jìn)一步優(yōu)化,可選擇性地配置有:第一索引表更新模塊151、第二索引表更新模塊152、資源回收模塊170、DNS查詢請求包判斷模塊180、函數(shù)注冊模塊190、攻擊提示模塊160,其中請求記錄信息查詢模塊120可以包括:第一索引表查詢子模塊121和第二索引表查詢子模塊122。
[0044]在以上模塊中,請求獲取模塊110用于獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;請求記錄信息查詢模塊120,用于按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源在預(yù)定周期內(nèi)的請求記錄信息;攻擊判斷模塊130,用于判斷請求記錄信息記錄中的請求次數(shù)是否超出了預(yù)設(shè)閾值;防御模塊140,用于在攻擊判斷模塊130的判斷結(jié)果為是的情況下,判定請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
[0045]IP是英文Internet Protocol (網(wǎng)絡(luò)之間互連的協(xié)議)的縮寫,是為計(jì)算機(jī)網(wǎng)絡(luò)相互連接進(jìn)行通信而設(shè)計(jì)的協(xié)議。IP地址是為了使連入Internet的計(jì)算機(jī)在通信時(shí)能夠相互識別,Internet中的每一臺主機(jī)都分配有一個(gè)唯一的32位地址,該地址稱為IP地址。本實(shí)施例中的IP地址默認(rèn)為IPV4地址。IP段是指一組連續(xù)的IP地址,為了簡化配置和策略的實(shí)現(xiàn),通常會將一組連續(xù)的IP地址組成一個(gè)IP段。
[0046]本實(shí)施例中的DNS攻擊的防御裝置100根據(jù)DNS查詢請求源的IP地址利用高速緩存查找算法在訪問記錄數(shù)據(jù)庫中查找對應(yīng)的請求記錄信息,對該請求源的預(yù)定周期內(nèi)的訪問次數(shù)進(jìn)行判斷,以確定請求源是否進(jìn)行DNS攻擊。對超出訪問次數(shù)的請求源進(jìn)行訪問限制,例如攔截超出訪問次數(shù)的請求源發(fā)出的DNS查詢請求,或者結(jié)合黑白名單,將請求源判為惡意請求源,歸入到服務(wù)器端的數(shù)據(jù)庫中,對該請求源進(jìn)行處理。本實(shí)施例的防御裝置可以精確限制每秒鐘為每個(gè)IP請求的DNS服務(wù)次數(shù),并且不會根據(jù)請求端IP的數(shù)量增加,性能下降,有效防范DNS攻擊。
[0047]其中,防御模塊140結(jié)合黑白名單對請求源進(jìn)行處理時(shí),合法的具有動態(tài)主機(jī)配置協(xié)議(Dynamic Host Configuration Protocol,簡稱DHCP)功能的網(wǎng)絡(luò)連接設(shè)備的DNSIP地址發(fā)送給具有DHCP功能的網(wǎng)絡(luò)連接設(shè)備,具有DHCP功能的網(wǎng)絡(luò)連接設(shè)備將自身的DNSIP地址修改為合法的DNS IP地址。該預(yù)先設(shè)置的合法的DNS IP地址白名單列表可以預(yù)先存儲在客戶端數(shù)據(jù)庫中,也可以從網(wǎng)站的服務(wù)器(例如:云安全服務(wù)器)上下載;如果匹配成功,則說明客戶端的DNS IP地址是惡意的,則將惡意DNS IP地址修改為合法的DNS IP地址,例如:通過修改注冊表鍵值,令其指向合法的DNS IP地址,從而達(dá)到修改注冊表中鍵值的目的;如果匹配不成功,則放行該DNS IP地址,說明可以訪問與之對應(yīng)的網(wǎng)站。從而結(jié)合預(yù)先存儲在客戶端數(shù)據(jù)庫,對超出訪問次數(shù)的請求源進(jìn)行訪問限制。
[0048]本實(shí)施例中可以使用函數(shù)注冊模塊190在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù),以便請求獲取模塊110利用鉤子函數(shù)捕捉DNS查詢請求。其中鉤子函數(shù)(HookFunction)是一種處理或過濾時(shí)間的回調(diào)函數(shù),當(dāng)每次發(fā)生預(yù)定事件時(shí),鉤子函數(shù)就可以捕捉系統(tǒng)中所有進(jìn)程將發(fā)生的事件消息,它的作用是將消息在抵達(dá)窗口程序之前先鉤到一個(gè)地方以預(yù)先處理。
[0049]鉤子函數(shù)獲取所有的查詢數(shù)據(jù)包后,需要判斷哪些數(shù)據(jù)包是需要進(jìn)行處理的數(shù)據(jù)包,只將需要數(shù)據(jù)包交由請求獲取模塊110處理,不需要處理的數(shù)據(jù)包可以直接透明傳輸交由后續(xù)模塊處理。本實(shí)施例中的DNS攻擊的防御裝置可以通過DNS查詢請求包判斷模塊180分別判斷DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及DNS查詢請求的目的端口是否為預(yù)定端口 ;如果DNS查詢請求包判斷模塊180的判斷結(jié)果均為是,請求記錄信息查詢模塊120執(zhí)行查詢請求記錄信息的步驟,如果有任一項(xiàng)判斷結(jié)果為否,可直接透傳數(shù)據(jù)包,不影響其他數(shù)據(jù)的傳輸。
[0050]請求記錄信息查詢模塊120可以利用第一索引表查詢子模塊121和第二索引表查詢子模塊122進(jìn)行二級索引查詢,具體地,第一索引表查詢子模塊121按照IP地址中前三段的數(shù)值在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針。第二索引表查詢子模塊122,按照IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,并按照IP地址的第四段的數(shù)值在IP地址中前三段的數(shù)值對應(yīng)的第二索引表中查找IP地址對應(yīng)的請求記錄信息。其中第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針,第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息。
[0051]進(jìn)一步地,在第一索引表中,索引值為IP地址的前三段數(shù)值的哈希值,索引項(xiàng)為IP地址段對應(yīng)的第二索引表的存儲指針,在訪問記錄數(shù)據(jù)庫的第一索弓I表中查找對應(yīng)的存儲指針包括:計(jì)算IP地址中的前三段的數(shù)值的哈希值;將哈希值作為索引值在第一索引表中查找對應(yīng)的存儲指針。
[0052]在進(jìn)行查詢后,還需要將本次的訪問信息添加至訪問記錄數(shù)據(jù)庫中的對應(yīng)位置,進(jìn)行訪問記錄信息的更新。另外,查詢中還可能出現(xiàn)查詢結(jié)果為空的情況,因此本發(fā)明的實(shí)施例中,第一索引表更新模塊151判斷第一索引表查詢子模塊121查詢出的存儲指針是否為空;若是,為IP地址所在的IP地址段分配存儲空間,并在存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存存儲空間的存儲指針。從而在出現(xiàn)有訪問記錄數(shù)據(jù)庫之前未記錄的IP地址段中IP地址進(jìn)行DNS查詢時(shí),在訪問記錄數(shù)據(jù)庫的第一索引表中建立該IP地址段的索引項(xiàng)。
[0053]第二索引表更新模塊152用于判斷第二索引表中是否包含IP地址對應(yīng)的請求記錄信息;若否,在第二索引表中分配IP地址的存儲空間,并將DNS查詢請求的信息保存為請求記錄信息;若是,在IP地址對應(yīng)的請求記錄信息中添加DNS查詢請求的信息,以對請求記錄信息進(jìn)行更新。利用第二索引表更新模塊152可以在第二索引表中更新IP地址的請求記錄,并在第二索引表中不存在請求源的IP地址的情況下,新建該IP地址的索引項(xiàng)。
[0054]為了節(jié)省存儲資源,本實(shí)施例中還可以利用資源回收模塊170,用于掃描第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息,例如一小時(shí)內(nèi)沒有查詢請求的IP地址的索引項(xiàng)可以被刪除,已釋放更多空間。
[0055]在確定出攻擊后,本實(shí)施例的DNS攻擊的防御裝置還可以向安裝有相應(yīng)客戶端的請求源返回DNS請求異常的信息,以便客戶端進(jìn)行提示或處理,例如在安全建議顯示區(qū)域輸出提示信息向用戶提示,或者將DNS服務(wù)器地址修改為預(yù)設(shè)的安全地址。
[0056]利用攻擊提示模塊160向用戶的客戶端報(bào)告DNS攻擊后,客戶端在安全建議顯示區(qū)域輸出請求源的攻擊檢測結(jié)果。顯示的方式可以是在類似于安全衛(wèi)士之類的互聯(lián)網(wǎng)軟件顯示界面中的安全隱患部分輸出,類似地,還可以通過彈出氣泡、對話框等方式顯示。通過與客戶端的安全聯(lián)動,進(jìn)一步提高安全性。 [0057]本發(fā)明實(shí)施例中DNS攻擊的防御裝置可以針對Linux服務(wù)器,借助于Linux自帶防火墻框架Netfilter,注冊鉤子函數(shù)。其中,函數(shù)注冊模塊190可以使用Netfilter HOOK函數(shù)注冊模塊,用于將鉤子函數(shù)注冊到Linux內(nèi)核。這樣所有網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包都會通過注冊的鉤子處理函數(shù)以進(jìn)行處理。
[0058]DNS查詢請求包判斷模塊180的判斷段條件可以是數(shù)據(jù)包是UDP包,并且目的端口是53,這是因?yàn)镈NS協(xié)議運(yùn)行在UDP (User Datagram Protocol,用戶數(shù)據(jù)報(bào)協(xié)議),使用端口號53。在傳輸層TCP提供端到端可靠的服務(wù),在UDP端提供盡力交付的服務(wù)。其控制端口作用于UDP端口 53。
[0059]請求記錄信息查詢模塊120的查找算法可以為:當(dāng)獲取到DNS請求包時(shí),將源IP地址的前三段作為哈希表的哈希值。如果該哈希值對應(yīng)的節(jié)點(diǎn)內(nèi)容為空,則分配一個(gè)數(shù)組,
包含256個(gè)結(jié)構(gòu)體。數(shù)組中對應(yīng)的每個(gè)結(jié)構(gòu)體--對應(yīng)這源IP地址第四段的訪問信息。
訪問信息可以包含有一秒內(nèi)的訪問次數(shù)和具體的訪問時(shí)間。具體的算法在以下實(shí)施例中的DNS攻擊的防御方法詳細(xì)介紹。
[0060]攻擊判斷模塊130判斷請求源IP是否超出了系統(tǒng)設(shè)置的限速閾值。判斷條件為,如果一秒內(nèi)訪問的次數(shù)超過了閾值則將該數(shù)據(jù)包丟棄,否則向上層協(xié)議透明傳輸該請求,以進(jìn)行正常處理。
[0061]資源回收模塊170,定時(shí)掃描第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。[0062]本發(fā)明實(shí)施例還提供了一種DNS攻擊的防御方法,該DNS攻擊的防御法可以由以上實(shí)施例介紹的任意一種DNS攻擊的裝置來執(zhí)行,以提高實(shí)現(xiàn)精準(zhǔn)的攻擊防御。圖2是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法的示意圖,如圖所示,該實(shí)現(xiàn)了精確的攻擊防御方法包括以下步驟:
[0063]步驟S202,獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;
[0064]步驟S204,按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源的請求記錄信息;
[0065]步驟S206,判斷請求記錄信息中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;
[0066]步驟S208,若是,判定請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
[0067]其中,步驟S202可以包括:在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù);利用鉤子函數(shù)捕捉DNS查詢請求。
[0068]步驟S202獲取DNS查詢請求之后還可以包括:分別判斷DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及DNS查詢請求的目的端口是否為預(yù)定端口 ;若均為是,執(zhí)行查詢請求記錄信息的步驟。其中判斷依據(jù)可以為數(shù)據(jù)包是UDP包,并且目的端口是53,若不滿足該條,直接透傳數(shù)據(jù)包,不影響其他數(shù)據(jù)包的正常傳輸。
[0069]判斷依據(jù)可以根據(jù)RFC (Request For Comments,征求修正意見書)規(guī)定的DNS格式進(jìn)行判斷,例如使用以下的RFC文檔的內(nèi)容進(jìn)行DNS查詢請求數(shù)據(jù)包的判斷:1034域名,概念和功能;1035域名,實(shí)現(xiàn)和規(guī)范;1123Internet主機(jī)要求,應(yīng)用和支持;1886,支持IP版本6的DNS擴(kuò)展名;1995,DNS中的增量區(qū)域傳輸;1996提示通知區(qū)域更改的機(jī)制(DNS N0TIFY);2136,域名系統(tǒng)中的動態(tài)更新(DNS UPDATE);2181,對DNS規(guī)范的說明;2308,DNS查詢的負(fù)緩存(DNS NCACHE) ;2535,域名系統(tǒng)安全擴(kuò)展(DNSSEC) ;2671DNS的擴(kuò)展機(jī)制(EDNSO) ;2782,指定服務(wù)位置的 DNS RR (DNS SRV)。
[0070]步驟S204無法使用全I(xiàn)P地址映射索引表。原因?yàn)樗饕淼膬?nèi)存消耗過大:針對所用的所有IP地址,索引表將擁有4G表項(xiàng),每個(gè)索引表項(xiàng)存儲4字節(jié)的指向?qū)?yīng)信息結(jié)構(gòu)體指針,那么整個(gè)內(nèi)存資源消耗過大,幾乎無法實(shí)現(xiàn)。因此步驟S204采用高速緩存采用二級索引表,二級索引表由兩級索引組成。其中第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針。第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息。例如,IP地址前三段作為一級索引,第四段作為二級索引。
[0071]步驟S204的一種流程為:按照IP地址中前三段的數(shù)值,在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,按照IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,然后按照IP地址的第四段的數(shù)值,在IP地址中前三段的數(shù)值對應(yīng)的第二索引表中查找IP地址對應(yīng)的請求記錄信息。
[0072]在第一索引表中索引值可以為IP地址的前三段數(shù)值的哈希值,索引項(xiàng)為IP地址段對應(yīng)的第二索引表的存儲指針,則以上在訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針包括:計(jì)算IP地址中的前三段的數(shù)值的哈希值;將哈希值作為索引值在第一索引表中查找對應(yīng)的存儲指針。
[0073]第一索引表中查詢出的存儲指針如果為空的情況下,需要為請求源對應(yīng)的地址段建立對應(yīng)的第二索引表并存儲其指針,具體流程可以為:IP地址所在的IP地址段分配存儲空間,并在存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存存儲空間的存儲指針;如果存儲指針不為空,則對應(yīng)的第二索引表已建立,直接執(zhí)行按照存儲指針讀取對應(yīng)的第二索引表的步驟。
[0074]另外第二索引表中也存在沒有IP地址對應(yīng)的請求記錄的情況,此時(shí)需要判斷第二索引表中是否包含IP地址對應(yīng)的請求記錄信息;若否,在第二索引表中分配IP地址的存儲空間,并將DNS查詢請求的信息保存為請求記錄信息;若是,在IP地址對應(yīng)的請求記錄信息中添加DNS查詢請求的信息,以對請求記錄信息進(jìn)行更新。
[0075]為節(jié)省存儲空間,還可以定期掃描第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。
[0076]一級索引最大值是0XFFFFFF,即索引范圍是0X00到0XFFFFFF,步長固定,索引項(xiàng)存儲指針。第二段索引最大值是0XFF,即索引范圍是0X00到0XFF,步長固定,索引項(xiàng)存儲本計(jì)數(shù)周期開始的時(shí)間和本周期訪問次數(shù)。為了節(jié)省內(nèi)存,一級索引存儲指針預(yù)先分配,二級索引動態(tài)分配,即只有該項(xiàng)對應(yīng)的IP地址訪問才分配內(nèi)存。
[0077]圖3是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法中二級索引結(jié)構(gòu)的示意圖,當(dāng)有IP地址訪問時(shí),直接根據(jù)IP地址前段定位到一級索引項(xiàng);如果索引項(xiàng)的存儲指針為空,分配二級索引項(xiàng)的存儲空間。根據(jù)IP地址第四段,定位二級索引項(xiàng),并將計(jì)數(shù)周期開始時(shí)間,設(shè)置為當(dāng)前時(shí)間,本周期訪問次數(shù)設(shè)為I。
[0078]如果索引項(xiàng)指針不為空,根據(jù)IP地址第四段數(shù)值定位二級索引項(xiàng)。根據(jù)計(jì)數(shù)周期開始時(shí)間,判斷本周期的請求次數(shù)是否超出限值,如果計(jì)數(shù)周期超出限值,設(shè)置為當(dāng)前時(shí)間,本周起訪問次數(shù)設(shè)為1,該數(shù)據(jù)包放行;如果計(jì)數(shù)周期沒有超出,本周期訪問次數(shù)加I。從而根據(jù)本周期訪問次數(shù)判斷,該IP地址訪問次數(shù)是否超速,如果本周期訪問次數(shù)大于最大限制次數(shù)認(rèn)為超速,該數(shù)據(jù)包直接丟棄,否則放行。一般而言,預(yù)定周期可以設(shè)置為一秒,若一秒內(nèi)的請求次數(shù)超過限值,則自動進(jìn)行屏蔽,也就是忽略了超過限值的DNS查詢請求。
[0079]在步驟S208之后,還可以向請求源的客戶端返回DNS請求異常的信息,以便客戶端進(jìn)行提示或處理??蛻舳丝梢栽诎踩ㄗh顯示區(qū)域輸出請求源的攻擊檢測結(jié)果,顯示的方式是在類似于安全衛(wèi)士之類的互聯(lián)網(wǎng)軟件顯示界面中的安全隱患部分輸出,類似地,還可以通過彈出氣泡、對話框等方式顯示。
[0080]圖4是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS攻擊的防御方法的一種流程圖,服務(wù)器的網(wǎng)卡接收到數(shù)據(jù)流量,首先判斷數(shù)據(jù)包是否為UDP數(shù)據(jù)包以及目的端口是否為53,若均為是,確定數(shù)據(jù)包為DNS數(shù)據(jù)包后,進(jìn)行請求源IP解析,按照請求源的IP地址進(jìn)行兩級索引查詢,查找出IP地址的請求記錄信息,并判斷周期內(nèi)的IP地址的請求次數(shù)是否超過閾值,即判斷請求是否超速,如果超速,丟棄該IP地址的DNS查詢請求,若未超速,將DNS查詢請求透傳給上層協(xié)議棧進(jìn)行處理。
[0081]本實(shí)施例中的防御方法和防御裝置可以集成于類似于安全衛(wèi)士的互聯(lián)網(wǎng)安全軟件中,與安全中心的云端服務(wù)器數(shù)據(jù)連接,及時(shí)發(fā)現(xiàn)并上報(bào)可疑DNS,減小惡意DNS對網(wǎng)絡(luò)
的侵害。
[0082]圖5是根據(jù)本發(fā)明一個(gè)實(shí)施例的DNS系統(tǒng)的系統(tǒng)架構(gòu)圖,該DNS系統(tǒng)提供了高可靠、高防護(hù)、高性能的域名解析服務(wù)。當(dāng)頂級服務(wù)器、根域服務(wù)器或授權(quán)服務(wù)器遭遇攻擊或故障時(shí),本實(shí)施例的DNS系統(tǒng)可啟動災(zāi)備緊急應(yīng)答模式,保障互聯(lián)網(wǎng)在根域服務(wù)器或授權(quán)服務(wù)器修復(fù)之前基本正常運(yùn)行,為系統(tǒng)搶修和恢復(fù)留下足夠的時(shí)間。與客戶端的安全衛(wèi)士聯(lián)動,可以第一時(shí)間提示用戶,并幫助用戶使用安全DNS進(jìn)行域名解析,并能在故障解除之后迅速將用戶的DNS恢復(fù)為故障前設(shè)置。
[0083]在本實(shí)施例中的DNS系統(tǒng)包括有一個(gè)或多個(gè)DNS安全服務(wù)器(如圖中設(shè)置于北京電信、上海電信、上海聯(lián)通、北京聯(lián)通中的DNS服務(wù)器),分別用于對用戶客戶端的發(fā)出的DNS解析請求進(jìn)行域名解析,在每臺DNS安全服務(wù)器中設(shè)置有上述任一種實(shí)施例中介紹的DNS攻擊的防御裝置。在如圖5所示的DNS系統(tǒng)架構(gòu)中,當(dāng)上海電信、北京電信、上海聯(lián)通以及北京聯(lián)通的用戶在使用網(wǎng)絡(luò)服務(wù)時(shí),在DNS安全服務(wù)器設(shè)置有DNS攻擊的防御裝置,該防御裝置獲取DNS查詢請求以及DNS查詢請求的請求源的IP地址;按照IP地址在訪問記錄數(shù)據(jù)庫中查詢得出請求源的請求記錄信息;判斷請求記錄信息中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;若是,判定請求源進(jìn)行DNS攻擊,并進(jìn)行防御。防御方法可以使用直接過濾超速的DNS請求,或者結(jié)合用戶客戶端中安裝的安全衛(wèi)士等軟件,進(jìn)行安全防護(hù)和提示,例如用戶客戶端在安全建議顯示區(qū)域輸出提示信息或?qū)NS服務(wù)器地址修改為預(yù)設(shè)的安全地址。
[0084]DNS安全服務(wù)器通過使用一個(gè)高速緩存,采用緩存存取優(yōu)化、預(yù)更新等各種手段盡量降低了解析時(shí)延,實(shí)現(xiàn)了高速安全解析。當(dāng)某一個(gè)IP請求源的流量異常突增時(shí),DNS攻擊的防御裝置自動分析和安全聯(lián)動措施,對該IP的DNS解析請求源限速。通過DNS攻擊的防御裝置驗(yàn)證的DNS解析請求,可以直接通過RCS集群和災(zāi)備系統(tǒng)進(jìn)行后續(xù)處理。
[0085]需要說明的是,本例中提及的上海電信、北京電信、上海聯(lián)通以及北京聯(lián)通僅用作示例,并不對實(shí)際操作中的用戶來源形成限定。本發(fā)明的防御方法和防御裝置還可以在檢測出攻擊的攻擊源后,結(jié)合檢測可疑DNS的方法通過對比已知DNS和待檢測的目標(biāo)DNS對常用域名的解析結(jié)果,在待檢測的目標(biāo)DNS的解析結(jié)果明顯不同于已知DNS的解析結(jié)果時(shí),將目標(biāo)DNS標(biāo)記為可疑DNS。可以簡單迅速地確定出將域名解析成未知結(jié)果的DNS,為進(jìn)一步分析和處理提供了基礎(chǔ)。
[0086]在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
[0087]類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0088]本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
[0089]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
[0090]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的DNS攻擊的防御裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
[0091]應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0092]至此,本領(lǐng)域技術(shù)人員應(yīng)認(rèn)識到,雖然本文已詳盡示出和描述了本發(fā)明的多個(gè)示例性實(shí)施例,但是,在不脫離本發(fā)明精神和范圍的情況下,仍可根據(jù)本發(fā)明公開的內(nèi)容直接確定或推導(dǎo)出符合本發(fā)明原理的許多其他變型或修改。因此,本發(fā)明的范圍應(yīng)被理解和認(rèn)定為覆蓋了所有這些其他變型或修改。
[0093]本發(fā)明提供了 Al.—種DNS攻擊的防御方法,包括:
[0094]獲取DNS查詢請求以及所述DNS查詢請求的請求源的IP地址;
[0095]按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源的請求記錄信息;
[0096]判斷所述請求記錄信息中預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;
[0097]若是,判定所述請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
[0098]A2.根據(jù)Al所述的方法,其中,獲取DNS查詢請求包括:
[0099]在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù);
[0100]利用所述鉤子函數(shù)捕捉所述DNS查詢請求。
[0101]A3.根據(jù)Al所述的方法,其中,在獲取DNS查詢請求之后還包括:
[0102]分別判斷所述DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及所述DNS查詢請求的目的端口是否為預(yù)定端口 ;
[0103]若均為是,執(zhí)行查詢所述請求記錄信息的步驟。
[0104]A4.根據(jù)Al至A3中任一項(xiàng)所述的方法,其中,按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源在預(yù)定周期內(nèi)的請求記錄信息包括:[0105]按照所述IP地址中前三段的數(shù)值,在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,其中所述第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針;
[0106]按照所述IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,所述第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息;
[0107]按照所述IP地址的第四段的數(shù)值,在所述IP地址中前三段的數(shù)值對應(yīng)的所述第二索引表中查找所述IP地址對應(yīng)的請求記錄信息。
[0108]A5.根據(jù)A4所述的方法,其中,
[0109]在所述第一索引表中,索引值為IP地址的前三段數(shù)值的哈希值,索引項(xiàng)為所述IP地址段對應(yīng)的第二索引表的存儲指針,
[0110]在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針包括:
[0111]計(jì)算所述IP地址中的前三段的數(shù)值的哈希值;
[0112]將所述哈希值作為索引值在所述第一索引表中查找對應(yīng)的存儲指針。
[0113]A6.根據(jù)A4所述的方法,其中,按照所述IP地址中前三段的數(shù)值,在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針之后還包括:
[0114]判斷所述存儲指針是否為空;
[0115]若是,為所述IP地址所在的IP地址段分配存儲空間,并在所述存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存所述存儲空間的存儲指針;
[0116]若否,執(zhí)行按照所述存儲指針讀取對應(yīng)的第二索引表的步驟。
[0117]A7.根據(jù)A4所述的方法,其中,按照所述IP地址的第四段的數(shù)值,在所述IP地址中前三段的數(shù)值對應(yīng)的所述第二索引表中查找所述IP地址對應(yīng)的請求記錄信息之后還包括:
[0118]判斷所述第二索引表中是否包含所述IP地址對應(yīng)的請求記錄信息;
[0119]若否,在所述第二索引表中分配所述IP地址的存儲空間,并將所述DNS查詢請求的信息保存為請求記錄信息;
[0120]若是,在所述IP地址對應(yīng)的請求記錄信息中添加所述DNS查詢請求的信息,以對所述請求記錄信息進(jìn)行更新。
[0121]AS.根據(jù)A7所述的方法,其中在判斷所述第二索引表中是否包含所述IP地址對應(yīng)的請求記錄信息之后還包括:
[0122]掃描所述第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄/[目息。
[0123]A9.根據(jù)Al至AS中任一項(xiàng)所述的方法,其中,在判定所述請求源進(jìn)行DNS攻擊之后還包括:
[0124]向所述請求源的客戶端返回DNS請求異常的信息,以便所述客戶端進(jìn)行提示或處理。
[0125]本發(fā)明還提供了 B10.—種DNS攻擊的防御裝置,包括:
[0126]請求獲取模塊,用于獲取DNS查詢請求以及所述DNS查詢請求的請求源的IP地址;
[0127]請求記錄信息查詢模塊,用于按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源的請求記錄信息;
[0128]攻擊判斷模塊,用于判斷所述請求記錄信息記錄中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值;
[0129]防御模塊,用于在所述攻擊判斷模塊的判斷結(jié)果為是的情況下,判定所述請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
[0130]Bll.根據(jù)BlO所述的裝置,還包括:
[0131]函數(shù)注冊模塊,用于在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù);
[0132]所述請求獲取模塊還被配置為:利用所述鉤子函數(shù)捕捉所述DNS查詢請求。
[0133]B12.根據(jù)BlO所述的裝置,還包括:
[0134]DNS查詢請求包判斷模塊,用于分別判斷所述DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及所述DNS查詢請求的目的端口是否為預(yù)定端口 ;
[0135]請求記錄信息查詢模塊還被配置為:如果DNS查詢請求包判斷模塊的判斷結(jié)果均為是,執(zhí)行查詢所述請求記錄信息的步驟。
[0136]B13.根據(jù)BlO至B12中任一項(xiàng)所述的裝置,其中,所述請求記錄信息查詢模塊包括:
[0137]第一索引表查詢子模塊,用于按照所述IP地址中前三段的數(shù)值在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,其中所述第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針;
[0138]第二索引表查詢子模塊,用于按照所述IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,并按照所述IP地址的第四段的數(shù)值在所述IP地址中前三段的數(shù)值對應(yīng)的所述第二索引表中查找所述IP地址對應(yīng)的請求記錄信息,所述第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息。
[0139]B14.根據(jù)B13所述的裝置,還包括:
[0140]第一索引表更新模塊,用于判斷所述第一索引表查詢子模塊查詢出的存儲指針是否為空;若是,為所述IP地址所在的IP地址段分配存儲空間,并在所述存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存所述存儲空間的存儲指針。
[0141]B15.根據(jù)B13所述的裝置,還包括:
[0142]第二索引表更新模塊,用于判斷所述第二索引表中是否包含所述IP地址對應(yīng)的請求記錄信息;若否,在所述第二索引表中分配所述IP地址的存儲空間,并將所述DNS查詢請求的信息保存為請求記錄信息;若是,在所述IP地址對應(yīng)的請求記錄信息中添加所述DNS查詢請求的信息,以對所述請求記錄信息進(jìn)行更新。
[0143]B16.根據(jù)B15所述的裝置,還包括:
[0144]資源回收模塊,用于掃描所述第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。
[0145]B17.根據(jù)BlO至B16中任一項(xiàng)所述的裝置,還包括:
[0146]攻擊提示模塊,用于向所述請求源的客戶端返回DNS請求異常的信息,以便所述客戶端進(jìn)行提示或處理。
[0147]本發(fā)明還提供了 C18.—種DNS系統(tǒng),包括:
[0148]至少一臺DNS安全服務(wù)器,用于根據(jù)用戶請求進(jìn)行域名解析,DNS安全服務(wù)器中設(shè)置有根據(jù)BlO至B17中任一項(xiàng)所述的DNS攻擊的防御裝置。
[0149]C19.根據(jù)C18所述的DNS系統(tǒng),還包括:
[0150]用戶客戶端,配置為接收所述DNS攻擊的防御裝置下發(fā)的DNS請求異常的信息,并在安全建議顯示區(qū)域輸出提示信息和/或?qū)NS服務(wù)器地址修改為預(yù)設(shè)的安全地址。
【權(quán)利要求】
1.一種DNS攻擊的防御方法,包括: 獲取DNS查詢請求以及所述DNS查詢請求的請求源的IP地址; 按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源的請求記錄信息; 判斷所述請求記錄信息中預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值; 若是,判定所述請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
2.根據(jù)權(quán)利要求1所述的方法,其中,獲取DNS查詢請求包括: 在操作系統(tǒng)的防火墻框架內(nèi)注冊鉤子函數(shù); 利用所述鉤子函數(shù)捕捉所述DNS查詢請求。
3.根據(jù)權(quán)利要求1所述的方法,其中,在獲取DNS查詢請求之后還包括: 分別判斷所述DNS查詢請求的數(shù)據(jù)包數(shù)據(jù)格式是否符合預(yù)定協(xié)議,以及所述DNS查詢請求的目的端口是否為預(yù)定端口; 若均為是,執(zhí)行查詢所述請求記錄信息的步驟。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其中,按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源在預(yù)定周期內(nèi)的請求記錄信息包括: 按照所述IP地址中前三段的數(shù)值,在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針,其中所述第一索引表中存儲有多個(gè)IP地址段分別對應(yīng)的第二索引表的存儲指針; 按照所述IP地址中前三段的數(shù)值對應(yīng)的存儲指針讀取對應(yīng)的第二索引表,所述第二索引表中存儲有一個(gè)IP地址段中多個(gè)IP地址的請求記錄信息; 按照所述IP地址的第四段的數(shù)值,在所述IP地址中前三段的數(shù)值對應(yīng)的所述第二索引表中查找所述IP地址對應(yīng)的請求記錄信息。
5.根據(jù)權(quán)利要求4所述的方法,其中, 在所述第一索引表中,索引值為IP地址的前三段數(shù)值的哈希值,索引項(xiàng)為所述IP地址段對應(yīng)的第二索引表的存儲指針, 在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針包括: 計(jì)算所述IP地址中的前三段的數(shù)值的哈希值; 將所述哈希值作為索引值在所述第一索引表中查找對應(yīng)的存儲指針。
6.根據(jù)權(quán)利要求4所述的方法,其中,按照所述IP地址中前三段的數(shù)值,在所述訪問記錄數(shù)據(jù)庫的第一索引表中查找對應(yīng)的存儲指針之后還包括: 判斷所述存儲指針是否為空; 若是,為所述IP地址所在的IP地址段分配存儲空間,并在所述存儲空間內(nèi)建立包含多個(gè)結(jié)構(gòu)體的數(shù)組作為第二索引表,并保存所述存儲空間的存儲指針; 若否,執(zhí)行按照所述存儲指針讀取對應(yīng)的第二索引表的步驟。
7.根據(jù)權(quán)利要求4所述的方法,其中,按照所述IP地址的第四段的數(shù)值,在所述IP地址中前三段的數(shù)值對應(yīng)的所述第二索引表中查找所述IP地址對應(yīng)的請求記錄信息之后還包括: 判斷所述第二索引表中是否包含所述IP地址對應(yīng)的請求記錄信息; 若否,在所述第二索引表中分配所述IP地址的存儲空間,并將所述DNS查詢請求的信息保存為請求記錄信息;若是,在所述IP地址對應(yīng)的請求記錄信息中添加所述DNS查詢請求的信息,以對所述請求記錄信息進(jìn)行更新。
8.根據(jù)權(quán)利要求7所述的方法,其中在判斷所述第二索引表中是否包含所述IP地址對應(yīng)的請求記錄信息之后還包括: 掃描所述第二索引表中的請求記錄信息,并刪除預(yù)訂時(shí)間內(nèi)持續(xù)未更新的請求記錄信息。
9.一種DNS攻擊的防御裝置,包括: 請求獲取模塊,用于獲取DNS查詢請求以及所述DNS查詢請求的請求源的IP地址;請求記錄信息查詢模塊,用于按照所述IP地址在訪問記錄數(shù)據(jù)庫中查詢得出所述請求源的請求記錄信息; 攻擊判斷模塊,用于判斷所述請求記錄信息記錄中在預(yù)定周期內(nèi)的請求次數(shù)是否超出了預(yù)設(shè)閾值; 防御模塊,用于在所述攻擊判斷模塊的判斷結(jié)果為是的情況下,判定所述請求源進(jìn)行DNS攻擊,并進(jìn)行防御。
10.一種DNS系統(tǒng),包括: 至少一臺DNS安全服務(wù)器,用于根據(jù)用戶請求進(jìn)行域名解析,DNS安全服務(wù)器中設(shè)置有根據(jù)權(quán)利要求9所述的DNS攻擊的防御裝置。
【文檔編號】H04L29/06GK103957195SQ201410136693
【公開日】2014年7月30日 申請日期:2014年4月4日 優(yōu)先權(quán)日:2014年4月4日
【發(fā)明者】濮燦 申請人:上海聚流軟件科技有限公司