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