詳解TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題
詳解TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題
TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題,也介紹到企業(yè)網(wǎng)絡(luò)安全管理人員在面臨問題時所能采取的應(yīng)對措施。下面是學(xué)習(xí)啦小編收集整理的詳解TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題,希望對大家有幫助~~
詳解TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題
1. IP欺騙
IP Spoof即IP 電子欺騙,可以理解為一臺主機設(shè)備冒充另外一臺主機的IP地址與其他設(shè)備通信,從而達(dá)到某種目的技術(shù)。早在1985年,貝爾實驗室的一名工程師Robbert Morris在他的一篇文章“A weakness in the 4.2bsd UNIX TCP/IP software”中提出了IP Spoof的概念,有興趣的讀者可參見原文:http://www.coast.net/~emv/tubed/archives/Morris_weakness_in_ TCPIP.txt 。
但要注意:單純憑借IP Spoof技術(shù)不可能很好地完成一次完整的攻擊,因為現(xiàn)有IP Spoof技術(shù)是屬于一種“盲人”式的入侵手段。
一般來說,IP欺騙攻擊有6個步驟:
(1)首先使被信任主機的網(wǎng)絡(luò)暫時癱瘓,以免對攻擊造成干擾;
(2)然后連接到目標(biāo)機的某個端口來猜測ISN基值和增加規(guī)律;
(3)接下來把源地址偽裝成被信任主機,發(fā)送帶有SYN標(biāo)志的數(shù)據(jù)段請求連接;
(4)然后等待目標(biāo)機發(fā)送SYN+ACK包給已經(jīng)癱瘓的主機;
(5)最后再次偽裝成被信任主機向目標(biāo)機發(fā)送的ACK,此時發(fā)送的數(shù)據(jù)段帶有預(yù)測的目標(biāo)機的ISN+1;
(6)連接建立,發(fā)送命令請求。
下面是它的兩個關(guān)鍵步驟:
(1)使被信任主機失去工作能力
為了偽裝成被信任主機而不露餡,需要使其完全失去工作能力。由于攻擊者將要代替真正的被信任主機,他必須確保真正的被信任主機不能收到任何有效的網(wǎng)絡(luò)數(shù)據(jù),否則將會被揭穿。有許多方法可以達(dá)到這個目的(如SYN洪水攻擊、Land等攻擊)。
(2)序列號取樣和猜測
對目標(biāo)主機進(jìn)行攻擊,必須知道目標(biāo)主機的數(shù)據(jù)包序列號。通常如何進(jìn)行預(yù)測呢?往往先與被攻擊主機的一個端口(如25端口)建立起正常連接。通常,這個過程被重復(fù)N次,并將目標(biāo)主機最后所發(fā)送的ISN存儲起來。然后還需要估計他的主機與被信任主機之間的往返時間,這個時間是通過多次統(tǒng)計平均計算出來的。如果往返連接增加64,000,則現(xiàn)就可以估計出ISN的大小是128,000乘以往返時間的一半,如果此時目標(biāo)主機剛剛建立過一個連接,那么再加上64,00。一旦估計出ISN的大小,就開始著手進(jìn)行攻擊,當(dāng)然你的虛假TCP數(shù)據(jù)包進(jìn)入目標(biāo)主機時,如果剛才估計的序列號是準(zhǔn)確的,進(jìn)入的數(shù)據(jù)將被放置在目標(biāo)機的緩沖區(qū)中。
但是在實際攻擊過程中往往沒這么幸運,如果估計的序列號小于正確值,那么將被放棄。而如果估計的序列號大于正確值,并且在緩沖區(qū)的大小之內(nèi),那么該數(shù)據(jù)被認(rèn)為是一個未來的數(shù)據(jù),TCP模塊將等待其他缺少的數(shù)據(jù)。如果估計序列號大于期待的數(shù)字且不在緩沖區(qū)之內(nèi),TCP將會放棄它并返回一個期望獲得的數(shù)據(jù)序列號。偽裝成被信任的主機IP后,此時該主機仍然處在癱瘓狀態(tài),然后向目標(biāo)主機的被攻擊端口(如25)發(fā)送連接請求。目標(biāo)主機立刻對連接請求作出反應(yīng),發(fā)更新SYN+ACK確認(rèn)包給被信任主機,因為此時被信任主機仍然處于癱瘓狀態(tài),它當(dāng)然無法收到這個包,緊接著攻擊者向目標(biāo)主機發(fā)送ACK數(shù)據(jù)包,該數(shù)據(jù)包使用前面估計的序列號加1。如果攻擊者估計正確的話,目標(biāo)主機將會接收該ACK。連接就正式建立起了,可以開始數(shù)據(jù)傳輸了。
對于來自網(wǎng)絡(luò)外部的欺騙,防范的方法很簡單,只需要在局域網(wǎng)的對外路由器上加一個限制設(shè)置就可以實現(xiàn)了,在路由器的設(shè)置里面禁止運行聲稱來自于網(wǎng)絡(luò)內(nèi)部的信息包。
對于來自局域網(wǎng)外部的IP欺騙攻擊的防范則可以使用防火墻進(jìn)行防范,但是對于來自內(nèi)部的攻擊通過設(shè)置防火墻則起不到什么作用,這個時候應(yīng)該注意內(nèi)部網(wǎng)的路由器是否支持內(nèi)部接口。如果路由器支持內(nèi)部網(wǎng)絡(luò)子網(wǎng)的兩個接口,則必須提高警惕,因為它很容易受到IP欺騙。
通過對信息包的監(jiān)控來檢查IP欺騙攻擊將是非常有效的方法,使用netlog等信息包檢查工具對信息的源地址和目的地址進(jìn)行驗證,如果發(fā)現(xiàn)了信息包來自兩個以上的不同地址,則說明系統(tǒng)有可能受到了IP欺騙攻擊,防火墻外面正有黑客試圖入侵系統(tǒng)。
2. SYN Flooding
SYN Flooding是最為有效和流行的一種DoS攻擊形式。它利用TCP三次握手協(xié)議的缺陷,向目標(biāo)主機發(fā)送大量的偽造源地址的SYN連接請求,消耗目標(biāo)主機的資源,從而不能夠為正常用戶提供服務(wù)。
在TCP會話初期,有所謂的“三次握手”過程:對每次發(fā)送的數(shù)據(jù)量是怎樣跟蹤進(jìn)行協(xié)商使數(shù)據(jù)段的發(fā)送和接收同步,根據(jù)所接收到的數(shù)據(jù)量而確定的數(shù)據(jù)確認(rèn)數(shù)及數(shù)據(jù)發(fā)送、接收完畢后何時撤消聯(lián)系,并建立虛連接。為了提供可靠的傳送,TCP在發(fā)送新的數(shù)據(jù)之前,以特定的順序?qū)?shù)據(jù)包進(jìn)行編號,并需要等待這些包傳送給目標(biāo)機之后的確認(rèn)消息。TCP總是用來發(fā)送大批量的數(shù)據(jù)。當(dāng)應(yīng)用程序在收到數(shù)據(jù)后要做出確認(rèn)時也要用到TCP。由于TCP要時刻跟蹤,這需要額外開銷,使得TCP的格式有些顯得復(fù)雜。
TCP三次握手的步驟如下:
(1)設(shè)主機A要與主機B通信,要建立一個TCP連接。首先,主機B(在這兒是服務(wù)器),必須先運行一個服務(wù)器進(jìn)程,發(fā)出一個“被動找開”命令給TCP。之后服務(wù)器進(jìn)程便不斷探測端口,看是否有客戶進(jìn)程有連接請求。并處于“聽”狀態(tài)??蛻舳酥鳈CA的應(yīng)用進(jìn)程,向其TCP發(fā)“主動打開”命令,指明要與某個IP地址的某個端口建立TCP連接。第一次主機A的TCP便向主機B的TCP發(fā)出連接請求報文。TCP報文中指明了要連接的IP地址(隱含TP數(shù)據(jù)報指明)和端口號,設(shè)置能夠接受的TCP數(shù)據(jù)段最大值,以及一些用戶數(shù)據(jù),SYN=1,ACK=0。這稱為“第一次握手”。
(2)主機A的連接請求到達(dá)主機B后,主機B的TCP查看是否有進(jìn)程在偵聽該端口,如沒有,就發(fā)送一個RST=1的應(yīng)答,拒絕連接,否則將到達(dá)TCP數(shù)據(jù)段留給“偵聽”進(jìn)程。“偵聽”進(jìn)程將發(fā)回一個應(yīng)答TCP報文段,其中SYN=1,ACK=1,確認(rèn)序號ACKSEQ=X+1,同時自己選一個發(fā)送序號SEQ=Y。這是“第二次握手”。
(3)主機A收到主機B的確認(rèn)報文后,再向主機B發(fā)出一個確認(rèn)TCP報文段,其中SYN=1,ACK=1,SEQ=X+1,ACKSEQ=Y+1,這就完成了“第三次握手”。
在SYN Flooding攻擊中,黑客機器向受害主機發(fā)送大量偽造源地址的TCP SYN報文,受害主機分配必要的資源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包,如圖1所示。由于源地址是偽造的,所以源端永遠(yuǎn)都不會返回ACK報文,受害主機繼續(xù)發(fā)送SYN+ACK包,并將半連接放入端口的積壓隊列中,雖然一般的主機都有超時機制和默認(rèn)的重傳次數(shù),但是由于端口的半連接隊列的長度是有限的,如果不斷地向受害主機發(fā)送大量的TCP SYN報文,半連接隊列就會很快填滿,服務(wù)器拒絕新的連接,將導(dǎo)致該端口無法響應(yīng)其他機器進(jìn)行的連接請求,最終使受害主機的資源耗盡。
圖1 SYN Flooding攻擊示意圖
目前在防御SYN Flooding攻擊方面有2種比較有效的技術(shù)。
(1)SYN-cookie技術(shù)
一般情況下,當(dāng)服務(wù)器收到一個TCP SYN報文后,馬上為該連接請求分配緩沖區(qū),然后返回一個SYN+ACK報文,這時形成一個半連接。SYN Flooding正是利用了這一點,發(fā)送大量的偽造源地址的SYN連接請求,而不完成連接。這樣就大量地消耗服務(wù)器的資源。
SYN-cookie技術(shù)針對標(biāo)準(zhǔn)TCP連接建立過程資源分配上的這一缺陷,改變了資源分配的策略。當(dāng)服務(wù)器收到一個SYN報文后,不立即分配緩沖區(qū),而是利用連接的信息生成一個cookie,并將這個cookie作為將要返回的SYN+ACK報文的初始序列號。當(dāng)客戶端返回一個ACK報文時,根據(jù)包頭信息計算cookie,與返回的確認(rèn)序列號(初始的序列號+1)的前24位進(jìn)行對比,如果相同,則是一個正常連接,然后,分配資源,建立連接。
該技術(shù)的巧妙之點在于避免了在連接信息未完全到達(dá)前進(jìn)行資源分配,使SYN Flooding攻擊的資源消耗失效。實現(xiàn)的關(guān)鍵之處在于cookie的計算。cookie的計算應(yīng)該做到包含本次連接的狀態(tài)信息,使攻擊者不能偽造cookie。cookie的計算過程如下。
?、?服務(wù)器收到一個SYN包后,計算一個消息摘要mac:
mac = MAC(A,k)
MAC是密碼學(xué)中的一個消息認(rèn)證碼函數(shù),也就是滿足某種安全性質(zhì)的帶密鑰的hash函數(shù),它能夠提供cookie計算中需要的安全性。A為客戶和服務(wù)器雙方的IP地址和端口號以及參數(shù)t的串聯(lián)組合:A = SOURCE_IP || SOURCE_PORT || DST_IP || DST_PORT || t;K為服務(wù)器獨有的密鑰;時間參數(shù)t為32比特長的時間計數(shù)器,每64秒加1;
?、?生成cookie:
cookie = mac(0:24):表示取mac值的第0到24比特位;
?、?設(shè)置將要返回的SYN+ACK報文的初始序列號,設(shè)置過程如下:
· 高24位用cookie代替;
· 接下來的3比特位用客戶要求的最大報文長度MMS代替;
· 最后5比特位為t mod 32。
客戶端收到來自服務(wù)器SYN+ACK報文后,返回一個ACK報文,這個ACK報文將帶一個cookie(確認(rèn)號為服務(wù)器發(fā)送過來的SYN ACK報文的初始序列號加1,所以不影響高24位),在服務(wù)器端重新計算cookie,與確認(rèn)號的前24位比較,如果相同,則說明未被修改,連接合法,然后,服務(wù)器完成連接的建立過程。
SYN-cookie技術(shù)由于在連接建立過程中不需要在服務(wù)器端保存任何信息,實現(xiàn)了無狀態(tài)的三次握手,從而有效地防御了SYN Flooding攻擊。但是該方法也存在一些弱點。由于cookie的計算只涉及了包頭的部分信息,在連接建立過程中不在服務(wù)器端保存任何信息,所以失去了協(xié)議的許多功能,比如超時重傳。此外,由于計算cookie有一定的運算量,增加了連接建立的延遲時間,因此,SYN-cookie技術(shù)不能作為高性能服務(wù)器的防御手段。通常采用動態(tài)資源分配機制,即分配了一定的資源后再采用cookie技術(shù),Linux系統(tǒng)中的SYN-cookie就是這樣實現(xiàn)的。還有一個問題是,當(dāng)我們避免了SYN Flooding攻擊的同時,也提供了另一種拒絕服務(wù)攻擊方式,攻擊者發(fā)送大量的ACK報文,使服務(wù)器忙于計算驗證。盡管如此,在預(yù)防SYN Flooding攻擊方面,SYN-cookie技術(shù)仍然是一種有效的技術(shù)。
(2)地址狀態(tài)監(jiān)控的解決方法
地址狀態(tài)監(jiān)控的解決方法是利用監(jiān)控工具對網(wǎng)絡(luò)中的有關(guān)TCP連接的數(shù)據(jù)包進(jìn)行監(jiān)控,并對監(jiān)聽到的數(shù)據(jù)包進(jìn)行處理。處理的主要依據(jù)是連接請求的源地址。
每個源地址都有一個狀態(tài)與之對應(yīng),總共有四種狀態(tài):
· 初態(tài):任何源地址剛開始的狀態(tài);
· NEW狀態(tài):第一次出現(xiàn)或出現(xiàn)多次也不能斷定存在的源地址的狀態(tài);
· GOOD狀態(tài):斷定存在的源地址所處的狀態(tài);
· BAD狀態(tài):源地址不存在或不可達(dá)時所處的狀態(tài)。
具體的動作和狀態(tài)轉(zhuǎn)換根據(jù)TCP頭中的位碼值決定。
?、?監(jiān)聽到SYN包,如果源地址是第一次出現(xiàn),則置該源地址的狀態(tài)為NEW狀態(tài);如果是NEW狀態(tài)或BAD狀態(tài);則將該包的RST位置1然后重新發(fā)出去,如果是GOOD狀態(tài)不作任何處理。
② 監(jiān)聽到ACK或RST包,如果源地址的狀態(tài)為NEW狀態(tài),則轉(zhuǎn)為GOOD狀態(tài);如果是GOOD狀態(tài)則不變;如果是BAD狀態(tài)則轉(zhuǎn)為NEW狀態(tài);如果是BAD狀態(tài)則轉(zhuǎn)為NEW狀態(tài)。
?、?監(jiān)聽到從服務(wù)器來的SYN ACK報文(目的地址為addr),表明服務(wù)器已經(jīng)為從addr發(fā)來的連接請求建立了一個半連接,為防止建立的半連接過多,向服務(wù)器發(fā)送一個ACK包,建立連接,同時,開始計時,如果超時,還未收到ACK報文,證明addr不可達(dá),如果此時addr的狀態(tài)為GOOD則轉(zhuǎn)為NEW狀態(tài);如果addr的狀態(tài)為NEW狀態(tài)則轉(zhuǎn)為BAD狀態(tài);如果為addr的狀態(tài)為BAD狀態(tài)則不變。
地址狀態(tài)的轉(zhuǎn)換圖如圖2所示。
圖2 地址狀態(tài)轉(zhuǎn)換圖
下面分析一下基于地址狀態(tài)監(jiān)控的方法如何能夠防御SYN Flooding攻擊。
對于一個偽造源地址的SYN報文,若源地址第一次出現(xiàn),則源地址的狀態(tài)為NEW狀態(tài),當(dāng)監(jiān)聽到服務(wù)器的SYN+ACK報文,表明服務(wù)器已經(jīng)為該源地址的連接請求建立了半連接。此時,監(jiān)控程序代源地址發(fā)送一個ACK報文完成連接。這樣,半連接隊列中的半連接數(shù)不是很多。計時器開始計時,由于源地址是偽造的,所以不會收到ACK報文,超時后,監(jiān)控程序發(fā)送RST數(shù)據(jù)包,服務(wù)器釋放該連接,該源地址的狀態(tài)轉(zhuǎn)為BAD狀態(tài)。之后,對于每一個來自該源地址的SYN報文,監(jiān)控程序都會主動發(fā)送一個RST報文。
對于一個合法的SYN報文,若源地址第一次出現(xiàn),則源地址的狀態(tài)為NEW狀態(tài),服務(wù)器響應(yīng)請求,發(fā)送SYN+ACK報文,監(jiān)控程序發(fā)送ACK報文,連接建立完畢。之后,來自客戶端的ACK很快會到達(dá),該源地址的狀態(tài)轉(zhuǎn)為GOOD狀態(tài)。服務(wù)器可以很好地處理重復(fù)到達(dá)的ACK包。
3. ACK Flooding
ACK Flooding攻擊是在TCP連接建立之后,所有的數(shù)據(jù)傳輸TCP報文都是帶有ACK標(biāo)志位的,主機在接收到一個帶有ACK標(biāo)志位的數(shù)據(jù)包的時候,需要檢查該數(shù)據(jù)包所表示的連接四元組是否存在,如果存在則檢查該數(shù)據(jù)包所表示的狀態(tài)是否合法,然后再向應(yīng)用層傳遞該數(shù)據(jù)包。如果在檢查中發(fā)現(xiàn)該數(shù)據(jù)包不合法,例如該數(shù)據(jù)包所指向的目的端口在本機并未開放,則主機操作系統(tǒng)協(xié)議棧會回應(yīng)RST包告訴對方此端口不存在。
這里,服務(wù)器要做兩個動作:查表、回應(yīng)ACK/RST。這種攻擊方式顯然沒有SYN Flooding給服務(wù)器帶來的沖擊大,因此攻擊者一定要用大流量ACK小包沖擊才會對服務(wù)器造成影響。按照我們對TCP協(xié)議的理解,隨機源IP的ACK小包應(yīng)該會被Server很快丟棄,因為在服務(wù)器的TCP堆棧中沒有這些ACK包的狀態(tài)信息。但是實際上通過測試,發(fā)現(xiàn)有一些TCP服務(wù)會對ACK Flooding比較敏感,比如說JSP Server,在數(shù)量并不多的ACK小包的打擊下,JSP Server就很難處理正常的連接請求。對于Apache或者IIS來說,10kbps的ACK Flooding不會構(gòu)成危脅,但是更高數(shù)量的ACK Flooding會造成服務(wù)器網(wǎng)卡中斷頻率過高,負(fù)載過重而停止響應(yīng)。可以肯定的是,ACK Flooding不但可以危害路由器等網(wǎng)絡(luò)設(shè)備,而且對服務(wù)器上的應(yīng)用有不小的影響。
如果沒有開放端口,服務(wù)器將直接丟棄,這將會耗費服務(wù)器的CPU資源。如果端口開放,服務(wù)器回應(yīng)RST。
利用對稱性判斷來分析出是否有攻擊存在。所謂對稱性判斷,就是收包異常大于發(fā)包,因為攻擊者通常會采用大量ACK包,并且為了提高攻擊速度,一般采用內(nèi)容基本一致的小包發(fā)送。這可以作為判斷是否發(fā)生ACK Flooding的依據(jù),但是目前已知情況來看,很少有單純使用ACK Flooding攻擊,通常都會和其他攻擊方法混合使用,因此,很容易產(chǎn)生誤判。
一些防火墻應(yīng)對的方法是:建立一個hash表,用來存放TCP連接“狀態(tài)”,相對于主機的TCP協(xié)議棧實現(xiàn)來說,狀態(tài)檢查的過程相對簡化。例如,不作sequence number的檢查,不作包亂序的處理,只是統(tǒng)計一定時間內(nèi)是否有ACK包在該“連接”(即四元組)上通過,從而“大致”確定該“連接”是否是“活動的”。
4. UDP Flooding
UDP Flooding是日漸猖厥的流量型DoS攻擊,原理也很簡單。常見的情況是利用大量UDP小包沖擊DNS服務(wù)器,或Radius認(rèn)證服務(wù)器、流媒體視頻服務(wù)器。100kbps的UDP Flooding經(jīng)常將線路上的骨干設(shè)備例如防火墻打癱,造成整個網(wǎng)段的癱瘓。由于UDP協(xié)議是一種無連接的服務(wù),在UDP Flooding攻擊中,攻擊者可發(fā)送大量偽造源IP地址的小UDP包。但是,由于UDP協(xié)議是無連接性的,所以只要開了一個UDP的端口提供相關(guān)服務(wù)的話,那么就可針對相關(guān)的服務(wù)進(jìn)行攻擊。
正常應(yīng)用情況下,UDP包雙向流量會基本相等,而且大小和內(nèi)容都是隨機的,變化很大。出現(xiàn)UDP Flooding的情況下,針對同一目標(biāo)IP的UDP包在一側(cè)大量出現(xiàn),并且內(nèi)容和大小都比較固定。
UDP協(xié)議與TCP 協(xié)議不同,是無連接狀態(tài)的協(xié)議,并且UDP應(yīng)用協(xié)議五花八門,差異極大,因此針對UDP Flooding的防護(hù)非常困難。其防護(hù)要根據(jù)具體情況對待。
· 判斷包大?。喝绻谴蟀魟t使用防止UDP碎片方法。根據(jù)攻擊包大小設(shè)定包碎片重組大小,通常不小于1500。在極端情況下,可以考慮丟棄所有UDP碎片。
· 攻擊端口為業(yè)務(wù)端口:根據(jù)該業(yè)務(wù)UDP最大包的長度設(shè)置檢測UDP最大包以過濾異常流量。
· 攻擊端口為非業(yè)務(wù)端口:一個是丟棄所有UDP包,可能會誤傷正常業(yè)務(wù);另一個是建立UDP連接規(guī)則,要求所有去往該端口的UDP包,必須首先與TCP端口建立TCP連接。不過這種方法需要很專業(yè)的防火墻或其他防護(hù)設(shè)備支持。
在網(wǎng)絡(luò)的關(guān)鍵之處使用防火墻對來源不明的有害數(shù)據(jù)進(jìn)行過濾,可以有效減輕UDP Flooding攻擊。此外,在用戶的網(wǎng)絡(luò)中還應(yīng)采取如下的措施。
· 禁用或過濾監(jiān)控和響應(yīng)服務(wù)。
· 禁用或過濾其他的 UDP 服務(wù)。
· 如果用戶必須提供一些 UDP 服務(wù)的外部訪問,那么需要使用代理機制來保護(hù)那種服務(wù),保證它不會被濫用。
· 對用戶的網(wǎng)絡(luò)進(jìn)行監(jiān)控以了解哪些系統(tǒng)在使用這些服務(wù),并對濫用的跡象進(jìn)行監(jiān)控。
· 對于一些小型的服務(wù)器,可以直接用防火墻添加規(guī)則的方法屏蔽掉。
5. Connection Flooding
Connection Flooding是典型的并且非常的有效的利用小流量沖擊大帶寬網(wǎng)絡(luò)服務(wù)的攻擊方式,這種攻擊方式目前已經(jīng)越來越猖獗。這種攻擊的原理是利用真實的IP地址向服務(wù)器發(fā)起大量的連接,并且建立連接之后很長時間不釋放,占用服務(wù)器的資源,造成服務(wù)器上殘余連接(WAIT狀態(tài))過多,效率降低,甚至資源耗盡,無法響應(yīng)其他客戶所發(fā)起的連接。
其中一種攻擊方法是每秒鐘向服務(wù)器發(fā)起大量的連接請求,這類似于固定源IP的SYN Flooding攻擊,不同的是采用了真實的源IP地址。通常這可以在防火墻上限制每個源IP地址每秒鐘的連接數(shù)來達(dá)到防護(hù)目的。但現(xiàn)在已有工具采用慢速連接的方式,也即幾秒鐘才和服務(wù)器建立一個連接,連接建立成功之后并不釋放并定時發(fā)送垃圾數(shù)據(jù)包給服務(wù)器使連接得以長時間保持。這樣一個IP地址就可以和服務(wù)器建立成百上千的連接,而服務(wù)器可以承受的連接數(shù)是有限的,這就達(dá)到了拒絕服務(wù)的效果。
另外,蠕蟲大規(guī)模爆發(fā)的時候,由于蠕蟲代碼比較簡單,傳播過程中會出現(xiàn)大量源IP地址相同的包,對于 TCP 蠕蟲,則表現(xiàn)為大范圍掃描行為。這是在判斷Connection Flooding時需要注意的。
該攻擊的一般表現(xiàn)形式是:在受攻擊的服務(wù)器上使用netstat –an命令來查看,會發(fā)現(xiàn)大量連接狀態(tài)來自少數(shù)的幾個源。如果統(tǒng)計的話,可以看到連接數(shù)對比平時出現(xiàn)異常。并且增長到某一閾值之后開始波動,說明此時可能已經(jīng)接近性能極限。因此,對這種攻擊的判斷原則為:在流量上體現(xiàn)并不大,甚至可能會很小;出現(xiàn)大量的ESTABLISH狀態(tài);新建的ESTABLISH狀態(tài)總數(shù)有波動。
防范該攻擊主要有如下方法。
· 主動清除殘余連接。
· 對惡意連接的IP進(jìn)行封禁。
· 限制每個源IP的連接數(shù)。
· 可以對特定的URL進(jìn)行防護(hù)。
· 反查Proxy后面發(fā)起HTTP Get Flood的源。
詳解TCP/IP協(xié)議棧面臨的五大網(wǎng)絡(luò)安全問題相關(guān)文章:
1.什么是TCP IP 網(wǎng)絡(luò)tcp ip協(xié)議詳解
2.TCP/IP協(xié)議和CP/IP協(xié)議是什么