員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0042]圖1為本發(fā)明提供的自動(dòng)防御DNS解析請求DDoS攻擊的方法實(shí)施例一的流程示意圖,該方法的執(zhí)行主體可以為服務(wù)器,如圖1所示,該方法包括:
[0043]S101、統(tǒng)計(jì)歷史發(fā)送過查詢請求的客戶端數(shù)量。
[0044]每當(dāng)有新的客戶端向該服務(wù)器發(fā)送查詢請求時(shí),服務(wù)器會(huì)登記該客戶端的地址,例如IP地址。進(jìn)而,服務(wù)器會(huì)統(tǒng)計(jì)這些客戶端的數(shù)量。
[0045]S102、根據(jù)上述歷史發(fā)送過查詢請求的客戶端數(shù)量、每個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)以及單次查詢時(shí)間,獲取該預(yù)設(shè)時(shí)間段的時(shí)長。
[0046]具體地,服務(wù)器會(huì)設(shè)定一個(gè)預(yù)設(shè)的時(shí)間段,在這個(gè)預(yù)設(shè)的時(shí)間段內(nèi),每個(gè)在該服務(wù)器上登記過的客戶端的查詢次數(shù)不能超過服務(wù)器所允許的查詢次數(shù)。該預(yù)設(shè)時(shí)間段的時(shí)長由歷史發(fā)送過查詢請求的客戶端數(shù)量、每個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)以及單次查詢時(shí)間來確定。
[0047]其中,歷史發(fā)送過查詢請求的客戶端數(shù)量是服務(wù)器所統(tǒng)計(jì)的在服務(wù)器上登記過的客戶端數(shù)量??蛇x地,服務(wù)器會(huì)設(shè)置歷史發(fā)送過查詢請求的客戶端數(shù)量的最大值,該最大值可以設(shè)定為與服務(wù)器的每秒查詢能力相同或接近。例如,服務(wù)器的每秒查詢能力為100000,就可以將將歷史發(fā)送過查詢請求的客戶端數(shù)量的最大值設(shè)定為100000。每個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)一般設(shè)置為1次,也可以根據(jù)客戶端的實(shí)際情況設(shè)置為大于1次的次數(shù)。
[0048]S103、獲取當(dāng)前實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間段。
[0049]具體地,當(dāng)服務(wù)器開始統(tǒng)計(jì)上述的預(yù)設(shè)時(shí)間段時(shí),也同時(shí)開始統(tǒng)計(jì)一個(gè)查詢時(shí)間段。該查詢時(shí)間段的時(shí)長由實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間累加形成。即每當(dāng)服務(wù)器處理過一個(gè)查詢請求,就將該查詢請求所使用的時(shí)間累加到上述查詢時(shí)間段中。
[0050]S104、根據(jù)上述查詢時(shí)間段的時(shí)長調(diào)整上述預(yù)設(shè)時(shí)間段的時(shí)長,獲取調(diào)整后的預(yù)設(shè)時(shí)間段。
[0051]服務(wù)器根據(jù)查詢時(shí)間段的時(shí)長,即根據(jù)當(dāng)前向服務(wù)器發(fā)送查詢請求的實(shí)際情況來動(dòng)態(tài)調(diào)整上述預(yù)設(shè)時(shí)間段的時(shí)長。當(dāng)查詢時(shí)間段的時(shí)長比較長,說明當(dāng)前向服務(wù)器發(fā)送查詢請求的客戶端數(shù)量較多,此時(shí)可以將上述預(yù)設(shè)時(shí)間段的時(shí)長延長,同時(shí)還要滿足在這個(gè)預(yù)設(shè)時(shí)間段內(nèi)每個(gè)客戶端的查詢次數(shù)不能超過允許查詢次數(shù)。即當(dāng)查詢請求較多時(shí),每個(gè)客戶端查詢等待的時(shí)間變長,從而實(shí)現(xiàn)根據(jù)實(shí)時(shí)環(huán)境動(dòng)態(tài)改變查詢速度的效果。
[0052]當(dāng)上述預(yù)設(shè)時(shí)間段的時(shí)長調(diào)整之后,則開始下一個(gè)獲取當(dāng)前實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間段的周期,在下一個(gè)獲取查詢時(shí)間段的周期中,再根據(jù)新的查詢時(shí)間段的時(shí)長與調(diào)整后的預(yù)設(shè)時(shí)間段的時(shí)長的關(guān)系再對預(yù)設(shè)時(shí)間段的時(shí)長進(jìn)行調(diào)整。
[0053]本實(shí)施例中,服務(wù)器根據(jù)歷史發(fā)送過查詢請求的客戶端數(shù)量、每個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)以及單次查詢時(shí)間來設(shè)定一個(gè)預(yù)設(shè)時(shí)間段,在該預(yù)設(shè)時(shí)間段內(nèi)每個(gè)客戶端的查詢次數(shù)不能超過服務(wù)器所允許的查詢次數(shù)。同時(shí),服務(wù)器獲取實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間段,并根據(jù)該查詢時(shí)間段的時(shí)長來調(diào)整預(yù)設(shè)時(shí)間段的時(shí)長,使得在查詢請求較多時(shí),每個(gè)客戶端所等待的時(shí)間變長,從而實(shí)現(xiàn)根據(jù)實(shí)時(shí)環(huán)境動(dòng)態(tài)改變查詢速度。由于服務(wù)器根據(jù)實(shí)時(shí)環(huán)境對查詢進(jìn)行了限速,即不再為某個(gè)區(qū)分配固定的查詢時(shí)間和次數(shù),使得攻擊者不能再利用服務(wù)器所分配的查詢時(shí)間和次數(shù)對服務(wù)器進(jìn)行攻擊。
[0054]另一實(shí)施例中,上述步驟S102具體包括:
[0055]根據(jù)公式T = t’ *Nu+t’ *(wl+w2+…+wn),獲取預(yù)設(shè)時(shí)間段的時(shí)長T。
[0056]其中,t’為單次查詢時(shí)間,Nu為預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)為1的歷史發(fā)送過查詢請求的客戶端的數(shù)量,wl、w2、…、wn為預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)非1的客戶端所分別允許的查詢次數(shù),其中,預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)為1的客戶端數(shù)量與預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)非1的客戶端數(shù)量之和為歷史發(fā)送過查詢請求的客戶端數(shù)量。
[0057]服務(wù)器可以根據(jù)歷史發(fā)送過查詢請求的客戶端的實(shí)際情況,來設(shè)定某個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的查詢次數(shù)。對于普通的客戶端,在預(yù)設(shè)時(shí)間段內(nèi)僅允許進(jìn)行1次查詢,對于有特殊要求的客戶端,可以設(shè)定針對該客戶端的具體查詢次數(shù)。所有歷史發(fā)送過查詢請求的客戶端的查詢時(shí)間之和即為預(yù)設(shè)時(shí)間段的時(shí)長。
[0058]另一實(shí)施例中,上述步驟S103具體包括:
[0059]采用公式T’ = t’ *Nc+t’ *(ν1+ν2+...+νηι),獲取當(dāng)前實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間段的時(shí)長Τ’。
[0060]其中,t ’為單次查詢時(shí)間,Nc為查詢時(shí)間段內(nèi)的允許查詢次數(shù)為1的當(dāng)前實(shí)際發(fā)送查詢請求的客戶端的數(shù)量,vl、v2、…、vm為查詢時(shí)間段內(nèi)的允許查詢次數(shù)非1的客戶端所分別允許的查詢次數(shù),其中,查詢時(shí)間段內(nèi)的允許查詢次數(shù)為1的客戶端數(shù)量與查詢時(shí)間段內(nèi)的允許查詢次數(shù)非1的客戶端數(shù)量之和為上述當(dāng)前實(shí)際發(fā)送查詢請求的客戶端的數(shù)量。
[0061]另一實(shí)施例中,上述步驟S104具體包括:
[0062]若查詢時(shí)間段的時(shí)長T’大于預(yù)設(shè)時(shí)間段的時(shí)長T,則將查詢時(shí)間段的時(shí)長T’作為調(diào)整后的預(yù)設(shè)時(shí)間段的時(shí)長T。
[0063]根據(jù)前述公式計(jì)算出預(yù)設(shè)時(shí)間段的時(shí)長T以及查詢時(shí)間段的時(shí)長T’后,如果查詢時(shí)間段的時(shí)長T的時(shí)長大于預(yù)設(shè)時(shí)間段的時(shí)長T,則說明當(dāng)前向服務(wù)器發(fā)送查詢請求的客戶端數(shù)量較多,此時(shí)將查詢時(shí)間段的時(shí)長T’作為調(diào)整后的預(yù)設(shè)時(shí)間段的時(shí)長T,即將預(yù)設(shè)時(shí)間段的時(shí)長T延長到滿足當(dāng)前實(shí)際的查詢請求,同時(shí)還要滿足在這個(gè)預(yù)設(shè)時(shí)間段內(nèi)每個(gè)客戶端的查詢次數(shù)不能超過允許查詢次數(shù)。即當(dāng)查詢請求較多時(shí),每個(gè)客戶端查詢等待的時(shí)間變長,從而實(shí)現(xiàn)根據(jù)實(shí)時(shí)環(huán)境動(dòng)態(tài)改變查詢速度的效果。
[0064]圖2為本發(fā)明提供的自動(dòng)防御DNS解析請求DDoS攻擊的方法實(shí)施例二的流程示意圖,如圖2所示,上述步驟S104具體包括:
[0065]S201、若查詢時(shí)間段的時(shí)長T’小于預(yù)設(shè)時(shí)間段的時(shí)長T,則計(jì)算預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段的時(shí)長T’的平均值。
[0066]S202、根據(jù)預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段的時(shí)長T’的平均值、以及預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段的時(shí)長T’中每個(gè)T’對應(yīng)的預(yù)設(shè)權(quán)重,獲取調(diào)整后的預(yù)設(shè)時(shí)間段。
[0067]具體地,若首次出現(xiàn)查詢時(shí)間段的時(shí)長T’小于預(yù)設(shè)時(shí)間段的時(shí)長T時(shí),先不調(diào)整預(yù)設(shè)時(shí)間段的時(shí)長T,即保持預(yù)設(shè)時(shí)間段的時(shí)長T不變,在下一個(gè)查詢時(shí)間段結(jié)束時(shí),再判斷查詢時(shí)間段的時(shí)長T’與預(yù)設(shè)時(shí)間段的時(shí)長T的關(guān)系,依次類推,總共判斷預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段。例如,總共判斷8個(gè)查詢時(shí)間段。如果這8個(gè)查詢時(shí)間段的時(shí)長T’都小于預(yù)設(shè)時(shí)間段的時(shí)長T,則認(rèn)為當(dāng)前向服務(wù)器發(fā)送查詢請求的客戶端數(shù)量較少,此時(shí)可以將預(yù)設(shè)時(shí)間段的時(shí)長T縮短,同時(shí)還要滿足在這個(gè)預(yù)設(shè)時(shí)間段內(nèi)每個(gè)客戶端的查詢次數(shù)不能超過允許查詢次數(shù)。即當(dāng)查詢請求較少時(shí),每個(gè)客戶端查詢等待的時(shí)間變短,從而實(shí)現(xiàn)根據(jù)實(shí)時(shí)環(huán)境動(dòng)態(tài)改變查詢速度的效果。
[0068]在縮短預(yù)設(shè)時(shí)間段的時(shí)長T時(shí),首先為前面預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段的時(shí)長T’中每個(gè)T’設(shè)置一個(gè)預(yù)設(shè)權(quán)重,該預(yù)設(shè)權(quán)重的設(shè)置原則為:查詢時(shí)間段在先且距離當(dāng)前查詢時(shí)間段越遠(yuǎn),則權(quán)重越小,即越久遠(yuǎn)的統(tǒng)計(jì)結(jié)果,其參考價(jià)值越低。同時(shí),計(jì)算前面預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段的時(shí)長T’的平均值T1A’。進(jìn)而,計(jì)算每個(gè)查詢時(shí)間段的時(shí)長T’與平均值T1A’的差值,將每個(gè)差值分別與每個(gè)查詢時(shí)間段的時(shí)長T’的預(yù)設(shè)權(quán)重相乘,得到新的差值,再將所有新的差值求和,將所有新的差值求和結(jié)果再與平均值T1A’相加,從而得到縮短后的預(yù)設(shè)時(shí)間段的時(shí)長T。
[0069]本實(shí)施例中,連續(xù)觀察預(yù)設(shè)數(shù)量個(gè)查詢時(shí)間段之后才縮短預(yù)設(shè)時(shí)間段的時(shí)長,能夠便于服務(wù)器在壓力增長后,保持一段適當(dāng)且短暫的警戒時(shí)間,來為可能集中出現(xiàn)的不同客戶端保留時(shí)間片。
[0070]另一實(shí)施例中,上述方法還包括:根據(jù)服務(wù)器的每秒查詢能力以及服務(wù)器時(shí)間冗余值獲取單次查詢時(shí)間。
[0071]具體地,根據(jù)服務(wù)器的性能可以獲取服務(wù)器的每秒查詢能力,S卩服務(wù)器可以支持的每秒查詢次數(shù),進(jìn)而根據(jù)服務(wù)器的每秒查詢能力計(jì)算出每個(gè)查詢所需的最少時(shí)間t,進(jìn)而為該最少時(shí)間t加入一個(gè)服務(wù)器時(shí)間冗余值(例如1.1倍),從而得到單次查詢時(shí)間。
[0072]圖3為本發(fā)明提供的自動(dòng)防御DNS解析請求DDoS攻擊的裝置實(shí)施例一的結(jié)構(gòu)示意圖,如圖3所示,該裝置可以集成于服務(wù)器,具體地,該裝置包括:
[0073]統(tǒng)計(jì)模塊31,用于統(tǒng)計(jì)歷史發(fā)送過查詢請求的客戶端數(shù)量。
[0074]第一獲取模塊32,用于根據(jù)歷史發(fā)送過查詢請求的客戶端數(shù)量、每個(gè)客戶端在預(yù)設(shè)時(shí)間段內(nèi)的允許查詢次數(shù)以及單次查詢時(shí)間,獲取預(yù)設(shè)時(shí)間段的時(shí)長。
[0075]第二獲取模塊33,用于獲取當(dāng)前實(shí)際發(fā)送查詢請求的客戶端所使用的查詢時(shí)間段。
[0076]第三獲取模塊3