本發(fā)明涉及互聯(lián)網(wǎng)域名系統(tǒng)領域,具體地說,是一種改善在遭遇隨機域名查詢攻擊時,域名服務器受到負面影響的針對隨機域名查詢攻擊的防護方法。
背景技術:
DNS系統(tǒng)的名稱空間很大,這為其應用提供了便利,但同時也在應對DNS安全問題時帶來了一些挑戰(zhàn)。足夠大的地址空間意味著可以構造足夠多的隨機域名,用來消耗原本應該用在對真實存在的域名解析的服務器資源。于是,一種稱為胡亂域名(Non-sense Names)攻擊的DoS攻擊開始被使用。
胡亂域名(Non-sense Names)攻擊通過向域名服務器發(fā)送大量隨機生成的域名查詢,來消耗服務器的資源,導致正常查詢無法被及時處理,甚至不被處理,從而達成了拒絕服務攻擊的目的。
當前已經(jīng)實現(xiàn)的如servfail和IP/域名限速機制仍然會對一部分偽裝成正常請求的流量敞開大門,黑名單方式對此類域名攻擊并沒有幫助,無法有效的實現(xiàn)對胡亂域名的查詢的限制。
技術實現(xiàn)要素:
為解決上述技術問題,本發(fā)明提供了一種針對隨機域名查詢攻擊的防護方法,其特征在于,所述方法包括:
根據(jù)預設的分類策略對查詢域名進行分類,得到至少一類域名隊列;
根據(jù)預設的調度策略調度所述域名隊列,并處理所述域名隊列中的域名。
優(yōu)選地,所述根據(jù)預設的分類策略對查詢域名進行分類包括:
根據(jù)預設標準制定至少一條規(guī)則并設定對應的信息熵值;
將所述域名與所述規(guī)則逐條對比,若滿足,則所述域名的熵值累加所述信息熵值;
根據(jù)所述域名的熵值確定其分類。
優(yōu)選地,根據(jù)預設標準指定至少一條規(guī)則包括:
將所有混亂特征及規(guī)則都不滿足的一類域名設定為標準,并設定其信息熵值為0;
根據(jù)所述標準制定至少一條規(guī)則。
優(yōu)選地,所述根據(jù)預設的分類策略對查詢域名進行分類還包括:
預設所述查詢域名的分類數(shù)量;
根據(jù)不同的分類設定不同的處理優(yōu)先級。
優(yōu)選地,所述得到至少一類域名隊列包括:
為每類域名分配單獨的隊列;
其中,所述隊列中按照時間順序保存所述域名的數(shù)據(jù)結構。
優(yōu)選地,所述得到至少一類域名隊列還包括:
在每個所述隊列中,保存時間更早的域名設定為更高的處理優(yōu)先級。
優(yōu)選地,所述根據(jù)預設的調度策略調度所述域名隊列包括:
為每個所述域名隊列分配CPU時間配額的權重;
線程根據(jù)該權重選取對應的所述域名隊列中的查詢域名。
優(yōu)選地,所述線程根據(jù)該權重選取對應的所述域名隊列中的查詢域名包括:
線程在處理前生成隨機數(shù);
根據(jù)該隨機數(shù)選定所述域名隊列。
優(yōu)選地,所述方法還包括:
當選取的所述域名隊列為空時,則選取優(yōu)先級靠后且最接近本類的所述域名隊列中的查詢域名。
優(yōu)選地,所述方法還包括:
當遍歷至優(yōu)先級最低的所述域名隊列仍未確定查詢域名時,線程回到初始狀態(tài),重新生成隨機數(shù)選取所述域名隊列。
與現(xiàn)有技術相比,本發(fā)明提供一種針對隨機域名查詢攻擊的防護方法,通過利用不斷發(fā)展的文本分類技術,幫助域名服務器根據(jù)域名質量對查詢請求優(yōu)化處理,改善受到的攻擊的影響。同時兼顧存在分類過程中出現(xiàn)誤判的風險,在服務器負載較高時對丟棄請求設定了條件。
附圖說明
圖1為本發(fā)明一優(yōu)選實施例中針對隨機域名查詢攻擊的防護方法流程圖;
圖2為本發(fā)明一優(yōu)選實施例中根據(jù)預設的分類策略對查詢域名進行分類的方法流程圖;
圖3為本發(fā)明一優(yōu)選實施例中根據(jù)預設的調度策略調度域名隊列的方法流程圖。
具體實施方式
為使本領域技術人員更好地理解本發(fā)明的技術方案,下面結合附圖和具體實施方式對本發(fā)明作進一步詳細描述。
隨機域名的攻擊方法是針對一臺域名服務器發(fā)起大量隨機生成的域名查詢。通常攻擊會有一定的針對性,所以生成的域名可能是在某一個區(qū)下的域名,如2dajhbn-xcna8o7wbgesw.1.com和8djeyvzsoe783owxbfj67395.1.com這樣在1.com下的域名。
而服務器在完成查詢前,幾乎無從發(fā)現(xiàn)這些域名是否存在。若對這些域名進行了查詢,則消耗了服務器的資源去做了并沒有價值的事情。而黑名單方式對這種類型的攻擊并沒有幫助,因為在巨大的名稱空間中可以有無窮無盡的隨機域名可以被利用。此外,這些域名還可能對正常域名的緩存駐留造成影響。最終,服務器的資源被這些胡亂域名吞噬,正常用戶的查詢無法得到解析。
本發(fā)明實施例提供的對抗隨機域名的方法,基于這樣一個前提:隨機域名與正常有意義的域名之間存在有些特征上的差別(例如字符被使用的概率分布)。基于該特征上的差別即可對所有得到的域名進行分類(classify)。
參照圖1所示,本發(fā)明一優(yōu)選實施例提供了一種針對隨機域名查詢攻擊的防護方法,該方法包括:
S110、根據(jù)預設的分類策略對查詢域名進行分類,得到至少一類域名隊列。
該分類策略可以對不同的域名進行不同的分類,并且為分類后的域名設定不同等級的優(yōu)先級處理順序,待調用域名查詢請求時,可以較為溫和的對請求進行調用和丟棄。
具體地,參照圖2所示,根據(jù)預設的分類策略對查詢域名進行分類包括:
S210、根據(jù)預設標準制定至少一條規(guī)則并設定對應的信息熵值。
具體地,將所有混亂特征及規(guī)則都不滿足的一類域名設定為標準,并設定其信息熵值為0;
根據(jù)標準制定至少一條規(guī)則。
其中,信息熵值較低為優(yōu)先級別較高的,而且該熵值是一個域名的混亂程度的度量,該熵值將會決定域名最終被歸到的分類,作為進行抵抗混亂域名攻擊的依據(jù)。
S220、將域名與規(guī)則逐條對比,若滿足,則域名的熵值累加信息熵值。
將所有的域名進行掃描,并將域名與設定的至少一條規(guī)則進行對比,若滿足該規(guī)則,則將該規(guī)則設定的熵值累加至該域名的熵值上,若不滿足該規(guī)則,則繼續(xù)進行下一條規(guī)則的對比,直至對比完成,即可得到該域名的總的熵值。
S230、根據(jù)域名的熵值確定其分類。
對不同的熵值劃分不同的分類,從而根據(jù)域名的熵值將其劃分到對應的分類中,相應的,對應到不同的優(yōu)先級處理等級。
基于文本分類技術,對域名進行分類。即可將所有混亂特征及規(guī)則都不滿足的一類域名作為一個標準,設其信息熵(entropy)為0。
為制定的每條規(guī)則設定一個值,當域名滿足該規(guī)則,就將其熵值累加。
可選的,在域名服務器收到查詢請求并掃描域名的同時,會對它的熵值進行計算。
以BIND域名服務器的防護策略的為例,并且基于性能和降低實現(xiàn)復雜性方面的考慮,熵的計算方法是預定義的。
在設定域名的分類策略時,
預設所述查詢域名的分類數(shù)量;
根據(jù)不同的分類設定不同的處理優(yōu)先級。
具體地,策略將域名分為8類,編號為0到7,其中0類域名的混亂程度被認為是最低的,7類域名最為混亂。根據(jù)策略,0類域名擁有最高的處理優(yōu)先級,7類的優(yōu)先級最低。
當優(yōu)先級較高和較低的域名同時大量涌入服務器時,優(yōu)先級高的會被更快地處理,而優(yōu)先級較低的則會延后處理甚至被丟棄。當收到的請求中域名的優(yōu)先級相同時,即使是7類這樣的域名也都可以被及時且正常地處理。
下面給出的分類與熵值的一個參考設定:
而熵的計算,會考察域名中:
1)字母與數(shù)字的交替出現(xiàn)次數(shù),單次權重為16。出現(xiàn)2次以內的交替不進行計數(shù),超出部分按實際次數(shù)計算熵。如aa11bb22.cn的交替次數(shù)為4次,最終這一項會使熵增加32(由16*(4-2)得到)。
2)數(shù)字與字母數(shù)量的比例,權重為16。條件為數(shù)字字符數(shù)量多于字母字符。
3)連續(xù)的元音字母數(shù),權重為32。條件為連續(xù)元音字母超過3個。
4)連續(xù)的輔音字母數(shù),權重為32。條件為連續(xù)輔音字母超過4個。
5)連續(xù)的數(shù)字字符數(shù)量,權重為32。條件為連續(xù)元數(shù)字字符超過5個。
6)中劃線數(shù)量是否較多,權重為32。條件為中劃線超過3個且占字符總量的一半及以上。
7)域名的label數(shù)量是否較多,權重為4。條件為域名label數(shù)量超過63個。
8)單個字符實際在本域名中出現(xiàn)的概率,在本域名中所有字符中的排名與標準概率(如網(wǎng)站alexa.com所統(tǒng)計的域名列表中的統(tǒng)計結果)排名表進行對照,得到的逆序數(shù),單個逆序的權重為1。
對于編碼過的域名,暫未提供具體分類,需要做實際的統(tǒng)計,來制定一個統(tǒng)一的分類級別。因為實際這樣的域名查詢出現(xiàn)的頻率較低,所以舍棄對它們的級別的細分。
上面提到權重值就是滿足條件時為域名累計的熵的值。上面列出的條目1和條目8可多次累計。這樣,收到查詢請求后,先對整個域名掃描一遍,求得其熵值,然后映射為一個分類并把它交給修改過的BIND任務系統(tǒng)按優(yōu)先級處理。
其中,得到至少一類域名隊列包括:
為每類域名分配單獨的隊列,隊列中按照時間順序保存域名的數(shù)據(jù)結構。如果該隊列中的域名容量達到最大值,則丟棄等待的域名。在優(yōu)先級上,分類編號較低的具有更高的優(yōu)先級。在隊列內部,隊首(時間上更早)域名具有的優(yōu)先級更高。
S120、根據(jù)預設的調度策略調度域名隊列,并處理域名隊列中的域名。
選擇使用一種調度算法,來對不同分類的域名查詢請求進行分優(yōu)先級處理,以增加一些容錯。這樣的調度算法會優(yōu)先處理熵值較低的域名查詢請求,而也會有一定概率對具有較低優(yōu)先級分類的域名進行處理。當熵值較低的域名較少時,熵值較高的域名也會有更多的機會被處理。
具體地,參照圖3所示,根據(jù)預設的調度策略調度域名隊列包括:
S310、為每個域名隊列分配CPU時間配額的權重。
具體地,給每個分類的隊列分配一個CPU時間片配額的權重,用于影響每個隊列被調度的頻率。
S320、線程根據(jù)該權重選取對應的域名隊列中的查詢域名。
具體地,線程處理一個查詢前,先生成隨機數(shù),落在特定的區(qū)間內,代表選取了該隊列中的一個請求。以存在3個隊列的情況為例,三個隊列的權重分別是3,2和1,那么隨機數(shù)選取的范圍就是0到5這6個整數(shù)。0到2對應為隊列1的區(qū)間,3到4對應隊列2,最后的5對應隊列3。
可選的,當選取的隊列為空(無該類請求)時,選擇優(yōu)先級靠后且最接近本類的隊列中的請求。若遍歷到編號最高的隊列仍未找到請求。線程會回到初始狀態(tài),重新生成隨機數(shù)再次選取。這樣就實現(xiàn)了,在認為沒有更高品質域名查詢時,當前查詢可具有高優(yōu)先級。
在處理域名隊列中的域名時,在理想情況下,隨機域名請求會有比較低的優(yōu)先級,不會影響優(yōu)質域名(熵值較低)的查詢請求。并且只有在更優(yōu)質的域名請求量也很大時,相對品質較低的域名請求才會被丟棄。
本發(fā)明實施例提供的一種針對隨機域名查詢攻擊的防護方法,通過對查詢域名的分類和調度,可以將一定的隨機域名從請求隊列中剝離并實現(xiàn)丟棄等處理;通過優(yōu)先級處理,可以增加處理的容錯,使用較為溫和的方式對請求進行丟棄,幫助域名服務器根據(jù)域名質量對查詢請求優(yōu)化處理,改善受到攻擊的影響。
可以理解的是,以上實施方式僅僅是為了說明本發(fā)明的原理而采用的示例性實施方式,然而本發(fā)明并不局限于此。對于本領域內的普通技術人員而言,在不脫離本發(fā)明的精神和實質的情況下,可以做出各種變型和改進,這些變型和改進也視為本發(fā)明的保護范圍。