ACK攻擊是什么意思?ACK攻擊怎么防御?
ACK?Flood攻擊是TCP連接建立之后,所有傳輸?shù)腡CP報(bào)文都是帶有ACK標(biāo)志位的數(shù)據(jù)包。
接收端在收到一個(gè)帶有ACK標(biāo)志位的數(shù)據(jù)包的時(shí)候,需要檢查該數(shù)據(jù)包所表示的連接四元組是否存在,如果存在則檢查該數(shù)據(jù)包所表示的狀態(tài)是否合法,然后再向應(yīng)用層傳遞該數(shù)據(jù)包。
如在檢查中發(fā)現(xiàn)數(shù)據(jù)包不合法,如所指向的目的端口未開(kāi)放,則操作系統(tǒng)協(xié)議棧會(huì)回應(yīng)RST包告訴對(duì)方此端口不存在。
當(dāng)攻擊程序每秒鐘發(fā)送ACK報(bào)文的速率達(dá)到一定的程度,才能使主機(jī)和防火墻的負(fù)載有大的變化。當(dāng)發(fā)包速率很大的時(shí)候,主機(jī)操作系統(tǒng)將耗費(fèi)大量的精力接收?qǐng)?bào)文、判斷狀態(tài),同時(shí)要主動(dòng)回應(yīng)RST報(bào)文,正常的數(shù)據(jù)包就可能無(wú)法得到及時(shí)的處理。這時(shí)候客戶端(以IE為例)的表現(xiàn)就是訪問(wèn)頁(yè)面反應(yīng)很慢,丟包率較高。這就是ACK攻擊。
此時(shí)服務(wù)器要做兩個(gè)動(dòng)作,查表和回應(yīng)ack/rst。
這種攻擊方式?jīng)]有syn flood給服務(wù)器帶來(lái)的沖擊大(因?yàn)閟yn flood占用連接),此類(lèi)攻擊一定要用大流量ack小包沖擊才會(huì)對(duì)服務(wù)器造成影響。
根據(jù)tcp協(xié)議棧原理,隨機(jī)源IP的ack小包應(yīng)該會(huì)被server很快丟棄,因?yàn)樵诜?wù)器的tcp堆棧中沒(méi)有這些ack包的狀態(tài)信息。
在實(shí)際測(cè)試中發(fā)現(xiàn)有一些tcp服務(wù)對(duì)ack flood比較敏感。
對(duì)于Apache或者IIS來(lái)說(shuō),幾十kpps的ack flood不會(huì)構(gòu)成威脅,但更高數(shù)量的ack flood沖擊會(huì)造成網(wǎng)卡中斷頻率過(guò)高負(fù)載過(guò)重而停止響應(yīng)。
jsp server在數(shù)量不多的ack小包沖擊下jsp server很難處理正常的連接請(qǐng)求。
所以ack flood不僅危害路由器等網(wǎng)絡(luò)設(shè)備,并且對(duì)服務(wù)器上的應(yīng)用也有很大的影響。
?
攻擊危害
attacker利用僵尸網(wǎng)絡(luò)發(fā)送大量的ack報(bào)文,會(huì)導(dǎo)致以下三種危害:
1、帶有超大載荷的ack flood攻擊,會(huì)導(dǎo)致鏈路擁塞。
2、攻擊報(bào)文到達(dá)服務(wù)器導(dǎo)致處理性能耗盡,從而拒絕正常服務(wù)。
3、極高速率的變?cè)醋兌丝赼ck flood攻擊,很容易導(dǎo)致依靠會(huì)話轉(zhuǎn)發(fā)的設(shè)備轉(zhuǎn)發(fā)性能降低甚至成網(wǎng)絡(luò)癱瘓。
?
防御原理
抗D設(shè)備基于目的地址對(duì)ack報(bào)文速率進(jìn)行統(tǒng)計(jì),當(dāng)ack報(bào)文速率超過(guò)閾值啟動(dòng)源認(rèn)證防御。
認(rèn)證源防御過(guò)程如圖:

說(shuō)明
1、攻擊流量達(dá)到閾值后啟動(dòng)ack防護(hù)。
2、真實(shí)的報(bào)文經(jīng)過(guò)ack重傳之后,由客戶端重新發(fā)起連接,此時(shí)會(huì)通過(guò)syn驗(yàn)證算法通過(guò)后加入白名單信任。
3、偽造的ack報(bào)文通過(guò)查詢會(huì)話表直接丟棄。