1. 什么是cc攻擊
攻擊者借助代理服務(wù)器生成指向受害主機(jī)的合法請(qǐng)求,實(shí)現(xiàn)DDOS和偽裝就叫:CC(Challenge Collapsar)。
主要是用來(lái)攻擊頁(yè)面的,是DDoS攻擊的一種類型,使用代理服務(wù)器向受害服務(wù)器發(fā)送大量貌似合法的請(qǐng)求

2.原理
CC攻擊的原理就是攻擊者控制某些主機(jī)不停地發(fā)大量數(shù)據(jù)包給對(duì)方服務(wù)器造成服務(wù)器資源耗盡,一直到宕機(jī)崩潰。
3. 怎么防御
1、服務(wù)器垂直擴(kuò)展和水平擴(kuò)容
資金允許的情況下,這是最簡(jiǎn)單的一種方法,本質(zhì)上講,這個(gè)方法并不是針對(duì)CC攻擊的,而是提升服務(wù)本身處理并發(fā)的能力,但確實(shí)提升了對(duì)CC攻擊的承載能力。垂直擴(kuò)展:是指增加每臺(tái)服務(wù)器的硬件能力,如升級(jí)CPU、增加內(nèi)存、升級(jí)SSD固態(tài)硬盤等。水平擴(kuò)容:是指通過(guò)增加提供服務(wù)的服務(wù)器來(lái)提升承載力。上述擴(kuò)展和擴(kuò)容可以在服務(wù)的各個(gè)層級(jí)進(jìn)行,包括:應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器和緩存服務(wù)器等等。
2、數(shù)據(jù)緩存(內(nèi)存級(jí)別,不要用文件)
對(duì)于服務(wù)中具備高度共性,多用戶可重用,或單用戶多次可重用的數(shù)據(jù),一旦從數(shù)據(jù)庫(kù)中檢索出,或通過(guò)計(jì)算得出后,最好將其放在緩存中,后續(xù)請(qǐng)求均可直接從緩存中取得數(shù)據(jù),減輕數(shù)據(jù)庫(kù)的檢索壓力和應(yīng)用服務(wù)器的計(jì)算壓力,并且能夠快速返回結(jié)果并釋放進(jìn)程,從而也能緩解服務(wù)器的內(nèi)存壓力。要注意的是,緩存不要使用文件形式,可以使用redis、mem—cached等基于內(nèi)存的nosql緩存服務(wù),并且與應(yīng)用服務(wù)器分離,單獨(dú)部署在局域網(wǎng)內(nèi)。局域網(wǎng)內(nèi)的網(wǎng)絡(luò)IO肯定比起磁盤IO要高。為了不使局域網(wǎng)成為瓶頸,千兆網(wǎng)絡(luò)也是有必要的。
3、頁(yè)面靜態(tài)化
與數(shù)據(jù)緩存一樣,頁(yè)面數(shù)據(jù)本質(zhì)上也屬于數(shù)據(jù),常見(jiàn)的手段是生成靜態(tài)化的html頁(yè)面文件,利用客戶端瀏覽器的緩存功能或者服務(wù)端的緩存服務(wù),以及CDN節(jié)點(diǎn)的緩沖服務(wù),均可以降低服務(wù)器端的數(shù)據(jù)檢索和計(jì)算壓力,快速響應(yīng)結(jié)果并釋放連接進(jìn)程。
4、用戶級(jí)別的調(diào)用頻率限制
不管服務(wù)是有登陸態(tài)還是沒(méi)登陸態(tài),基于session等方式都可以為客戶端分配唯一的識(shí)別ID(后稱作SID),服務(wù)端可以將SID存到緩存中。當(dāng)客戶端請(qǐng)求服務(wù)時(shí),如果沒(méi)有帶SID(cookie中或請(qǐng)求參數(shù)中等),則由服務(wù)端快速分配一個(gè)并返回??梢缘脑挘敬握?qǐng)求可以不返回?cái)?shù)據(jù),或者將分配SID獨(dú)立出業(yè)務(wù)服務(wù)。當(dāng)客戶端請(qǐng)求時(shí)帶了合法SID(即SID能在服務(wù)端緩存中匹配到),便可以依據(jù)SID對(duì)客戶端進(jìn)行頻率限制。而對(duì)于SID非法的請(qǐng)求,則直接拒絕服務(wù)。相比根據(jù)IP進(jìn)行的頻率限制,根據(jù)SID的頻率限制更加精準(zhǔn)可控,可最大程度地避免誤殺情況。
5、IP限制
最后,IP限制依然可以結(jié)合上述規(guī)則一起使用,但是可以將其前置至)JCb層的防火墻或負(fù)載均衡器上去做,并且可以調(diào)大限制的閾值,防止惡意訪問(wèn)穿透到應(yīng)用服務(wù)器上,造成應(yīng)用服務(wù)器壓力。
6、取消域名綁定
取消域名綁定后Web服務(wù)器的CPU能夠馬上恢復(fù)正常狀態(tài),通過(guò)IP進(jìn)行訪問(wèn)連接一切正常。但是不足之處也很明顯,取消或者更改域名對(duì)于別人的訪問(wèn)帶來(lái)了不便,另外,對(duì)于針對(duì)IP的CC攻擊它是無(wú)效的,就算更換域名攻擊者發(fā)現(xiàn)之后,攻擊者也會(huì)對(duì)新域名實(shí)施攻擊。
7、更改Web端口
一般情況下Web服務(wù)器通過(guò)80端口對(duì)外提供服務(wù),因此攻擊者實(shí)施攻擊就以默認(rèn)的80端口進(jìn)行攻擊,所以,可以修改Web端口達(dá)到防CC攻擊的目的。
8、nginx原生模塊
如果你的網(wǎng)站是使用的是Nginx做的反向代理,那么可以利用Nginx原生的limit_req模塊來(lái)針對(duì)請(qǐng)求進(jìn)行限制,(ngx_http_limit_req_module 模塊)
當(dāng)然,也可以使用tengine的limit_req模塊,對(duì)官方模塊進(jìn)行了增強(qiáng)(The Tengine Web Server
