ACK Flood攻擊是在TCP連接建立之后,所有的數(shù)據(jù)傳輸TCP報(bào)文都是帶有ACK標(biāo)志位的,主機(jī)在接收到一個(gè)帶有ACK標(biāo)志位的數(shù)據(jù)包的時(shí)候,需要檢查該數(shù)據(jù)包所表示的連接四元組是否存在,如果存在則檢查該數(shù)據(jù)包所表示的狀態(tài)是否合法,然后再向應(yīng)用層傳遞該數(shù)據(jù)包。如果在檢查中發(fā)現(xiàn)該數(shù)據(jù)包不合法,例如該數(shù)據(jù)包所指向的目的端口在本機(jī)并未開放,則主機(jī)操作系統(tǒng)協(xié)議棧會(huì)回應(yīng)RST包告訴對(duì)方此端口不存在。
這里,服務(wù)器要做兩個(gè)動(dòng)作:查表、回應(yīng)ACK/RST.這種攻擊方式顯然沒有SYN Flood給服務(wù)器帶來(lái)的沖擊大,因此攻擊者一定要用大流量ACK小包沖擊才會(huì)對(duì)服務(wù)器造成影響。按照我們對(duì)TCP協(xié)議的理解,隨機(jī)源IP的ACK小包應(yīng)該會(huì)被Server很快丟棄,因?yàn)樵诜?wù)器的TCP堆棧中沒有這些ACK包的狀態(tài)信息。但是實(shí)際上通過(guò)測(cè)試,發(fā)現(xiàn)有一些TCP服務(wù)會(huì)對(duì)ACK Flood比較敏感,比如說(shuō)JSP Server,在數(shù)量并不多的ACK小包的打擊下,JSP Server就很難處理正常的連接請(qǐng)求。對(duì)于Apache或者IIS來(lái)說(shuō),10kpps的ACK Flood不構(gòu)成危脅,但是更高數(shù)量的ACK Flood會(huì)造成服務(wù)器網(wǎng)卡中斷頻率過(guò)高,負(fù)載過(guò)重而停止響應(yīng)。可以肯定的是,ACK Flood不但可以危害路由器等網(wǎng)絡(luò)設(shè)備,而且對(duì)服務(wù)器上的應(yīng)用有不小的影響。
抓包:
如果沒有開放端口,服務(wù)器將直接丟棄,這將會(huì)耗費(fèi)服務(wù)器的CPU資源。如果端口開放,服務(wù)器回應(yīng)RST.
利用對(duì)稱性判斷來(lái)分析出是否有攻擊存在。所謂對(duì)稱型判斷,就是收包異常大于發(fā)包,因?yàn)楣粽咄ǔ?huì)采用大量ACK包,并且為了提高攻擊速度,一般采用內(nèi)容基本一致的小包發(fā)送。這可以作為判斷是否發(fā)生ACK Flood的依據(jù),但是目前已知情況來(lái)看,很少有單純使用ACK Flood攻擊,都會(huì)和其他攻擊方法混合使用,因此,很容易產(chǎn)生誤判。
一些防火墻應(yīng)對(duì)的方法是:建立一個(gè)hash表,用來(lái)存放TCP連接“狀態(tài)”,相對(duì)于主機(jī)的TCP stack實(shí)現(xiàn)來(lái)說(shuō),狀態(tài)檢查的過(guò)程相對(duì)簡(jiǎn)化。例如,不作sequence number的檢查,不作包亂序的處理,只是統(tǒng)計(jì)一定時(shí)間內(nèi)是否有ACK包在該“連接”(即四元組)上通過(guò),從而“大致”確定該“連接”是否是“活動(dòng)的
金盾防火墻在默認(rèn)的設(shè)置下就能很有效的防御此類攻擊,見下圖:
金盾防火墻的“防護(hù)參數(shù)”面板,其中的“ACK保護(hù)觸發(fā)”這個(gè)設(shè)置項(xiàng)就是專門針對(duì)此類攻擊的防御設(shè)置,默認(rèn)配置下就能很好的防御UDP Flood類型的攻擊了。可以參考:金盾軟件防火墻部分界面截圖與功能介紹
報(bào)價(jià)計(jì)算
服務(wù)熱線
售后服務(wù)
今天已有1593位獲取了等保預(yù)算
產(chǎn)品含:
長(zhǎng)河 Web應(yīng)用防火墻(WAF) 堡壘機(jī) 主機(jī)安全 SSL證書
詳情咨詢等保專家
聯(lián)系人:潘成豪
13055239889