動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法和設備的制作方法
【專利摘要】本申請涉及一種動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法和設備。該方法包括:在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包;判斷該虛擬服務的地址是否受到同步泛洪攻擊;當判定該虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包;判斷同步泛洪攻擊是否停止;以及當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包。由此可以實現(xiàn)在智能監(jiān)測和防御同步泛洪攻擊的前提下最大限度地利用虛擬服務器的資源。
【專利說明】動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法和設備
【技術(shù)領(lǐng)域】
[0001]本申請涉及計算機通信領(lǐng)域,尤其涉及基于虛擬服務器的負載均衡技術(shù),更具體地涉及動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法和設備。
【背景技術(shù)】
[0002]這里的內(nèi)容盡管是在【背景技術(shù)】標題下闡述的,但是其中也包含了本發(fā)明人的發(fā)現(xiàn)和構(gòu)思,所以不應被完全視為現(xiàn)有技術(shù)。
[0003]隨著互聯(lián)網(wǎng)的迅猛發(fā)展,用戶訪問量和數(shù)據(jù)流量快速增長,計算機網(wǎng)絡的處理能力和計算強度也相應地增大,使得單一的服務器設備根本無法承擔。在這樣的情況下,如果扔掉現(xiàn)有設備去做大量的硬件升級,這樣將造成現(xiàn)有資源的浪費,而且如果再面臨下一次業(yè)務量的提升時,這又將導致再一次硬件升級的高額成本投入,甚至性能再卓越的設備也不能滿足當前業(yè)務量增長的需求。
[0004]于是出現(xiàn)了負載均衡技術(shù),將負載(用戶訪問量和數(shù)據(jù)流量)分攤到多個后端服務器上進行執(zhí)行,從而共同完成工作任務,這樣可以大大提高系統(tǒng)容量和靈活地調(diào)整系統(tǒng)容量。目前常用的負載均衡技術(shù)之一是基于虛擬服務器實現(xiàn)的,諸如LVS (Linux虛擬服務器),其中將多個后端服務器集成為一個虛擬服務器,實現(xiàn)對多個后端服務器的數(shù)據(jù)包流量轉(zhuǎn)發(fā)和負載均衡。
[0005]然而,在上述負載均衡過程中同樣受到同步泛洪攻擊的威脅。同步泛洪攻擊(SYNFlood)是一種常見的針對TCP (Transmission Control Protocol,傳輸控制協(xié)議)連接的黑客攻擊手段,其利用IPv4 (Internet Protocol version4,網(wǎng)際協(xié)議版本4)中TCP協(xié)議的三次握手過程發(fā)起攻擊。TCP協(xié)議規(guī)定,一端向另一端發(fā)起TCP連接時,需要首先發(fā)送同步(SYN)數(shù)據(jù)包到對方,對方收到后發(fā)送一個同步/確認(SYN/ACK)數(shù)據(jù)包回來,發(fā)起方再發(fā)送確認(ACK)數(shù)據(jù)包回去。這樣三次握手結(jié)束。其中在服務器端收到同步數(shù)據(jù)包時,在發(fā)送同步/確認數(shù)據(jù)包回客戶端前,服務器端會先分配好一個數(shù)據(jù)區(qū)專門服務于這個即將形成的TCP連接。一般把收到同步數(shù)據(jù)包而未收到確認數(shù)據(jù)包時的連接狀態(tài)稱為半連接狀態(tài)。
[0006]在最常見的同步泛洪攻擊中,攻擊者在短時間內(nèi)發(fā)送大量的同步數(shù)據(jù)包給服務器端。只要這些同步數(shù)據(jù)包具有不同的源地址(這一點對于攻擊者來說是很容易偽造的),根據(jù)上面的描述可知,服務器就會為每個同步數(shù)據(jù)包分配一個特定的數(shù)據(jù)區(qū)。這將給服務器系統(tǒng)造成很大的系統(tǒng)負擔,最終導致系統(tǒng)不能正常工作。
[0007]目前在基于LVS的負載均衡中,作為防御同步泛洪攻擊的一種方案,通常執(zhí)行同步代理(SYN Proxy)操作,同時配合使用全網(wǎng)絡地址轉(zhuǎn)換(Full NAT)的轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā)。
[0008]SYN Proxy是基于同步cookie (SYN cookie)機制,在服務器收到同步數(shù)據(jù)包并返回同步/確認數(shù)據(jù)包時,不分配專門的數(shù)據(jù)區(qū)供建立連接使用,而是根據(jù)同步數(shù)據(jù)包計算出一個cookie值。在收到確認數(shù)據(jù)包時,服務器再根據(jù)這個cookie值驗證數(shù)據(jù)包的合法性。如果合法,才會建立數(shù)據(jù)區(qū)來處理未來的TCP連接。
[0009]在Full NAT轉(zhuǎn)發(fā)方式中,發(fā)往LVS的數(shù)據(jù)包的源地址和目的地地址都將被替換,源地址被替換成LVS網(wǎng)卡接口上配置的本地地址,目的地地址被替換成后端服務器的地址,然后轉(zhuǎn)發(fā)給后端服務器。后端服務器應答的數(shù)據(jù)包也會發(fā)回給LVS,這時LVS再將應答數(shù)據(jù)包的源地址替換成虛擬服務的地址,并將目的地地址替換成客戶端的地址,再回傳給客戶端。
[0010]然而,在現(xiàn)有Full NAT和SYN Proxy的防御方式下,一旦配置,就會對所有的訪問數(shù)據(jù)流都生效,并且需要訪問的入流量和出流量都經(jīng)過LVS。如此,在沒有發(fā)生同步泛洪攻擊時,LVS的一部分計算資源就浪費在對正常訪問請求的多余處理上。另外,由于雙向流量都經(jīng)過LVS,LVS的諸如CPU、帶寬等的物理資源都要被雙向流量所共享,因而降低了 LVS的
吞吐量。
[0011]因此,期望一種能夠在防御同步泛洪攻擊的同時最大化地利用LVS的資源的技術(shù)。
【發(fā)明內(nèi)容】
[0012]如上所述,在目前基于LVS的負載均衡方案中,可以執(zhí)行SYN Proxy操作,同時配合采用Full NAT轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā),從而成功防御同步泛洪攻擊。但是,由于LVS會對所有新建連接都進行SYN cookie的校驗,因此,每個新建連接都會有一次多余的數(shù)據(jù)包來回(即防御操作);同時由于SYN Proxy機制的原理導致,在進行轉(zhuǎn)發(fā)之前,需要在LVS上對所有入流量和出流量的數(shù)據(jù)包做序列號的映射,也就是,需要訪問的入流量和出流量都經(jīng)過LVS才能成功防御。
[0013]顯然,當沒有發(fā)生同步泛洪攻擊時,上述操作都是沒有必要的。這樣不僅浪費了LVS的資源,而且一定程度上也影響了數(shù)據(jù)包的轉(zhuǎn)發(fā)效率。
[0014]本申請發(fā)明人注意到,目的地網(wǎng)絡地址轉(zhuǎn)換(DNAT)作為LVS能夠采用的另一種數(shù)據(jù)包轉(zhuǎn)發(fā)方式,其中只將發(fā)往LVS的數(shù)據(jù)包的目的地地址轉(zhuǎn)換成后端服務器的地址,就轉(zhuǎn)發(fā)給后端服務器,然后后端服務器應答的數(shù)據(jù)包直接返回給客戶端,而無需經(jīng)過LVS。因而,與Full NAT轉(zhuǎn)發(fā)方式相比,在DNAT轉(zhuǎn)發(fā)方式下可以提高數(shù)據(jù)包的轉(zhuǎn)發(fā)效率,并且由于在DNAT轉(zhuǎn)發(fā)方式下可以只有訪問的入流量經(jīng)過LVS,因而也可以充分利用LVS的資源。但是,在DNAT轉(zhuǎn)發(fā)方式下無法使用SYN Proxy機制防御同步泛洪攻擊。
[0015]于是,本申請發(fā)明人想到,可以只在檢測到同步泛洪攻擊時執(zhí)行SYNProxy防御操作,同時配合采用使得訪問的入流量和出流量都經(jīng)過LVS的雙向轉(zhuǎn)發(fā)方式(諸如Full NAT或NAT)進行數(shù)據(jù)包轉(zhuǎn)發(fā),而在正常情況下或者攻擊結(jié)束后不執(zhí)行或者停止執(zhí)行上述防御操作,并且切換成采用轉(zhuǎn)發(fā)效率相對較高的單向轉(zhuǎn)發(fā)方式(諸如DNAT)進行數(shù)據(jù)包轉(zhuǎn)發(fā)。這樣,可以實現(xiàn)在保證防御攻擊的前提下最大限度地利用LVS的資源。
[0016]因此,本申請的主要目的在于提供一種可以在保證防御攻擊的前提下最大限度地利用虛擬服務器的資源的技術(shù)。
[0017]根據(jù)本申請的一個方面,提供一種用于動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法,其特征在于,包括:在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,該單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器;判斷該虛擬服務的地址是否受到同步泛洪攻擊;當判定該虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包,該雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端;判斷同步泛洪攻擊是否停止;以及當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包。
[0018]根據(jù)本申請的另一方面,提供一種動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備,其特征在于,包括:單向轉(zhuǎn)發(fā)裝置,用于在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,該單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器;攻擊判斷裝置,用于判斷該虛擬服務的地址是否受到同步泛洪攻擊;防御和雙向轉(zhuǎn)發(fā)裝置,用于當判定該虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包,該雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端;攻擊停止判斷裝置,用于判斷同步泛洪攻擊是否停止;以及停止防御和恢復裝置,用于當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包。
[0019]與現(xiàn)有技術(shù)相比,根據(jù)本申請的技術(shù)方案,在虛擬服務器上引入攻擊監(jiān)測機制,在判定受到同步泛洪攻擊時執(zhí)行防御操作并配合采用雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)數(shù)據(jù)包,而在正常情況下或在判定攻擊停止后不執(zhí)行或者停止執(zhí)行防御操作并切換成采用轉(zhuǎn)發(fā)效率更高的單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)數(shù)據(jù)包,從而可以實現(xiàn)動態(tài)地切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式,進而在保證防御攻擊的前提下最大限度地利用虛擬服務器的資源。另外,這種監(jiān)測和防御的粒度可以精確到某個虛擬服務,即只對受到攻擊的虛擬服務啟動防御操作模式,而對沒有受到攻擊的虛擬服務仍然維持正常操作模式,從而能夠達到智能監(jiān)測和防御攻擊。
【專利附圖】
【附圖說明】
[0020]此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
[0021]圖1示出根據(jù)本申請一個方面的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法的流程圖;
[0022]圖2示出了根據(jù)本申請一個實施例的判斷虛擬服務地址是否受到同步泛洪攻擊的步驟的流程圖;
[0023]圖3示出了根據(jù)本申請一個實施例的防御操作的流程圖;
[0024]圖4示出了根據(jù)本申請一個實施例的判斷同步泛洪攻擊是否停止的步驟的流程圖;
[0025]圖5示出了根據(jù)本申請另一方面的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備的示意框圖;
[0026]圖6示出了根據(jù)本申請一個實施例的攻擊判斷裝置的具體示意框圖;以及
[0027]圖7示出了根據(jù)本申請一個實施例的攻擊停止判斷裝置的具體示意框圖。
【具體實施方式】[0028]本申請的主要思想在于,默認不進行對攻擊的防御,而是采用轉(zhuǎn)發(fā)效率較高的單向轉(zhuǎn)發(fā)方式進行流量轉(zhuǎn)發(fā),同時采用一定的機制去監(jiān)測攻擊的出現(xiàn),一旦監(jiān)測到攻擊出現(xiàn)就執(zhí)行防御操作并且配合切換成雙向轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā)。而在攻擊防御狀態(tài)下,監(jiān)測到攻擊已經(jīng)停止時,則恢復成單向轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā)。也就是,在虛擬服務器中引入攻擊監(jiān)測機制,使得在有攻擊時執(zhí)行防御操作并采用雙向轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā),而在沒有攻擊時或者攻擊停止后采用單向轉(zhuǎn)發(fā)方式進行數(shù)據(jù)包轉(zhuǎn)發(fā),從而實現(xiàn)動態(tài)切換數(shù)據(jù)包轉(zhuǎn)發(fā)方式,以在保證防御攻擊的前提下最大限度地利用虛擬服務器的資源。
[0029]為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,以下結(jié)合附圖及具體實施例,對本申請作進一步地詳細說明。
[0030]根據(jù)本申請一個方面的實施例,提供了一種動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法。
[0031]圖1示出根據(jù)本申請一個方面的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法的流程圖。
[0032]如圖1所示,在步驟SllO處,在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的數(shù)據(jù)包,所述單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器。
[0033]例如,在諸如手機、臺式電腦、膝上型電腦之類的客戶端上通過虛擬服務的地址(例如IP地址或MAC地址)訪問一個網(wǎng)站時,客戶端需要與該網(wǎng)站對應的該虛擬服務的地址建立TCP連接。而該網(wǎng)站由一個服務器集群維護,例如包括一個虛擬服務器和多個后端服務器(真實服務器)。在建立連接時以及建立連接后,該網(wǎng)站的虛擬服務器都起到在客戶端和后端服務器之間進行數(shù)據(jù)包轉(zhuǎn)發(fā)的作用。
[0034]在本申請的一個實施例中,例如虛擬服務器為LVS,單向轉(zhuǎn)發(fā)方式為DNAT。在默認狀態(tài)下或者在非防御狀態(tài)下,當LVS接收到來自客戶端的數(shù)據(jù)包時,可以采用DNAT方式轉(zhuǎn)發(fā)該數(shù)據(jù)包,即,只將該數(shù)據(jù)包的目的地地址(例如IP地址或MAC地址)轉(zhuǎn)換成后端服務器的地址,然后轉(zhuǎn)發(fā)到相應的后端服務器。并且后端服務器返回的數(shù)據(jù)包例如經(jīng)由服務器網(wǎng)關(guān)直接返回給客戶端,而不再經(jīng)過LVS。
[0035]這里,虛擬服務器可以有多個,并且不限于LVS,還可以為任意其它現(xiàn)有的或者未來開發(fā)的用于在客戶端和后端服務器之間轉(zhuǎn)發(fā)數(shù)據(jù)包的服務器設備。單向轉(zhuǎn)發(fā)方式并不限于DNAT,還可以為任意其它現(xiàn)有的或者未來開發(fā)的用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器的轉(zhuǎn)發(fā)方式。
[0036]在步驟S120處,判斷上述虛擬服務的地址是否受到同步泛洪攻擊。
[0037]具體而言,在非防御狀態(tài)下,虛擬服務器可以通過本領(lǐng)域已知的或者未來開發(fā)的任意合適方式來判斷某個虛擬服務的地址是否受到同步泛洪攻擊。這可以視為是虛擬服務器本身在正常狀態(tài)(諸如DNAT的單向轉(zhuǎn)發(fā)方式)下對攻擊的一種動態(tài)監(jiān)測。
[0038]圖2示出了根據(jù)本申請一個實施例的判斷虛擬服務地址是否受到同步泛洪攻擊的步驟的流程圖。
[0039]這里,虛擬服務器在接收到針對某個虛擬服務的地址的同步數(shù)據(jù)包之后已經(jīng)回復同步/確認包、在等待確認包的狀態(tài),稱為半連接狀態(tài)。虛擬服務器在接收到針對某個虛擬服務的地址的同步數(shù)據(jù)包之后已經(jīng)回復同步/確認包并且也已經(jīng)收到確認包的狀態(tài)(即完成了三次握手過程),稱為連接狀態(tài)。
[0040]本發(fā)明人注意到,在非防御狀態(tài)的正常流量下,某個虛擬服務當前處于半連接狀態(tài)的半連接數(shù)目N_synrcv_conns非常小,但在非防御狀態(tài)的攻擊流量下,半連接數(shù)目N_synrcv_conns劇增,而某個虛擬服務當前處于連接狀態(tài)的連接數(shù)目N_active_conns相對較小。因而,可以根據(jù)非防御狀態(tài)下的該半連接數(shù)目和連接數(shù)目的變化,判斷這個虛擬服務是否受到同步泛洪攻擊。下面結(jié)合圖2具體說明這個過程。
[0041]如圖2所示,在步驟S210處,獲取與所述虛擬服務的地址處于半連接狀態(tài)的半連接數(shù)目 N_synrcv_conns。
[0042]這里,虛擬服務器可以通過任意合適方式例如計數(shù)器來對與虛擬服務的地址處于半連接狀態(tài)的連接進行計數(shù)。
[0043]在步驟S220處,獲取與虛擬服務的地址已建立連接的連接數(shù)目N_active_conns。
[0044]這里,與上述虛擬服務的地址已建立連接是指與該虛擬服務的地址對應的TCP三次握手過程已經(jīng)完成??梢酝ㄟ^任意合適方式例如計數(shù)器來對當前與該虛擬服務的地址已建立的連接(即上述的活躍連接)進行計數(shù)。
[0045]在步驟S230處,根據(jù)半連接數(shù)目N_synrcv_conns和連接數(shù)目N_active_conns來判斷虛擬服務的地址是否受到同步泛洪攻擊。
[0046]正如前面提到的,可以根據(jù)非防御狀態(tài)下的上述半連接數(shù)目N_synrcv_conns和連接數(shù)目N_active_conns的變化,判斷這個虛擬服務是否受到同步泛洪攻擊。
[0047]在一個具體實施例中,在非防御狀態(tài)下,可以通過判斷半連接數(shù)目N_synrcv_conns與連接數(shù)目N_active_ conns 的比值N_synrcv_conns/N_active_conns 是否超過閾值Tl (第一閾值),來判斷虛擬服務的地址是否受到同步泛洪攻擊。
[0048]在非防御狀態(tài)下受到攻擊時,半連接數(shù)目N_synrcv_conns會劇增,連接數(shù)目N_active_conns 變化較小。例如,N_synrcv_conns/N_active_conns 可以在 IO3 量級,甚至達IO4量級。上述閾值Tl可以是根據(jù)經(jīng)驗預先設定的任意合適值,并且例如可以在IO3-1O4量級。
[0049]例如,當N_synrcv_conns/N_active_conns大于該預設閾值Tl時,可以判定虛擬服務的地址受到同步泛洪攻擊。當N_synrcv_conns/N_active_conns小于或等于該預設閾值Tl時,可以判定虛擬服務的地址沒有受到同步泛洪攻擊。
[0050]這里需要指出的是,本申請并不限于N_synrcv_conns/N_active_conns這一比值的判斷方式。例如,還可以通過連接數(shù)目與半連接數(shù)目的比值N_active_conns/N_synrcv_conns來判斷,當N_active_conns/N_synrcv_conns小于某一閾值時,判定虛擬服務的地址受到同步泛洪攻擊。另外,也可以通過其它本領(lǐng)域已知的或未來開發(fā)的任意合適方式進行上述判斷,例如可以通過單位時間內(nèi)半連接數(shù)目和連接數(shù)目的變化進行判斷,也可以只通過半連接數(shù)目的變化進行判斷,本領(lǐng)域技術(shù)人員基于這里公開的內(nèi)容能夠想到如何實施這些判斷方式,所以這里不再贅述。
[0051]由于同步泛洪攻擊的攻擊頻率很難預測,如果對于攻擊出現(xiàn)的監(jiān)測過于靈敏,可能導致由于攻擊頻率的瞬間變換而引起轉(zhuǎn)發(fā)方式的頻繁切換,比如攻擊的短暫發(fā)生可能引起不必要的轉(zhuǎn)發(fā)方式切換。
[0052]例如,在另一具體實施例中,在非防御狀態(tài)下,可以通過判斷半連接數(shù)目與連接數(shù)目的比值N_synrcv_conns/N_active_conns連續(xù)大于閾值Tl (第一閾值)的次數(shù)ml是否超過預定數(shù)目Ml (第一預定數(shù)目),來判定虛擬服務的地址是否受到同步泛洪攻擊。其中Ml可以是根據(jù)經(jīng)驗預先設定的值。[0053]當ml高于Ml時,判定虛擬服務的地址受到同步泛洪攻擊。當ml低于或等于Ml時,判定虛擬服務的地址沒有受到同步泛洪攻擊。
[0054]根據(jù)這個實施例,虛擬服務器可以在非防御狀態(tài)下更準確地判斷虛擬服務的地址是否受到同步泛洪攻擊,從而減少轉(zhuǎn)發(fā)方式的抖動。
[0055]相應地,在這樣的實施例中,例如也可以通過判斷連接數(shù)目與半連接數(shù)目的比值N_active_conns/N_synrcv_conns連續(xù)小于某一閾值的次數(shù)是否超過某一預定數(shù)目來判斷虛擬服務的地址是否受到同步泛洪攻擊。另外,也可以通過其它本領(lǐng)域已知的或未來開發(fā)的任意合適方式進行上述判斷,例如可以通過單位時間內(nèi)半連接數(shù)目和連接數(shù)目的連續(xù)變化進行判斷,也可以只通過半連接數(shù)目的連續(xù)變化進行判斷,本領(lǐng)域技術(shù)人員基于這里公開的內(nèi)容能夠想到如何實施這些判斷方式,所以這里不再贅述。
[0056]至此,通過上述步驟虛擬服務器判定出在非防御狀態(tài)下虛擬服務的地址是否受到同步泛洪攻擊。當判定虛擬服務的地址沒有受到同步泛洪攻擊時,虛擬服務器仍然按照上述步驟SllO中的正常操作模式工作。當判定虛擬服務的地址受到同步泛洪攻擊時,虛擬服務器可以切換到防御操作模式工作,以執(zhí)行防御操作并配合切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式以便成功防御攻擊。
[0057]具體而言,返回參照圖1,在步驟S130處,當判定虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端。
[0058]如上所述,在非防御狀態(tài)下,虛擬服務器按照諸如DNAT的單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的數(shù)據(jù)包。當虛擬服務器監(jiān)測到同步泛洪攻擊出現(xiàn)時,執(zhí)行諸如SYN Proxy的防御操作并配合切換成諸如Full NAT或NAT的雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的數(shù)據(jù)包。
[0059]上述防御操作可以基于本領(lǐng)域已知的SYN cookie機制,諸如SYN Proxy。圖3示出了根據(jù)本申請一個實施例的防御操作的流程圖。
[0060]如圖3所示,在步驟310處,當從客戶端接收到同步數(shù)據(jù)包時,虛擬服務器根據(jù)同步數(shù)據(jù)包的參數(shù)計算驗證碼,并向客戶端返回包含驗證碼作為序列號的同步/確認數(shù)據(jù)包。
[0061]如本領(lǐng)域已知的,可以根據(jù)接收到的同步數(shù)據(jù)包的各項信息依據(jù)特定算法來計算得到一個驗證碼(cookie值),將該驗證碼作為同步/確認數(shù)據(jù)包的序列號隨同步/確認數(shù)據(jù)包返回給客戶端。該特定算法可以是本領(lǐng)域已知的或未來開發(fā)的任意合適算法。
[0062]接下來,在步驟320處,當從客戶端接收到確認數(shù)據(jù)包時,根據(jù)確認數(shù)據(jù)包的序列號,確定是否針對該同步數(shù)據(jù)包建立客戶端與虛擬服務之間的連接。
[0063]具體來說,根據(jù)接收到的確認數(shù)據(jù)包的序列號(其應與同步/確認數(shù)據(jù)包的序列號相同,即應為上述驗證碼)依據(jù)作為上述特定算法的逆運算的算法判定該確認數(shù)據(jù)包是否合法,當合法時虛擬服務器才為該同步數(shù)據(jù)包分配數(shù)據(jù)區(qū)以建立客戶端與虛擬服務之間的連接從而處理這個連接的后續(xù)請求,否則不為其分配數(shù)據(jù)區(qū)。由此可以對攻擊進行防御和清洗。
[0064]上述防御操作不限于SYN cookie機制,而是可以為本領(lǐng)域已知的或未來開發(fā)的用于防御同步泛洪攻擊的任意合適防御操作。這里切換成雙向轉(zhuǎn)發(fā)方式也是用于配合諸如SYN cookie機制的防御操作進行的,因為如前面所提到的,這樣的防御機制導致數(shù)據(jù)包的序列號改變,因而在所有數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器之前都需要對它們進行序列號的映射,這就要求不管是入流量還是出流量的數(shù)據(jù)包都要經(jīng)過諸如LVS的虛擬服務器以便進行序列號的映射。也就是,當監(jiān)測到同步泛洪攻擊時,可以執(zhí)行任意同步泛洪攻擊防御操作并配合切換到任意適合的轉(zhuǎn)發(fā)方式。
[0065]如上在監(jiān)測到同步泛洪攻擊時,虛擬服務器執(zhí)行防御操作并配合切換數(shù)據(jù)包轉(zhuǎn)發(fā)方式之后,就一直處于防御狀態(tài)。此時由于采用經(jīng)由虛擬服務器的雙向轉(zhuǎn)發(fā)方式,所以與單向轉(zhuǎn)發(fā)方式相比,導致虛擬服務器的帶寬和CPU被兩個方向的流量瓜分,因而吞吐量和性能受到影響,在硬件成本上也有所增加。從而期望能夠在防御狀態(tài)下繼續(xù)監(jiān)測同步泛洪攻擊,并且當同步泛洪攻擊停止時可以停止防御操作并切換到單向轉(zhuǎn)發(fā)方式。
[0066]再次參照圖1,在步驟S140處,判斷同步泛洪攻擊是否停止。
[0067]具體而言,在防御狀態(tài)下,虛擬服務器可以通過本領(lǐng)域已知的或者未來開發(fā)的任意合適方式來判斷同步泛洪攻擊是否停止。
[0068]圖4示出了根據(jù)本申請一個實施例的判斷同步泛洪攻擊是否停止的步驟的流程圖。
[0069]本發(fā)明人注意到,在防御狀態(tài)的攻擊流量下,某個虛擬服務在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目N_syn_rate很高,而由于很少能夠完成TCP三次握手過程,該虛擬服務在預定時間內(nèi)的新建連接數(shù)目N_cps相對較低。而在防御狀態(tài)的正常流量下,N_syn_rate與N_cps大致相同。因此,在防御狀態(tài)下,可以根據(jù)預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目和在預定時間內(nèi)的新建連接數(shù)目的變化來判斷同步泛洪攻擊是否停止。下面結(jié)合圖4具體說明這個過程。
[0070]如圖4所示,在步驟S410處,獲取在預定時間內(nèi)接收到的針對虛擬服務的地址的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目N_syn_rate。
[0071]這里,預定時間可以為任意合適的時間段,優(yōu)選地可以為I秒鐘。
[0072]具體而言,在防御狀態(tài)下,可以通過任意合適裝置例如定時器和計數(shù)器來獲取在預定時間內(nèi)(例如每秒鐘)接收到的針對某個虛擬服務地址的同步數(shù)據(jù)包的數(shù)目N_syn_rate ο
[0073]在步驟S420處,獲取針對所述虛擬服務的地址在預定時間內(nèi)的新建連接數(shù)目N_
CPSo
[0074]這里的預定時間與步驟S410中的預定時間相同,并且可以為任意合適的時間段,優(yōu)選地可以為I秒鐘。
[0075]具體而言,在防御狀態(tài)下,可以通過任意合適裝置例如定時器和計數(shù)器來獲取針對某個虛擬服務的地址在預定時間內(nèi)(例如每秒鐘)的新建連接數(shù)目N_cps。
[0076]接下來,在步驟S430處,根據(jù)在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目N_syn_rate和在預定時間內(nèi)的新建連接數(shù)目N_cps來判斷所述同步泛洪攻擊是否停止。
[0077]正如前面提到的,在防御狀態(tài)的攻擊流量下,N_syn_rate很高,而N_cps相對較低。而在防御狀態(tài)的正常流量下,N_syn_rate與N_cps大致相同。因此,在防御狀態(tài)下,可以根據(jù)N_syn_rate和N_cps的變化來判斷同步泛洪攻擊是否停止。
[0078]在一個具體實施例中,在防御狀態(tài)下,可以通過判斷N_syn_rate與N_cps的比值N_syn_rate/N_cps是否小于閾值T2 (第二閾值),來判斷同步泛洪攻擊是否停止。
[0079]在防御狀態(tài)下攻擊停止時,在預定時間內(nèi)接收到的同步數(shù)據(jù)包的數(shù)目N_syn_rate會減少,而在預定時間內(nèi)的新建連接數(shù)目N_cps會迅速增加。例如,N_syn_rate/N_cps可能在IO3-1O4量級。上述閾值T2可以是根據(jù)經(jīng)驗預先設定的任意合適值,并且例如可以在IO3-1O4 量級。
[0080]例如,當N_syn_rate/N_cps變得小于該預設閾值T2時,可以判定同步泛洪攻擊停止。當N_rate_rate/N_cps仍然大于或等于該預設閾值T2時,可以判定同步泛洪攻擊沒有停止。
[0081]這里需要指出的是,本申請并不限于N_syn_rate/N_cps的判斷方式。例如,還可以通過N_cps/N_syn_rate來判斷,當N_cps/N_syn_rate變得大于某一閾值時,判定同步泛洪攻擊停止。另外,也可以通過其它本領(lǐng)域已知的或未來開發(fā)的任意合適方式進行上述判斷。
[0082]同樣,由于同步泛洪攻擊的攻擊頻率很難預測,如果對于攻擊消失的監(jiān)測過于靈敏,可能導致由于攻擊頻率的瞬間變換而引起轉(zhuǎn)發(fā)方式的頻繁切換,比如攻擊的短暫停止可能引起不必要的轉(zhuǎn)發(fā)方式切換。
[0083]例如,在另一具體實施例中,在防御狀態(tài)下,可以通過判斷N_syn_rate/N_cps連續(xù)小于閾值T2 (第二閾值)的次數(shù)m2是否超過預定數(shù)目M2 (第二預定數(shù)目),來判定同步泛洪攻擊是否停止。其中M2可以是根據(jù)經(jīng)驗預先設定的值。
[0084]當m2高于M2時,判定同步泛洪攻擊停止。當m2低于或等于M2時,判定同步泛洪攻擊沒有停止。
[0085]根據(jù)這個實施例,可以在防御狀態(tài)下更準確地判斷同步泛洪攻擊是否停止,從而減少轉(zhuǎn)發(fā)方式的抖動。
[0086]相應地,在這樣的實施例中,例如也可以通過N_cps/N_syn_rate連續(xù)大于某一閾值的次數(shù)是否超過某一預定數(shù)目來判斷同步泛洪攻擊是否停止。另外,也可以通過其它本領(lǐng)域已知的或未來開發(fā)的任意合適方式進行上述判斷。
[0087]至此,通過上述步驟虛擬服務器判定出在防御狀態(tài)下同步泛洪攻擊是否停止。當判定同步泛洪攻擊沒有停止時,虛擬服務器仍然按照上述步驟S130中的防御操作模式工作。當判定同步泛洪攻擊停止時,虛擬服務器可以切換到步驟SllO中的正常操作模式工作。
[0088]具體而言,再次回到圖1,在步驟S150處,當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包。
[0089]具體而言,在防御狀態(tài)下,虛擬服務器判定針對某虛擬服務的地址的同步泛洪攻擊停止后,停止防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式來將針對該虛擬服務的地址的數(shù)據(jù)包轉(zhuǎn)發(fā)到后端服務器。
[0090]如上所述,通過在非防御狀態(tài)下監(jiān)測攻擊的出現(xiàn)以及在防御狀態(tài)下監(jiān)測攻擊的消失,動態(tài)地切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式,從而實現(xiàn)了在保證防御攻擊的前提下最大限度地利用虛擬服務器(諸如LVS)的資源。另外,這種監(jiān)測和防御的粒度可以精確到某個虛擬服務,即只對受到攻擊的虛擬服務啟動防御操作模式,而對沒有受到攻擊的虛擬服務仍然維持正常操作模式,從而能夠達到智能監(jiān)測和防御攻擊。
[0091]與上述動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法類似,本申請實施例還提供了相應的設備。
[0092]圖5示出了根據(jù)本申請另一方面的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備500的示意框圖。
[0093]如圖5所述,根據(jù)本申請一個實施例的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備500可以包括:單向轉(zhuǎn)發(fā)裝置510、攻擊判斷裝置520、防御和雙向轉(zhuǎn)發(fā)裝置530、攻擊停止判斷裝置540以及停止防御和恢復裝置550。
[0094]具體來說,單向轉(zhuǎn)發(fā)裝置510可以用于在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,該單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器。攻擊判斷裝置520可以用于判斷該虛擬服務的地址是否受到同步泛洪攻擊。防御和雙向轉(zhuǎn)發(fā)裝置530可以用于當判定該虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包,該雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端。攻擊停止判斷裝置540可以用于判斷同步泛洪攻擊是否停止。停止防御和恢復裝置550可以用于當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對該虛擬服務的地址的數(shù)據(jù)包。
[0095]圖6示出了根據(jù)本申請一個實施例的攻擊判斷裝置600的具體示意框圖。如圖6所示,攻擊判斷裝置600可以包括:第一數(shù)目獲取單元610、第二數(shù)目獲取單元620和攻擊判斷單元630。
[0096]更具體而言,第一數(shù)目獲取單元610可以用于獲取與該虛擬服務的地址處于半連接狀態(tài)的半連接數(shù)目。第二數(shù)目獲取單元620可以用于獲取與該虛擬服務的地址已建立連接的連接數(shù)目。攻擊判斷單元630可以用于根據(jù)半連接數(shù)目和連接數(shù)目來判斷虛擬服務的地址是否受到同步泛洪攻擊。
[0097]圖7示出了根據(jù)本申請一個實施例的攻擊停止判斷裝置700的具體示意框圖。如圖7所示,攻擊停止判斷裝置700可以包括:第三數(shù)目獲取單元710、第四數(shù)目獲取單元720和攻擊停止判斷單元730。
[0098]更具體而言,第三數(shù)目獲取單元710可以用于獲取在預定時間內(nèi)接收到的針對某虛擬服務的地址的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目。第四數(shù)目獲取單元720可以用于獲取針對該虛擬服務的地址在預定時間內(nèi)的新建連接數(shù)目。攻擊停止判斷單元730可以用于根據(jù)在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目和在預定時間內(nèi)的新建連接數(shù)目來判斷同步泛洪攻擊是否停止。
[0099]同樣,通過上述的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備,可以實現(xiàn)在智能監(jiān)測和防御同步泛洪攻擊的前提下最大限度地利用虛擬服務器(諸如LVS)的資源。
[0100]以上描述的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備與之前描述的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法的處理是對應的,因此,關(guān)于更詳細的技術(shù)細節(jié),可以參見之前描述的動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法,這里不再贅述。
[0101]本領(lǐng)域技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
[0102]以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權(quán)利要求范圍之內(nèi)。
【權(quán)利要求】
1.一種動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的方法,其特征在于,包括: 在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,所述單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器; 判斷所述虛擬服務的地址是否受到同步泛洪攻擊; 當判定所述虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包,所述雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端; 判斷同步泛洪攻擊是否停止;以及 當判定同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照所述單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷虛擬服務的地址是否受到同步泛洪攻擊的步驟包括: 獲取與所述虛擬服務的地址處于半連接狀態(tài)的半連接數(shù)目; 獲取與所述虛擬服務的地址已建立連接的連接數(shù)目;以及 根據(jù)所述半連接數(shù)目和所述連接數(shù)目來判斷所述虛擬服務的地址是否受到同步泛洪攻擊。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述根據(jù)所述半連接數(shù)目和所述連接數(shù)目來判斷所述虛擬服務的地址是否受到同步泛洪攻擊的步驟包括: 當所述半連接數(shù)目與所述連接數(shù)目的比值大于第一閾值時,判定所述虛擬服務的地址受到同步泛洪攻擊。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,當所述半連接數(shù)目與連接數(shù)目的比值連續(xù)大于第一閾值的次數(shù)超過第一預定數(shù)目時,判定所述虛擬服務的地址受到同步泛洪攻擊。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷同步泛洪攻擊是否停止的步驟包括: 獲取在預定時間內(nèi)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目; 獲取針對所述虛擬服務的地址在預定時間內(nèi)的新建連接數(shù)目;以及根據(jù)在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目和在預定時間內(nèi)的新建連接數(shù)目來判斷所述同步泛洪攻擊是否停止。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述根據(jù)在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目和在預定時間內(nèi)的新建連接數(shù)目來判斷所述同步泛洪攻擊是否停止的步驟包括: 當在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目與在預定時間內(nèi)的新建連接數(shù)目的比值小于第二閾值時,判定所述同步泛洪攻擊停止。
7.根據(jù)權(quán)利要求5所述的方法,其特征在于,當在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目與在預定時間內(nèi)的新建連接數(shù)目的比值連續(xù)小于第二閾值的次數(shù)超過第二預定數(shù)目時,判定所述同步泛洪攻擊停止。
8.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述防御操作包括: 當從客戶端接收到同步數(shù)據(jù)包時,虛擬服務器根據(jù)所述同步數(shù)據(jù)包的參數(shù)計算驗證碼,并向客戶端返回包含所述驗證碼作為序列號的同步/確認數(shù)據(jù)包;以及 當從客戶端接收到確認數(shù)據(jù)包時,根據(jù)所述確認數(shù)據(jù)包的序列號,確定是否針對所述同步數(shù)據(jù)包建立客戶端與虛擬服務之間的連接。
9.一種動態(tài)切換數(shù)據(jù)包的轉(zhuǎn)發(fā)方式的設備,其特征在于,包括: 單向轉(zhuǎn)發(fā)裝置,用于在虛擬服務器上按照單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對虛擬服務的地址的數(shù)據(jù)包,所述單向轉(zhuǎn)發(fā)方式用于只將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器;攻擊判斷裝置,用于判斷所述虛擬服務的地址是否受到同步泛洪攻擊; 防御和雙向轉(zhuǎn)發(fā)裝置,用于當判定所述虛擬服務的地址受到同步泛洪攻擊時,在虛擬服務器上執(zhí)行用于防御同步泛洪攻擊的防御操作,并按照雙向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包,所述雙向轉(zhuǎn)發(fā)方式用于將來自客戶端的數(shù)據(jù)包轉(zhuǎn)發(fā)給后端服務器并將來自后端服務器的數(shù)據(jù)包轉(zhuǎn)發(fā)給客戶端; 攻擊停止判斷裝置,用于判斷所述同步泛洪攻擊是否停止;以及停止防御和恢復裝置,用于當判定所述同步泛洪攻擊停止時,在虛擬服務器上停止執(zhí)行防御操作并且恢復成按照所述單向轉(zhuǎn)發(fā)方式轉(zhuǎn)發(fā)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包。
10.根據(jù)權(quán)利要求9所述的設備,其特征在于,所述攻擊判斷裝置包括: 第一數(shù)目獲取單元,用于獲取與所述虛擬服務的地址處于半連接狀態(tài)的半連接數(shù)目;第二數(shù)目獲取單元,用于獲取與所述虛擬服務的地址已建立連接的連接數(shù)目;以及攻擊判斷單元,用于根據(jù)所述半連接數(shù)目和所述連接數(shù)目來判斷虛擬服務的地址是否受到同步泛洪攻擊。
11.根據(jù)權(quán)利要求10所述的設備,其特征在于,當所述半連接數(shù)目與所述連接數(shù)目的比值大于第一閾值時,所述攻擊判斷單元判定所述虛擬服務的地址受到同步泛洪攻擊。
12.根據(jù)權(quán)利要求10所述的設備,其特征在于,當所述半連接數(shù)目與連接數(shù)目的比值連續(xù)大于第一閾值的次數(shù)超過第一預定數(shù)目時,所述攻擊判斷單元判定所述虛擬服務的地址受到同步泛洪攻擊。
13.根據(jù)權(quán)利要求9所述的設備,其特征在于,所述攻擊停止判斷裝置包括: 第三數(shù)目獲取單元,用于獲取在預定時間內(nèi)接收到的針對所述虛擬服務的地址的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目; 第四數(shù)目獲取單元,用于獲取針對所述虛擬服務的地址在預定時間內(nèi)的新建連接數(shù)目;以及 攻擊停止判斷單元,用于根據(jù)在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目和在預定時間內(nèi)的新建連接數(shù)目來判斷所述同步泛洪攻擊是否停止。
14.根據(jù)權(quán)利要求13所述的設備,其特征在于,當在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目與在預定時間內(nèi)的新建連接數(shù)目的比值小于第二閾值時,所述攻擊停止判斷單元判定所述同步泛洪攻擊停止。
15.根據(jù)權(quán)利要求13所述的設備,其特征在于,當在預定時間內(nèi)接收到的數(shù)據(jù)包中的同步數(shù)據(jù)包的數(shù)目與在預定時間內(nèi)的新建連接數(shù)目的比值連續(xù)小于第二閾值的次數(shù)超過第二預定數(shù)目時,所述攻擊停止判斷單元判定所述同步泛洪攻擊停止。
16.根據(jù)權(quán)利要求9所述的設備,其特征在于,所述防御操作包括: 當從客戶端接收到同步數(shù)據(jù)包時,虛擬服務器根據(jù)所述同步數(shù)據(jù)包的參數(shù)計算驗證碼,并向客戶端返回包含所述驗證碼作為序列號的同步/確認數(shù)據(jù)包;以及 當從客戶端接收到確認數(shù)據(jù)包時,根據(jù)所述確認數(shù)據(jù)包的序列號,確定是否針對所述同步數(shù)據(jù)包建立 客戶端與虛擬服務之間的連接。
【文檔編號】H04L12/803GK103973584SQ201310048043
【公開日】2014年8月6日 申請日期:2013年2月6日 優(yōu)先權(quán)日:2013年2月6日
【發(fā)明者】王倩, 唐猛, 陳波, 程文平 申請人:阿里巴巴集團控股有限公司