專利名稱:一種防御DDoS攻擊的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及分布式拒絕服務(wù)(DDoS,Distributed Deny of krvice)技術(shù)領(lǐng)域,尤其涉及一種防御DDoS攻擊的方法和設(shè)備。
背景技術(shù):
隨著hternet的發(fā)展,網(wǎng)絡(luò)應(yīng)用越來越多,由于互聯(lián)網(wǎng)自身設(shè)計的開放性,各種網(wǎng)絡(luò)應(yīng)用都受到安全威脅。其中,DDoS攻擊就是一種常見的攻擊服務(wù)器的手段,攻擊者控制大量傀儡機(jī)(此時傀儡機(jī)作為攻擊設(shè)備)向被攻擊的服務(wù)器發(fā)起大量的連接,占用了服務(wù)器的資源,導(dǎo)致服務(wù)器不能很好的服務(wù)于正常設(shè)備。在這種背景下,產(chǎn)生了流量清洗設(shè)備,專門用于識別客戶端是攻擊設(shè)備還是正常設(shè)備,并將攻擊流量過濾掉,使之不能達(dá)到服務(wù)器,以減輕對服務(wù)器的影響。然而,為了部署上的方便,現(xiàn)在的流量清洗設(shè)備一般采用單向引流的方式,這就為識別攻擊增加了一些困難。目前,常用的電子郵件協(xié)議有簡單郵件傳輸協(xié)議(SMTP,Simple Message Transfer Protocol)和郵局協(xié)議 3 (P0P3,Post Office Protocol 3)。電子郵件(E-mail) 服務(wù)器可能受到SMTP DDoS攻擊或P0P3DDoS攻擊,現(xiàn)有技術(shù)中,主要采用防御SYN Flood的方法來防御SMTP DDoS攻擊或P0P3 DDoS攻擊。防御SYN Flood的方法可以區(qū)分出非法的 TCP連接,并通過SMTP/P0P3狀態(tài)機(jī)區(qū)分出非法的SMTP/P0P3連接;然而,這種SYN Flood的方法只是對不完整的SMTP/P0P3客戶端(即不能完成TCP三次握手、或者不能完成合法的 SMTP/P0P3狀態(tài)機(jī)的客戶端)有效,而現(xiàn)有的DDoS攻擊一般采用控制大量傀儡機(jī)的方式,這種方式都有完整的SMTP/P0P3客戶端對服務(wù)器進(jìn)行攻擊。因此,對于通過控制大量傀儡機(jī)對服務(wù)器進(jìn)行的SMTP DDoS攻擊或P0P3DDoS攻擊,現(xiàn)有的防御方式已失去防御作用,無法完整地區(qū)分出攻擊設(shè)備(即傀儡機(jī))和正常設(shè)備。
發(fā)明內(nèi)容
本發(fā)明提供了一種防御DDoS攻擊的方法,用于區(qū)分出攻擊設(shè)備和正常設(shè)備,從而防御對E-mail服務(wù)器的DDoS攻擊。本發(fā)明還提供了一種防御DDoS攻擊的設(shè)備,用于區(qū)分出攻擊設(shè)備和正常設(shè)備,從而防御對E-mail服務(wù)器的DDoS攻擊。本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種防御DDoS攻擊的方法,包括計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP ACK的值,計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;
將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則服務(wù)器丟棄所述客戶端的連接請求。一種防御DDoS攻擊的設(shè)備,所述設(shè)備與服務(wù)器連接,設(shè)備包括計算模塊、保存模塊、識別模塊和處理模塊;其中,所述計算模塊,用于計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP ACK的值,計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;保存模塊,用于預(yù)先保存認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度;識別模塊,用于將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則通知所述處理模塊;所述處理模塊,用于當(dāng)收到認(rèn)證回應(yīng)報文是認(rèn)證失敗報文的通知時,指示服務(wù)器丟棄所述客戶端的連接請求??梢?,本發(fā)明提出的防御DDoS攻擊的方法和設(shè)備,通過TCP ACK之差識別出服務(wù)器對客戶端認(rèn)證成功還是失敗,如果認(rèn)證失敗,則說明該客戶端很有可能是攻擊設(shè)備,則丟棄該客戶端的連接請求,從而防御對E-mail服務(wù)器的DDoS攻擊。
圖1為本發(fā)明防御DDoS攻擊的方法流程圖;圖2為現(xiàn)有技術(shù)中一種典型的SMTP認(rèn)證過程;圖3為本發(fā)明防御DDoS攻擊的設(shè)備結(jié)構(gòu)示意圖。
具體實施例方式在現(xiàn)有的hternet中,出于安全考慮,絕大部分E-mail服務(wù)器都要求對客戶端進(jìn)行認(rèn)證,例如,要求客戶端輸入正確的用戶名和密碼。而攻擊者控制的傀儡機(jī)不可能掌握大量的真實用戶來進(jìn)行攻擊,所以,服務(wù)器對傀儡機(jī)(即攻擊設(shè)備)的認(rèn)證是失敗的。因此,通過認(rèn)證結(jié)果就能夠區(qū)分出客戶端是攻擊設(shè)備還是正常設(shè)備,從而防御攻擊設(shè)備的DDoS攻擊。并且,對于同一個服務(wù)器,其向客戶端發(fā)送的認(rèn)證成功報文和認(rèn)證失敗報文的長度是固定的,通過計算認(rèn)證回應(yīng)報文的長度,并將該認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文或認(rèn)證失敗報文的長度進(jìn)行比較,就能夠區(qū)分出該認(rèn)證回應(yīng)報文是認(rèn)證成功報文還是認(rèn)證失敗報文。攻擊者也可能在其控制的傀儡機(jī)中使用少量的真實用戶,這種情況可以通過限制每個用戶發(fā)起請求的頻度來限制?;谏鲜鏊悸?,本發(fā)明提出一種防御DDoS攻擊的方法,如圖1為本發(fā)明防御DDoS 攻擊的方法流程圖,該方法包括步驟101 計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度;步驟102 將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則服務(wù)器丟棄所述客戶端的連接請求。上述步驟101可以包括分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP確認(rèn)號(ACK)的值,計算所述后一條報文中的TCPACK的值與所述前一條報文中的TCP ACK的值的差,該差值即為所述認(rèn)證回應(yīng)報文的長度。上述步驟102中的識別過程可以包括將認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證失敗報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證失敗報文的長度相同時,識別出該認(rèn)證回應(yīng)報文是認(rèn)證失敗報文;或者,將認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證成功報文的長度相同時,識別出該認(rèn)證回應(yīng)報文不是認(rèn)證失敗報文。這里,服務(wù)器可以通過手工配置或者學(xué)習(xí)的方式得到認(rèn)證成功報文和認(rèn)證失敗報文的長度。正常情況下,服務(wù)器發(fā)送的認(rèn)證成功報文多于認(rèn)證失敗報文,利用這一規(guī)律,可以通過服務(wù)器發(fā)送的認(rèn)證回應(yīng)報文長度的分布情況,得到認(rèn)證成功報文和認(rèn)證失敗報文的長度。例如,假定在一定時間內(nèi)統(tǒng)計出服務(wù)器向外發(fā)送的認(rèn)證回應(yīng)報文有1000條,其中長度為100字節(jié)的有980條,長度為60字節(jié)的有20條,根據(jù)這些報文長度的分布情況,可以得出認(rèn)證成功報文的長度為100字節(jié),認(rèn)證失敗報文的長度為60字節(jié)。 上述步驟102之后可以進(jìn)一步包括當(dāng)服務(wù)器丟棄該客戶端的連接請求的次數(shù)超過預(yù)先設(shè)定的門限時,可以將該客戶端的IP地址加入黑名單中,在預(yù)先設(shè)定的時間段內(nèi)不再處理來自該客戶端的報文。以下在具體的SMTP認(rèn)證過程中,詳細(xì)介紹本發(fā)明提出的防御DDoS攻擊的方法。如圖2為現(xiàn)有技術(shù)中一種典型的SMTP認(rèn)證過程,包括步驟201 客戶端向服務(wù)器發(fā)送報文1,即AUTH LOGIN報文,請求服務(wù)器對其進(jìn)行認(rèn)證。步驟202 服務(wù)器向客戶端發(fā)送報文2,要求客戶端輸入用戶名。步驟203 客戶端向服務(wù)器發(fā)送報文3,攜帶該客戶端的用戶名。步驟204 服務(wù)器向客戶端發(fā)送報文4,要求客戶端輸入密碼。步驟205 客戶端向服務(wù)器發(fā)送報文5,攜帶該客戶端的密碼。步驟206 服務(wù)器向客戶端發(fā)送報文6,即認(rèn)證回應(yīng)報文,該認(rèn)證回應(yīng)報文可能是認(rèn)證成功報文、也可能是認(rèn)證失敗報文。步驟207 客戶端向服務(wù)器發(fā)送報文7,繼續(xù)其他請求。在背景技術(shù)部分已經(jīng)提過,現(xiàn)有的流量清洗設(shè)備一般采用單向引流的方式進(jìn)行過濾,也就是說,現(xiàn)有的流量清洗設(shè)備只能識別出報文1、3、5、7這些客戶端發(fā)送至服務(wù)器的報文,而無法識別報文2、4、6這些服務(wù)器發(fā)送至客戶端的報文,所以也就無法識別出服務(wù)器對客戶端的認(rèn)證結(jié)果是認(rèn)證成功還是認(rèn)證失敗。而本發(fā)明提出的防御DDoS的方法,可以通過認(rèn)證回應(yīng)報文(即報文6)的后一條報文(即報文7)的TCK ACK和前一條報文(即報文5)的TCK ACK的差計算出報文6的長度。之后,將報文6的長度與預(yù)先報文的認(rèn)證失敗報文或認(rèn)證成功報文的長度進(jìn)行比較,識別出報文6是否為認(rèn)證失敗報文,如果是,則說明該客戶端有可能是攻擊設(shè)備,服務(wù)器則丟棄該客戶端的連接請求,并可以在多次丟棄其連接請求后將該客戶端放入黑名單, 有效防御該客戶端的攻擊。除了 AUTH LOGIN認(rèn)證方式,還有其他的認(rèn)證方式,如AUTHCRAM-MD5,AUTH PLAIN 等,都可以通過本發(fā)明提出的方式識別出攻擊設(shè)備,從而有效防御攻擊設(shè)備的攻擊。對于P0P3DDoS攻擊,本發(fā)明可以采用同樣的方法進(jìn)行防御。本發(fā)明還提出一種防御DDoS攻擊的設(shè)備,所述設(shè)備與服務(wù)器連接,如圖3為本發(fā)明防御DDoS攻擊的設(shè)備結(jié)構(gòu)示意圖,該設(shè)備包括計算模塊301、保存模塊302、識別模塊 303和處理模塊304 ;其中,所述計算模塊301,用于計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP ACK的值, 計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;保存模塊302,用于預(yù)先保存認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度;識別模塊303,用于將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則通知所述處理模塊304 ;所述處理模塊304,用于當(dāng)收到認(rèn)證回應(yīng)報文是認(rèn)證失敗報文的通知時,指示服務(wù)器丟棄所述客戶端的連接請求。上述保存模塊302可以預(yù)先保存認(rèn)證失敗報文的長度;上述識別模塊303識別認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文的方式可以為將認(rèn)證回應(yīng)報文的長度與所述認(rèn)證失敗報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證失敗報文的長度相同時,識別出該認(rèn)證回應(yīng)報文是認(rèn)證失敗報文;或者,所述保存模塊302可以預(yù)先保存認(rèn)證成功報文的長度;上述識別模塊303識別認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文的方式可以為將認(rèn)證回應(yīng)報文的長度與所述認(rèn)證成功報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證成功報文的長度相同時,識別出該認(rèn)證回應(yīng)報文不是認(rèn)證失敗報文。上述設(shè)備可以進(jìn)一步包括鎖定模塊305,用于當(dāng)服務(wù)器丟棄客戶端的連接請求的次數(shù)超過預(yù)先設(shè)定的門限時,指示所述服務(wù)器在預(yù)先設(shè)定的時間段內(nèi)不再處理來自所述客戶端的報文。綜上可見,本發(fā)明提出的防御DDoS攻擊的方法和設(shè)備,能夠在單向流量清洗環(huán)境中通過TCP ACK之差識別出服務(wù)器對客戶端認(rèn)證成功還是失敗,當(dāng)認(rèn)證失敗時,則丟棄該客戶端的連接請求,從而防御攻擊設(shè)備對E-mail服務(wù)器的DDoS攻擊。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.一種防御分布式拒絕服務(wù)DDoS攻擊的方法,其特征在于,所述方法包括計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP確認(rèn)號ACK的值,計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則服務(wù)器丟棄所述客戶端的連接請求。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述識別認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文的方式為將認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證失敗報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證失敗報文的長度相同時,識別出該認(rèn)證回應(yīng)報文是認(rèn)證失敗報文;或者,將認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證成功報文的長度相同時,識別出該認(rèn)證回應(yīng)報文不是認(rèn)證失敗報文。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述服務(wù)器丟棄該客戶端的連接請求之后,進(jìn)一步包括當(dāng)服務(wù)器丟棄該客戶端的連接請求的次數(shù)超過預(yù)先設(shè)定的門限時,在預(yù)先設(shè)定的時間段內(nèi)不再處理來自所述客戶端的報文。
4.一種防御DDoS攻擊的設(shè)備,所述設(shè)備與服務(wù)器連接,其特征在于,所述設(shè)備包括計算模塊、保存模塊、識別模塊和處理模塊;其中,所述計算模塊,用于計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP ACK的值,計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;保存模塊,用于預(yù)先保存認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度;識別模塊,用于將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則通知所述處理模塊;所述處理模塊,用于當(dāng)收到認(rèn)證回應(yīng)報文是認(rèn)證失敗報文的通知時,指示服務(wù)器丟棄所述客戶端的連接請求。
5.根據(jù)權(quán)利要求4所述的設(shè)備,其特征在于,所述保存模塊預(yù)先保存認(rèn)證失敗報文的長度;所述識別模塊識別認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文的方式為將認(rèn)證回應(yīng)報文的長度與所述認(rèn)證失敗報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證失敗報文的長度相同時,識別出該認(rèn)證回應(yīng)報文是認(rèn)證失敗報文;或者,所述保存模塊預(yù)先保存認(rèn)證成功報文的長度;所述識別模塊識別認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文的方式為將認(rèn)證回應(yīng)報文的長度與所述認(rèn)證成功報文的長度進(jìn)行比較,當(dāng)認(rèn)證回應(yīng)報文的長度與認(rèn)證成功報文的長度相同時,識別出該認(rèn)證回應(yīng)報文不是認(rèn)證失敗報文。
6.根據(jù)權(quán)利要求4或5所述的設(shè)備,其特征在于,所述設(shè)備進(jìn)一步包括 鎖定模塊,用于當(dāng)服務(wù)器丟棄客戶端的連接請求的次數(shù)超過預(yù)先設(shè)定的門限時,指示所述服務(wù)器在預(yù)先設(shè)定的時間段內(nèi)不再處理來自所述客戶端的報文。
全文摘要
本發(fā)明提出一種防御分布式拒絕服務(wù)(DDoS)攻擊的方法和設(shè)備,其中方法包括計算服務(wù)器向客戶端發(fā)送的認(rèn)證回應(yīng)報文的長度,所述計算的方式為分別獲取所述認(rèn)證回應(yīng)報文的前一條報文和后一條報文中的TCP確認(rèn)號(ACK)的值,計算所述后一條報文中的TCP ACK的值與所述前一條報文中的TCP ACK的值的差,該差值為所述認(rèn)證回應(yīng)報文的長度;將所述認(rèn)證回應(yīng)報文的長度與預(yù)先保存的認(rèn)證成功報文的長度或認(rèn)證失敗報文的長度進(jìn)行比較,識別該認(rèn)證回應(yīng)報文是否為認(rèn)證失敗報文,如果是,則服務(wù)器丟棄所述客戶端的連接請求。本發(fā)明能夠區(qū)分出攻擊設(shè)備和正常設(shè)備,從而防御對E-mail服務(wù)器的DDoS攻擊。
文檔編號H04L29/06GK102291378SQ20101021144
公開日2011年12月21日 申請日期2010年6月18日 優(yōu)先權(quán)日2010年6月18日
發(fā)明者孫志強(qiáng), 陳光輝 申請人:杭州華三通信技術(shù)有限公司