SYN Flood攻擊原理與防護(hù)
SYN Flood攻擊早在1996年就被發(fā)現(xiàn),但至今仍然顯示出強(qiáng)大的生命力。很多操作系統(tǒng),甚至防火墻、路由器都無法有效地防御這種攻擊,而且由于它可以方便地偽造源地址,追查起來非常困難。它的數(shù)據(jù)包特征通常是,源發(fā)送了大量的SYN包,并且缺少三次握手的最后一步握手ACK回復(fù)。
SYN Flood攻擊原理
例如,攻擊者首先偽造地址對服務(wù)器發(fā)起SYN請求(我可以建立連接嗎?),服務(wù)器就會回應(yīng)一個ACK+SYN(可以+請確認(rèn))。而真實(shí)的IP會認(rèn)為,我沒有發(fā)送請求,不作回應(yīng)。服務(wù)器沒有收到回應(yīng),會重試3-5次并且等待一個SYN Time(一般30秒-2分鐘)后,丟棄這個連接。
如果攻擊者大量發(fā)送這種偽造源地址的SYN請求,服務(wù)器端將會消耗非常多的資源來處理這種半連接,保存遍歷會消耗非常多的CPU時間和內(nèi)存,何況還要不斷對這個列表中的IP進(jìn)行SYN+ACK的重試。最后的結(jié)果是服務(wù)器無暇理睬正常的連接請求—拒絕服務(wù)。在服務(wù)器上用netstat –an命令查看SYN_RECV狀態(tài)的話,就可以看到:
如果我們抓包來看:ACK回應(yīng)情況
可以看到大量的SYN包沒有ACK回應(yīng)。
SYN Flood攻擊防護(hù)
目前市面上有些防火墻具有SYN Proxy功能,這種方法一般是定每秒通過指定對象(目標(biāo)地址和端口、僅目標(biāo)地址或僅源地址)的SYN片段數(shù)的閥值,當(dāng)來自相同源地址或發(fā)往相同目標(biāo)地址的SYN片段數(shù)達(dá)到這些閥值之一時,防火墻就開始截取連接請求和代理回復(fù)SYN/ACK片段,并將不完全的連接請求存儲到連接隊列中直到連接完成或請求超時。當(dāng)防火墻中代理連接的隊列被填滿時,防火墻拒絕來自相同安全區(qū)域(zone)中所有地址的新SYN片段,避免網(wǎng)絡(luò)主機(jī)遭受不完整的三次握手的攻擊。但是,這種方法在攻擊流量較大的時候,連接出現(xiàn)較大的延遲,網(wǎng)絡(luò)的負(fù)載較高,很多情況下反而成為整個網(wǎng)絡(luò)的瓶頸;?
Random Drop:隨機(jī)丟包的方式雖然可以減輕服務(wù)器的負(fù)載,但是正常連接的成功率也會降低很多;?
特征匹配:IPS上會常用的手段,在攻擊發(fā)生的當(dāng)時統(tǒng)計攻擊報文的特征,定義特征庫,例如過濾不帶TCP Options 的syn 包等;
早期攻擊工具(例如synkiller,xdos,hgod等)通常是發(fā)送64字節(jié)的TCP SYN報文,而主機(jī)操作系統(tǒng)在發(fā)起TCP連接請求時發(fā)送SYN 報文是大于64字節(jié)的。因此可以在關(guān)鍵節(jié)點(diǎn)上設(shè)置策略過濾64字節(jié)的TCP SYN報文,某些宣傳具有防護(hù)SYN Flood攻擊的產(chǎn)品就是這么做的。隨著工具的改進(jìn),發(fā)出的TCP SYN 報文完全模擬常見的通用操作系統(tǒng),并且IP頭和TCP頭的字段完全隨機(jī),這時就無法在設(shè)備上根據(jù)特定的規(guī)則來過濾攻擊報文。這時就需要根據(jù)經(jīng)驗(yàn)判斷IP 包頭里TTL值不合理的數(shù)據(jù)包并阻斷,但這種手工的方法成本高、效率低。 圖是某攻擊工具屬性設(shè)置。SYN Cookie攻擊設(shè)置。
SYN Cookie:就是給每一個請求連接的IP地址分配一個Cookie,如果短時間內(nèi)連續(xù)受到某個IP的重復(fù)SYN報文,就認(rèn)定是受到了攻擊,以后從這個IP地址來的包會被丟棄。但SYN Cookie依賴于對方使用真實(shí)的IP地址,如果攻擊者利用SOCK_RAW隨機(jī)改寫IP報文中的源地址,這個方法就沒效果了。
商業(yè)產(chǎn)品的防護(hù)算法
syn cookie/syn proxy類防護(hù)算法:這種算法對所有的syn包均主動回應(yīng),探測發(fā)起syn包的源IP地址是否真實(shí)存在;如果該IP地址真實(shí)存在,則該IP會回應(yīng)防護(hù)設(shè)備的探測包,從而建立TCP連接;大多數(shù)的國內(nèi)外抗拒絕服務(wù)產(chǎn)品采用此類算法。
safereset算法:此算法對所有的syn包均主動回應(yīng),探測包特意構(gòu)造錯誤的字段,真實(shí)存在的IP地址會發(fā)送rst包給防護(hù)設(shè)備,然后發(fā)起第2次連接,從而建立TCP連接;部分國外產(chǎn)品采用了這樣的防護(hù)算法。?
syn重傳算法:該算法利用了TCP/IP協(xié)議的重傳特性,來自某個源IP的第一個syn包到達(dá)時被直接丟棄并記錄狀態(tài),在該源IP的第2個syn包到達(dá)時進(jìn)行驗(yàn)證,然后放行。
綜合防護(hù)算法:結(jié)合了以上算法的優(yōu)點(diǎn),并引入了IP信譽(yù)機(jī)制。當(dāng)來自某個源IP的第一個syn包到達(dá)時,如果該IP的信譽(yù)值較高,則采用syncookie算法;而對于信譽(yù)值較低的源IP,則基于協(xié)議棧行為模式,如果syn包得到驗(yàn)證,則對該連接進(jìn)入syncookie校驗(yàn),一旦該IP的連接得到驗(yàn)證則提高其信譽(yù)值。有些設(shè)備還采用了表結(jié)構(gòu)來存放協(xié)議棧行為模式特征值,大大減少了存儲量。
以上就是SYN Flood攻擊原理與防護(hù)的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。