? ? ? ? ?一般來說,如果一個系統(tǒng)(或主機(jī))負(fù)荷突然升高甚至失去響應(yīng),使用Netstat 命令能看到大量SYN_RCVD的半連接(數(shù)量>500或占總連接數(shù)的10%以上),可以認(rèn)定,這個系統(tǒng)(或主機(jī))遭到了SYN Flood攻擊。遭到SYN Flood攻擊后,首先要做的是取證,通過Netstat –n –p tcp >resault.txt記錄目前所有TCP連接狀態(tài)是必要的,如果有嗅探器,或者TcpDump之類的工具,記錄TCP SYN報文的所有細(xì)節(jié)也有助于以后追查和防御,需要記錄的字段有:源地址、IP首部中的標(biāo)識、TCP首部中的序列號、TTL值等,這些信息雖然很可能是攻擊者偽造的,但是用來分析攻擊者的心理狀態(tài)和攻擊程序也不無幫助。特別是TTL值,如果大量的攻擊包似乎來自不同的IP但是TTL值卻相同,我們往往能推斷出攻擊者與我們之間的路由器距離,至少也可以通過過濾特定TTL值的報文降低被攻擊系統(tǒng)的負(fù)荷(在這種情況下TTL值與攻擊報文不同的用戶就可以恢復(fù)正常訪問)。從防御角度來說,有幾種簡單的解決方法:
解決方法
第一種是縮短SYN Timeout時間,
第二種方法是設(shè)置SYN Cookie,
第三種方法 負(fù)反饋策略: 參考一些流行的操作系統(tǒng),如windows2000的SYN攻擊保護(hù)機(jī)制:正常情況下,OS對TCP連接的一些重要參數(shù)有一個常規(guī)的設(shè)置: SYN Timeout時間、SYN-ACK的重試次數(shù)、SYN報文從路由器到系統(tǒng)再到Winsock的延時等等。這個常規(guī)設(shè)置針對系統(tǒng)優(yōu)化,可以給用戶提供方便快捷的服務(wù);一旦服務(wù)器受到攻擊,SYN Half link 的數(shù)量超過系統(tǒng)中TCP活動 Half Connction最大連接數(shù)的設(shè)置,系統(tǒng)將會認(rèn)為自己受到了SYN Flood攻擊,并將根據(jù)攻擊的判斷情況作出反應(yīng):減短SYN Timeout時間、減少SYN-ACK的重試次數(shù)、自動對緩沖區(qū)中的報文進(jìn)行延時等等措施,力圖將攻擊危害減到最低。如果攻擊繼續(xù),超過了系統(tǒng)允許的最大Half Connection 值,系統(tǒng)已經(jīng)不能提供正常的服務(wù)了,為了保證系統(tǒng)不崩潰,可以將任何超出最大Half Connection 值范圍的SYN報文隨機(jī)丟棄,保證系統(tǒng)的穩(wěn)定性。
所以,可以事先測試或者預(yù)測該主機(jī)在峰值時期的Half Connction 的活動數(shù)量上限,以其作為參考設(shè)定TCP活動 Half Connction最大連接數(shù)的值,然后再以該值的倍數(shù)(不要超過2)作為TCP最大Half Connection值,這樣可以通過負(fù)反饋的手段在一定程度上阻止SYN攻擊。
第四種退讓策略 :退讓策略是基于SYN Flood攻擊代碼的一個缺陷,我們重新來分析一下SYN Flood攻擊者的流程:SYN Flood程序有兩種攻擊方式,基于IP的和基于域名的,前者是攻擊者自己進(jìn)行域名解析并將IP地址傳遞給攻擊程序,后者是攻擊程序自動進(jìn)行域名解析,但是它們有一點(diǎn)是相同的,就是一旦攻擊開始,將不會再進(jìn)行域名解析,我們的切入點(diǎn)正是這里:假設(shè)一臺服務(wù)器在受到SYN Flood攻擊后迅速更換自己的IP地址,那么攻擊者仍在不斷攻擊的只是一個空的IP地址,并沒有任何主機(jī),而防御方只要將DNS解析更改到新的IP地址就能在很短的時間內(nèi)(取決于DNS的刷新時間)恢復(fù)用戶通過域名進(jìn)行的正常訪問。為了迷惑攻擊者,我們甚至可以放置一臺“犧牲”服務(wù)器讓攻擊者滿足于攻擊的“效果”(由于DNS緩沖的原因,只要攻擊者的瀏覽器不重起,他訪問的仍然是原先的IP地址)。
第五種分布式DNS負(fù)載均衡: 在眾多的負(fù)載均衡架構(gòu)中,基于DNS解析的負(fù)載均衡本身就擁有對SYN Flood的免疫力,基于DNS解析的負(fù)載均衡能將用戶的請求分配到不同IP的服務(wù)器主機(jī)上,攻擊者攻擊的永遠(yuǎn)只是其中一臺服務(wù)器,一來這樣增加了攻擊者的成本,二來過多的DNS請求可以幫助我們追查攻擊者的真正蹤跡(DNS請求不同于SYN攻擊,是需要返回數(shù)據(jù)的,所以很難進(jìn)行IP偽裝)。
第六種 防火墻Qos:對于防火墻來說, 防御SYN Flood攻擊的方法取決于防火墻工作的基本原理,一般說來,防火墻可以工作在TCP層之上或IP層之下,工作在TCP層之上的防火墻稱為網(wǎng)關(guān)型防火墻,網(wǎng)關(guān)型防火墻布局中,客戶機(jī)與服務(wù)器之間并沒有真正的TCP連接,客戶機(jī)與服務(wù)器之間的所有數(shù)據(jù)交換都是通過防火墻代理的,外部的DNS解析也同樣指向防火墻,所以如果網(wǎng)站被攻擊,真正受到攻擊的是防火墻,這種防火墻的優(yōu)點(diǎn)是穩(wěn)定性好,抗打擊能力強(qiáng),但是因?yàn)樗械腡CP報文都需要經(jīng)過防火墻轉(zhuǎn)發(fā),所以效率比較低由于客戶機(jī)并不直接與服務(wù)器建立連接,在TCP連接沒有完成時防火墻不會去向后臺的服務(wù)器建立新的TCP連接,所以攻擊者無法越過防火墻直接攻擊后臺服務(wù)器,只要防火墻本身做的足夠強(qiáng)壯,這種架構(gòu)可以抵抗相當(dāng)強(qiáng)度的SYN Flood攻擊。但是由于防火墻實(shí)際建立的TCP連接數(shù)為用戶連接數(shù)的兩倍(防火墻兩端都需要建立TCP連接),同時又代理了所有的來自客戶端的TCP請求和數(shù)據(jù)傳送,在系統(tǒng)訪問量較大時,防火墻自身的負(fù)荷會比較高,所以這種架構(gòu)并不能適用于大型網(wǎng)站。(我感覺,對于這樣的防火墻架構(gòu),使用TCP_STATE攻擊估計會相當(dāng)有效:)?
工作在IP層或IP層之下的稱為路由型防火墻,其工作原理有所不同:客戶機(jī)直接與服務(wù)器進(jìn)行TCP連接,防火墻起的是路由器的作用,它截獲所有通過的包并進(jìn)行過濾,通過過濾的包被轉(zhuǎn)發(fā)給服務(wù)器,外部的DNS解析也直接指向服務(wù)器,這種防火墻的優(yōu)點(diǎn)是效率高,可以適應(yīng)100Mbps-1Gbps的流量,但是這種防火墻如果配置不當(dāng),不僅可以讓攻擊者越過防火墻直接攻擊內(nèi)部服務(wù)器,甚至有可能放大攻擊的強(qiáng)度,導(dǎo)致整個系統(tǒng)崩潰。?
在這兩種基本模型之外,有一種新的防火墻模型,它集中了兩種防火墻的優(yōu)勢,這種防火墻的工作原理如下所示:?
第一階段,客戶機(jī)請求與防火墻建立連接:?
第二階段,防火墻偽裝成客戶機(jī)與后臺的服務(wù)器建立連接?
第三階段,之后所有從客戶機(jī)來的TCP報文防火墻都直接轉(zhuǎn)發(fā)給后臺的服務(wù)器?
這種結(jié)構(gòu)吸取了上兩種防火墻的優(yōu)點(diǎn),既能完全控制所有的SYN報文,又不需要對所有的TCP數(shù)據(jù)報文進(jìn)行代理,是一種兩全其美的方法。近來,國外和國內(nèi)的一些防火墻廠商開始研究帶寬控制技術(shù),如果能真正做到嚴(yán)格控制、分配帶寬,就能很大程度上防御絕大多數(shù)的SYN攻擊。
有關(guān)IDS的建議?
由于許多用來擊敗基于網(wǎng)絡(luò)的入侵檢測系統(tǒng)的方法對絕大多數(shù)商業(yè)入侵檢測系統(tǒng)產(chǎn)品仍然是有效的,因此建議入侵檢測系統(tǒng)應(yīng)該至少有能重組或發(fā)覺碎片的自尋址數(shù)據(jù)包。下面是部分要注意的事項(xiàng):?
確信包括了現(xiàn)有的所有規(guī)則,包括一些針對分布式拒絕服務(wù)攻擊的新規(guī)則。如果遵循了ICMP建議項(xiàng),許多ICMP會被阻塞,入侵檢測系統(tǒng)觸發(fā)器存在許多機(jī)會。任何通常情況下要被阻塞的入站或出站的ICMP數(shù)據(jù)包可以被觸發(fā)。 "任何"被你用防火墻分離的網(wǎng)絡(luò)傳輸都可能是一個潛在的IDS觸發(fā)器。?
如果你的入侵檢測系統(tǒng)支持探測長時間周期的攻擊,確信沒有把允許通過防火墻的被信任主機(jī)排除在外。這也包括虛擬專用網(wǎng)。 如果你能訓(xùn)練每個使用ping的用戶在ping主機(jī)時使用小數(shù)據(jù)包,就可能設(shè)置入侵檢測系統(tǒng)尋找超29字節(jié)的Echo和Echo應(yīng)答數(shù)據(jù)包。