SYN Flood攻擊與防御方法

一、為什么Syn Flood會(huì)造成危害
這要從操作系統(tǒng)的TCP/IP協(xié)議棧的實(shí)現(xiàn)說(shuō)起。當(dāng)開放了一個(gè)TCP端口后,該端口就處于Listening狀態(tài),不停地監(jiān)視發(fā)到該端口的Syn報(bào)文,一旦接收到Client發(fā)來(lái)的Syn報(bào)文,就需要為該請(qǐng)求分配一個(gè)TCB(Transmission Control Block),通常一個(gè)TCB至少需要280個(gè)字節(jié),在某些操作系統(tǒng)中TCB甚至需要1300個(gè)字節(jié),并返回一個(gè)SYN ACK命令,立即轉(zhuǎn)為SYN-RECEIVED即半開連接狀態(tài),而某些操作系統(tǒng)在SOCK的實(shí)現(xiàn)上最多可開啟512個(gè)半開連接(如Linux2.4.20內(nèi)核)。這種過(guò)程如下圖所示:
從以上過(guò)程可以看到,如果惡意的向某個(gè)服務(wù)器端口發(fā)送大量的SYN包,則可以使服務(wù)器打開大量的半開連接,分配TCB,從而消耗大量的服務(wù)器資源,同時(shí)也使得正常的連接請(qǐng)求無(wú)法被相應(yīng)。而攻擊發(fā)起方的資源消耗相比較可忽略不計(jì)。
二、如何防御Syn Flood攻擊
我們先來(lái)看一下Syn Flood有哪些種類,如下圖所示:
1. Direct Attack 攻擊方使用固定的源地址發(fā)起攻擊,這種方法對(duì)攻擊方的消耗最小
2. Spoofing Attack 攻擊方使用變化的源地址發(fā)起攻擊,這種方法需要攻擊方不停地修改源地址,實(shí)際上消耗也不大
3. Distributed Direct Attack 這種攻擊主要是使用僵尸網(wǎng)絡(luò)進(jìn)行固定源地址的攻擊
對(duì)于第一種攻擊的防范可以使用比較簡(jiǎn)單的方法,即對(duì)SYN包進(jìn)行監(jiān)視,如果發(fā)現(xiàn)某個(gè)IP發(fā)起了較多的攻擊報(bào)文,直接將這個(gè)IP列入黑名單即可。當(dāng)然下述的方法也可以對(duì)其進(jìn)行防范。
對(duì)于源地址不停變化的攻擊使用上述方法則不行,首先從某一個(gè)被偽裝的IP過(guò)來(lái)的Syn報(bào)文可能不會(huì)太多,達(dá)不到被拒絕的閾值,其次從這個(gè)被偽裝的IP(真實(shí)的)的請(qǐng)求會(huì)被拒絕掉。因此必須使用其他的方法進(jìn)行處理。
1. 無(wú)效連接監(jiān)視釋放
這種方法不停監(jiān)視系統(tǒng)的半開連接和不活動(dòng)連接,當(dāng)達(dá)到一定閾值時(shí)拆除這些連接,從而釋放系統(tǒng)資源。這種方法對(duì)于所有的連接一視同仁,而且由于SYN Flood造成的半開連接數(shù)量很大,正常連接請(qǐng)求也被淹沒(méi)在其中被這種方式誤釋放掉,因此這種方法屬于入門級(jí)的SYN Flood方法。
2. 延緩TCB分配方法
從前面SYN Flood原理可以看到,消耗服務(wù)器資源主要是因?yàn)楫?dāng)SYN數(shù)據(jù)報(bào)文一到達(dá),系統(tǒng)立即分配TCB,從而占用了資源。而SYN Flood由于很難建立起正常連接,因此,當(dāng)正常連接建立起來(lái)后再分配TCB則可以有效地減輕服務(wù)器資源的消耗。常見(jiàn)的方法是使用Syn Cache和Syn Cookie技術(shù)。
Syn Cache技術(shù):
這種技術(shù)是在收到SYN數(shù)據(jù)報(bào)文時(shí)不急于去分配TCB,而是先回應(yīng)一個(gè)SYN ACK報(bào)文,并在一個(gè)專用HASH表(Cache)中保存這種半開連接信息,直到收到正確的回應(yīng)ACK報(bào)文再分配TCB。在FreeBSD系統(tǒng)中這種Cache每個(gè)半開連接只需使用160字節(jié),遠(yuǎn)小于TCB所需的736個(gè)字節(jié)。在發(fā)送的SYN ACK中需要使用一個(gè)己方的Sequence Number,這個(gè)數(shù)字不能被對(duì)方猜到,否則對(duì)于某些稍微智能一點(diǎn)的Syn Flood攻擊軟件來(lái)說(shuō),它們?cè)诎l(fā)送Syn報(bào)文后會(huì)發(fā)送一個(gè)ACK報(bào)文,如果己方的Sequence Number被對(duì)方猜測(cè)到,則會(huì)被其建立起真正的連接。因此一般采用一些加密算法生成難于預(yù)測(cè)的Sequence Number。
Syn Cookie技術(shù):
對(duì)于SYN攻擊,Syn Cache雖然不分配TCB,但是為了判斷后續(xù)對(duì)方發(fā)來(lái)的ACK報(bào)文中的Sequence Number的正確性,還是需要使用一些空間去保存己方生成的Sequence Number等信息,也造成了一些資源的浪費(fèi)。
Syn Cookie技術(shù)則完全不使用任何存儲(chǔ)資源,這種方法比較巧妙,它使用一種特殊的算法生成Sequence Number,這種算法考慮到了對(duì)方的IP、端口、己方IP、端口的固定信息,以及對(duì)方無(wú)法知道而己方比較固定的一些信息,如MSS、時(shí)間等,在收到對(duì)方的ACK報(bào)文后,重新計(jì)算一遍,看其是否與對(duì)方回應(yīng)報(bào)文中的(Sequence Number-1)相同,從而決定是否分配TCB資源。
3. 使用SYN Proxy防火墻
Syn Cache技術(shù)和Syn Cookie技術(shù)總的來(lái)說(shuō)是一種主機(jī)保護(hù)技術(shù),需要系統(tǒng)的TCP/IP協(xié)議棧的支持,而目前并非所有的操作系統(tǒng)支持這些技術(shù)。因此很多防火墻中都提供一種SYN代理的功能,其主要原理是對(duì)試圖穿越的SYN請(qǐng)求進(jìn)行驗(yàn)證后才放行,下圖描述了這種過(guò)程:
從上圖(左圖)中可以看出,防火墻在確認(rèn)了連接的有效性后,才向內(nèi)部的服務(wù)器(Listener)發(fā)起SYN請(qǐng)求,在右圖中,所有的無(wú)效連接均無(wú)法到達(dá)內(nèi)部的服務(wù)器。而防火墻采用的驗(yàn)證連接有效性的方法則可以是Syn Cookie或Syn Flood等其他技術(shù)。
采用這種方式進(jìn)行防范需要注意的一點(diǎn)就是防火墻需要對(duì)整個(gè)有效連接的過(guò)程發(fā)生的數(shù)據(jù)包進(jìn)行代理,如下圖所示:
因?yàn)榉阑饓Υ姘l(fā)出的SYN ACK包中使用的序列號(hào)為c,而服務(wù)器真正的回應(yīng)包中序列號(hào)為c’,這其中有一個(gè)差值|c-c’|,在每個(gè)相關(guān)數(shù)據(jù)報(bào)文經(jīng)過(guò)防火墻的時(shí)候進(jìn)行序列號(hào)的修改。
TCP Safe Reset技術(shù):
這也是防火墻Syn代理的一種方式,其工作過(guò)程如下圖所示:
這種方法在驗(yàn)證了連接之后立即發(fā)出一個(gè)Safe Reset命令包,從而使得Client重新進(jìn)行連接,這時(shí)出現(xiàn)的Syn報(bào)文防火墻就直接放行。在這種方式中,防火墻就不需要對(duì)通過(guò)防火墻的數(shù)據(jù)報(bào)文進(jìn)行序列號(hào)的修改了。這需要客戶端的TCP協(xié)議棧支持RFC 793中的相關(guān)約定,同時(shí)由于Client需要兩次握手過(guò)程,連接建立的時(shí)間將有所延長(zhǎng)。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助。
相關(guān)文章
封UDP的服務(wù)器真的打不了么?封UDP、封海外服務(wù)器
很多游戲服務(wù)器租用的時(shí)候會(huì)出現(xiàn)一些封UDP的字眼,網(wǎng)上一些文章也說(shuō)UDP協(xié)議不可靠!為什么要封UDP呢?既然不可靠,為什么有些人還要使用它呢?今天與你們分享一下UDP,希望2024-05-07魔獸世界服務(wù)器被DDoS攻擊怎么辦?DDoS攻擊防御方法
魔獸世界服務(wù)器被攻擊在目前來(lái)說(shuō)也是比較常見(jiàn)的,同行競(jìng)爭(zhēng)激烈,在官服開放時(shí)也遇到過(guò)DDOS攻擊,要是飛飛沒(méi)記錯(cuò)是在22年9月14日,從剛開始的身份驗(yàn)證服務(wù)器出現(xiàn)問(wèn)題,到確2023-07-17分享五大免費(fèi)企業(yè)網(wǎng)絡(luò)入侵檢測(cè)(IDS)工具
這篇文章主要分享一下五大免費(fèi)企業(yè)網(wǎng)絡(luò)入侵檢測(cè)(IDS)工具,當(dāng)前企業(yè)對(duì)于網(wǎng)絡(luò)安全越來(lái)越重視,那么后期可能就需要大家多多關(guān)注一些安全工具的使用于檢測(cè)2019-12-01網(wǎng)絡(luò)安全基礎(chǔ)之網(wǎng)絡(luò)協(xié)議與安全威脅的關(guān)系介紹
網(wǎng)絡(luò)協(xié)議是什么呢?網(wǎng)絡(luò)協(xié)議是網(wǎng)絡(luò)中計(jì)算機(jī)或設(shè)備之間進(jìn)行通信的一系列規(guī)則集合。本文中小編介紹的是網(wǎng)絡(luò)協(xié)議和安全威脅的關(guān)系,需要的朋友不妨閱讀本文了解一下2019-04-02DDoS攻擊原理是什么?DDoS攻擊原理及防護(hù)措施介紹
DDoS攻擊是由DoS攻擊轉(zhuǎn)化的,這項(xiàng)攻擊的原理以及表現(xiàn)形式是怎樣的呢?要如何的進(jìn)行防御呢?本文中將會(huì)有詳細(xì)的介紹,需要的朋友不妨閱讀本文進(jìn)行參考2019-01-15基于Web攻擊的方式發(fā)現(xiàn)并攻擊物聯(lián)網(wǎng)設(shè)備介紹
本文中介紹的是基于Web攻擊的方式發(fā)現(xiàn)并攻擊物聯(lián)網(wǎng)設(shè)備,感興趣的朋友不妨閱讀本文進(jìn)行了解2019-01-11為何黑客要挾制路由器DNS 用戶該怎樣實(shí)時(shí)發(fā)覺(jué)和防備方法
起首說(shuō)說(shuō)挾制路由器是什么意思,路由器挾制平日指的是,開啟了無(wú)線網(wǎng)絡(luò)功效的無(wú)線路由器,攻擊者經(jīng)由過(guò)程破解無(wú)線暗碼銜接上無(wú)線網(wǎng)后,再登錄路由治理界面來(lái)節(jié)制全部無(wú)線網(wǎng)2018-05-16大勢(shì)至共享文件監(jiān)控軟件、共享文件權(quán)限管理軟件主控端與客戶端的連接設(shè)
這篇文章主要介紹了大勢(shì)至共享文件監(jiān)控軟件、共享文件權(quán)限管理軟件主控端與客戶端的連接設(shè)置方法詳解,,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,下面就來(lái)和小編一起看看2018-01-25詳細(xì)介紹sd卡加密軟件的選擇以及給sd卡設(shè)置密碼、給sd卡加密
這篇文章主要介紹了詳細(xì)介紹sd卡加密軟件的選擇以及給sd卡設(shè)置密碼、給sd卡加密,如何保護(hù)sd卡文件的安全,如何給SD卡設(shè)置密碼、如何給SD卡加密,下面就跟小編一起來(lái)看看吧2018-01-19server2008共享設(shè)置、服務(wù)器共享文件設(shè)置、服務(wù)器設(shè)置共享文件夾的方法
這篇文章主要介紹了server2008共享設(shè)置、服務(wù)器共享文件設(shè)置、服務(wù)器設(shè)置共享文件夾的方法詳細(xì)介紹,保護(hù)服務(wù)器共享文件設(shè)置訪問(wèn)權(quán)限,讓每個(gè)部門只訪問(wèn)自己的共享文件等,2018-01-19