SYN Flood攻擊防範技術白皮書
關鍵詞:SYN Flood ,SYN Cookie,Safe Reset
摘 要:本文主要介紹了H3C防火牆為保護服務器免受SYN Flood攻擊采用的防範技術的原理和應用。
縮略語:
縮略語 | 英文全名 | 中文解釋 |
DMZ | De-Militarized Zone | 非軍事區域 |
TCB | Transmission Control Block | 傳輸控製塊 |
TCP | Transmission Control Protocol | 傳輸層控製協議 |
目 錄
SYN Flood攻擊是一種通過向目標服務器發送SYN報文,消耗其係統資源,削弱目標服務器的服務提供能力的行為。一般情況下,SYN Flood攻擊是在采用IP源地址欺騙行為的基礎上,利用TCP連接建立時的三次握手過程形成的。
眾所周知,一個TCP連接的建立需要雙方進行三次握手,隻有當三次握手都順利完成之後,一個TCP連接才能成功建立。當一個係統(稱為客戶端)請求與另一個提供服務的係統(稱為服務器)建立一個TCP連接時,雙方要進行以下消息交互:
(1) 客戶端向服務器發送一個SYN消息;
(2) 如果服務器同意建立連接,則響應客戶端一個對SYN消息的回應消息(SYN/ACK);
(3) 客戶端收到服務器的SYN/ACK以後,再向服務器發送一個ACK消息進行確認。
當服務器收到客戶端的ACK消息以後,一個TCP的連接成功完成。連接的建立過程如圖1所示:
圖1 TCP連接的建立
在上述過程中,當服務器收到SYN報文後,在發送SYN/ACK回應客戶端之前,需要分配一個數據區記錄這個未完成的TCP連接,這個數據區通常稱為TCB資源,此時的TCP連接也稱為半開連接。這種半開連接僅在收到客戶端響應報文或連接超時後才斷開,而客戶端在收到SYN/ACK報文之後才會分配TCB資源,因此這種不對稱的資源分配模式會被攻擊者所利用形成SYN Flood攻擊。
圖2 SYN Flood攻擊原理圖
如圖2所示,攻擊者使用一個並不存在的源IP地址向目標服務器發起連接,該服務器回應SYN/ACK消息作為響應,由於應答消息的目的地址並不是攻擊者的實際地址,所以這個地址將無法對服務器進行響應。因此,TCP握手的最後一個步驟將永遠不可能發生,該連接就一直處於半開狀態直到連接超時後被刪除。如果攻擊者用快於服務器TCP連接超時的速度,連續對目標服務器開放的端口發送SYN報文,服務器的所有TCB資源都將被消耗,以至於不能再接受其他客戶端的正常連接請求。
為保證服務器能夠正常提供基於TCP協議的業務,防火牆必須能夠利用有效的技術瓦解以及主動防禦SYN Flood攻擊。
H3C在SYN Flood 攻擊防範技術的實現上具有以下四個方麵的特色。
H3C實現的SYN Flood攻擊防範支持基於安全區域的配置方式,所有攻擊檢測策略均配置在安全區域上,配置簡潔又不失靈活性,既降低網絡管理員配置負擔,又能滿足複雜組網情況下針對安全區域實施不同攻擊防範策略的要求。
H3C實現的SYN Flood攻擊防範功能可提供豐富的告警日誌信息,可以與第三方軟件配合使用,其日誌和審計功能不僅能夠針對攻擊進行實時監測,還能對攻擊的曆史日誌進行方便的查詢和統計分析,便於對攻擊事件進行有效的跟蹤和追查。
H3C實現的SYN Flood攻擊防範功能采用基於行為模式的異常檢測算法對目標服務器的網絡流量進行檢測,通過實時跟蹤TCP服務器連接的狀態機協商過程,能夠有效區分攻擊流量和正常流量,從而精確阻斷攻擊流量。
針對SYN Flood攻擊,H3C防火牆提供了靈活的防範措施,可根據用戶的實際需要,選擇對攻擊行為進行日誌輸出、報文丟棄、啟用SYN Cookie防護功能、啟用Safe Reset防護功能、通知服務器釋放無效半開連接等防範動作。
在Internet上,公共服務器是SYN Flood攻擊實施的主要對象。Internet上任何客戶端向某個特定的公共服務器發起訪問時,其目的IP地址必定是公共服務器對外公開的IP地址。H3C防火牆通過攻擊檢測技術,統計和分析向公共服務器發起的所有連接的行為特征,來檢測和識別攻擊報文。
在檢測到針對服務器的SYN Flood攻擊行為後,H3C防火牆可以支持選擇多種應對攻擊的防範措施,主要包括兩大類:
l 連接限製技術:采用SYN Flood攻擊防範檢測技術,對網絡中的新建TCP半開連接數和新建TCP連接速率進行實時檢測,通過設置檢測閾值來有效地發現攻擊流量,然後通過阻斷新建連接或釋放無效連接來抵禦SYN Flood攻擊。
l 連接代理技術:采用SYN Cookie或Safe Reset技術對網絡中的TCP連接進行代理,通過精確的驗證來準確的發現攻擊報文,實現為服務器過濾掉惡意連接報文的同時保證常規業務的正常運行。連接代理技術除了可以對已檢測到攻擊的服務器進行代理防範,也可以對可能的攻擊對象事先配置,做到全部流量代理,而非攻擊發生後再代理,這樣可以避免攻擊報文已經造成一定損失。
根據統計對象的不同特征,SYN Flood攻擊檢測可分為兩種類型:半開連接數檢測、新建連接速率檢測。
當惡意客戶端向目標服務器發起SYN Flood 攻擊時,如果惡意客戶端采用了仿冒的源IP,那麼在目標服務器上會存在大量半開連接。
這類半開連接與正常的半開連接的區別在於,正常半開連接會隨著客戶端和服務器端握手報文的交互完成而轉變成全連接,而仿冒源IP的半開連接永遠不會完成握手報文的交互。
為有效區分仿冒半開連接和正常半開連接,防火牆就需要實時記錄所有客戶端向服務器發起的所有半開連接數和完成了握手交互且轉變為全連接的半開連接數,二者之差(即未完成的半連接數)在服務器未受到攻擊時會保持在一個相對恒定的範圍內。如果未完成的半連接數突然增多,甚至接近服務器的資源分配上限時就可以懷疑此時服務器正受到異常流量的攻擊。
如圖3所示,管理員可以根據被保護服務器的處理能力設置半開連接數閾值。如果服務器無法處理客戶端所有連接請求,就會導致未完成的半開連接數(即客戶端向服務器發起的所有半開連接數和完成了握手交互變成全連接的半開連接數之差)超過指定閾值,此時防火牆可以判定服務器正在遭受SYN Flood 攻擊。
半開連接數統計要求防火牆能夠記錄客戶端到服務器端的所有連接狀態。即,客戶端和服務器端的報文都需要經過防火牆處理。因此,基於半開連接數的統計檢測需要防火牆部署在所保護的服務器出口和入口的關鍵路徑上。
當惡意客戶端向目標服務器發起SYN Flood攻擊時,不管惡意客戶端采用仿冒源IP手段還是使用真實的客戶端,其呈現的結果就是發往服務器的報文會在短時間內大量增加。
惡意客戶端發向服務器的報文中,一部分是新建連接的報文,一部分是已建立連接的後續數據報文。H3C防火牆通過記錄每秒新建連接的數量,並與設定的閾值進行比較來判斷向目標服務器發起SYN Flood攻擊行為是否發生,若達到或超過,則認為攻擊行為發生。
如圖4所示,在對被保護服務器進行監測時,防火牆在一秒的時間間隔內統計客戶端向服務器發起的新建連接請求數量,作為當前的新建請求速率。當新建連接請求速率超過指定閾值時,防火牆設備可以認為服務器可能遭受了SYN Flood攻擊。
新建連接數統計要求防火牆能夠記錄客戶端到服務器端的所有新建連接個數。即,客戶端發往服務器端的報文必須要經過防火牆處理。因此,基於新建連接數的統計檢測需要防火牆部署在所保護的服務器入口的關鍵路徑上。
H3C防火牆可以支持選擇多種應對攻擊的防範措施,主要包括以下四種技術:
l 阻斷新建連接——通過隨時阻斷服務器處理能力之外的新建連接來減輕服務器的被攻擊程度。
l 釋放無效連接——通過在攻擊發生後通知服務器釋放無效連接來協助服務器及時恢複服務能力。
l SYN Cookie和Safe Reset——通過驗證發起連接的客戶端的合法性,使服務器免受SYN Flood攻擊。這兩種技術適用於不同的組網需求。
實際上,最簡單的防範方法就是暫時阻止任何客戶端向服務器發起的新建連接請求。阻斷新建連接的時機是由SYN Flood攻擊檢測發現攻擊決定的,隻要防火牆發現連接數閾值(半開連接數閾值、新建連接數閾值)被超過時,就開始阻斷新建連接來防範攻擊行為。關於SYN Flood攻擊檢測技術的詳細介紹請參見“2.1 SYN Flood攻擊檢測技術”。
下麵是分別通過兩種檢測技術發現攻擊後的連接阻斷處理過程。
l 半開連接數限製
如圖5所示,防火牆檢測到客戶端與服務器之間的當前半開連接數目超過半開連接數閾值時,所有後續的新建連接請求報文都會被丟棄,直到服務器完成當前的半開連接處理,或當前的半開連接數降低到安全閾值時,防火牆才會放開限製,重新允許客戶端向服務器發起新建連接請求。
l 新建連接數限製
如圖6所示,防火牆對新建連接報文的速率進行統計,隻允許新建連接速率不超過閾值情況下的新建連接報文通過,超過閾值之後的新建連接報文都被丟棄。直到每秒客戶端向服務器發起的連接請求降低到安全閾值以下時,防火牆才會放開限製,重新允許客戶端向服務器發起新建連接請求。
阻斷新建連接功能為防火牆檢測到SYN Flood攻擊後的基本處理手段。在服務器受到SYN Flood攻擊時,防火牆能在服務器處理新建連接報文之前將其阻斷,削弱了網絡攻擊對服務器的影響,但無法在服務器被攻擊時有效提升服務器的服務能力。因此,該功能一般用於配合防火牆SYN Flood攻擊檢測,避免瞬間高強度攻擊使服務器係統崩潰。
正如2.1.1 半開連接數檢測中所描述,當服務器上的半開連接過多時,其正在處理的半開連接中可能存在惡意客戶端仿冒源IP發起的無效連接。為了不讓仿冒源IP發起的無效連接占用服務器的資源,防火牆需要在所有半開連接中識別出無效連接,通知服務器釋放這這些無效連接。
防火牆通過模擬無效連接的五元組信息(源IP地址、目的IP地址、源端口號、目的端口號、協議類型),向服務器發送RST報文(連接重置報文)通知服務器釋放無效連接。
釋放無效連接功能是一種防火牆檢測到攻擊後的基本處理手段,在服務器受到SYN Flood攻擊的情況下,能夠通知服務器釋放被惡意攻擊報文占用的資源,使服務器得以恢複正常服務。在服務器受到SYN Flood攻擊時,此功能主要用於加速被攻擊服務器的恢複速度,卻無法阻止惡意客戶端繼續攻擊服務器。因此,該功能一般用於配合防火牆SYN Flood檢測,在攻擊發生後減輕已發生的攻擊對服務器的影響。
SYN Cookie借鑒了HTTP中Cookie的概念。SYN Cookie技術可理解為,防火牆對TCP新建連接的協商報文進行處理,使其攜帶認證信息(稱之為Cookie),再通過驗證客戶端回應的協商報文中攜帶的信息來進行報文有效性確認的一種技術。如圖7所示,該技術的實現機製是防火牆在客戶端與服務器之間做連接代理,具體過程如下:
圖7 防火牆使用SYN Cookie防範SYN Flood攻擊
(1) 客戶端向服務器發送一個SYN消息。
(2) SYN消息經過防火牆時,防火牆截取該消息,並模擬服務器向客戶端回應SYN/ACK消息。其中,SYN/ACK消息中的序列號為防火牆計算的Cookie,此Cookie值是對加密索引與本次連接的客戶端信息(如:IP地址、端口號)進行加密運算的結果。
(3) 客戶端收到SYN/ACK報文後向服務器發送ACK消息進行確認。防火牆截取這個消息後,提取該消息中的ACK序列號,並再次使用客戶端信息與加密索引計算Cookie。如果計算結果與ACK序列號相符,就可以確認發起連接請求的是一個真實的客戶端。如果客戶端不回應ACK消息,就意味著現實中並不存在這個客戶端,此連接是一個仿冒客戶端的攻擊連接;如果客戶端回應的是一個無法通過檢測的ACK消息,就意味著此客戶端非法,它僅想通過模擬簡單的TCP協議棧來耗費服務器的連接資源。來自仿冒客戶端或非法客戶端的後續報文都會被防火牆丟棄,而且防火牆也不會為此分配TCB資源。
(4) 如果防火牆確認客戶端的ACK消息合法,則模擬客戶端向服務器發送一個SYN消息進行連接請求,同時分配TCB資源記錄此連接的描述信息。此TCB記錄了防火牆向服務器發起的連接請求的信息,同時記錄了步驟(2)中客戶端向服務器發起的連接請求的信息。
(5) 服務器向防火牆回應SYN/ACK消息。
(6) 防火牆收到服務器的SYN/ACK回應消息後,根據已有的連接描述信息,模擬客戶端向服務器發送ACK消息進行確認。
(7) 完成以上過程之後,客戶端與防火牆之間建立了連接,防火牆與服務器之間也建立了連接,客戶端與服務器間關於此次連接的後續數據報文都將通過防火牆進行代理轉發。
防火牆的SYN Cookie技術利用SYN/ACK報文攜帶的認證信息,對握手協商的ACK報文進行了認證,從而避免了防火牆過早分配TCB資源。當客戶端向服務器發送惡意SYN報文時,既不會造成服務器上TCB資源和帶寬的消耗,也不會造成防火牆TCB資源的消耗,可以有效防範SYN Flood攻擊。在防範SYN Flood攻擊的過程中,防火牆作為虛擬的服務器與客戶端交互,同時也作為虛擬的客戶端與服務器交互,在為服務器過濾掉惡意連接報文的同時保證了常規業務的正常運行。
由於SYN Cookie技術最終是依靠防火牆對客戶端與服務器之間的所有連接報文進行代理實現的,因此要求防火牆設備必須部署在所保護的服務器入口和出口的關鍵路徑上,保證所有客戶端向服務器發送的報文以及服務器向客戶端回應的報文都需要經過該設備。
Safe Reset技術是防火牆通過對正常TCP連接進行幹預來識別合法客戶端的一種技術。防火牆對TCP新建連接的協商報文進行處理,修改響應報文的序列號並使其攜帶認證信息(稱之為Cookie),再通過驗證客戶端回應的協商報文中攜帶的信息來進行報文有效性確認。
防火牆在利用Safe Reset技術認證新建連接的過程中,對合法客戶端的報文進行正常轉發,對仿冒客戶端以及簡單模擬TCP協議棧的惡意客戶端發起的新建連接報文進行丟棄,這樣服務器就不會為仿冒客戶端發起的SYN報文分配連接資源,從而避免了SYN Flood 攻擊。如圖8所示,Safe Reset技術的實現過程如下:
圖8 防火牆使用Safe Reset防範SYN Flood攻擊
(1) 客戶端向服務器發送一個SYN消息。
(2) SYN消息經過防火牆時,防火牆截取該消息,並模擬服務器向客戶端回應SYN/ACK消息。其中,SYN/ACK消息中的ACK序列號與客戶端期望的值不一致,同時攜帶Cookie值。此Cookie值是對加密索引與本次連接的客戶端信息(包括:IP地址、端口號)進行加密運算的結果。
(3) 客戶端按照協議規定向服務器回應RST消息。防火牆中途截取這個消息後,提取消息中的序列號,並對該序列號進行Cookie校驗。成功通過校驗的連接被認為是可信的連接,防火牆會分配TCB資源記錄此連接的描述信息,而不可信連接的後續報文會被防火牆丟棄。
(4) 完成以上過程之後,客戶端再次發起連接請求,防火牆根據已有的連接描述信息判斷報文的合法性,對可信連接的所有合法報文直接放行。
由於防火牆僅通過對客戶端向服務器首次發起連接的報文進行認證,就能夠完成對客戶端到服務器的連接檢驗,而服務器向客戶端回應的報文即使不經過防火牆也不會影響正常的業務處理,因此Safe Reset技術也稱為單向代理技術。
一般而言,應用服務器不會主動對客戶端發起惡意連接,因此服務器響應客戶端的報文可以不需要經過防火牆的檢查。防火牆僅需要對客戶端發往應用服務器的報文進行實時監控。服務器響應客戶端的報文可以根據實際需要選擇是否經過防火牆,因此Safe Reset能夠支持更靈活的組網方式。
l Safe Reset技術要求防火牆設備部署在所保護的服務器入口的關鍵路徑上。但僅需保證所有客戶端到服務器報文都必須經過該設備,對服務器端發出的報文是否經該設備沒有嚴格要求。從組網要求來看,Safe Reset 比SYN Cookie適應性更強。
l 由於防火牆對客戶端發起的TCP連接進行了幹預,因此Safe Reset技術的實現要求客戶端的實現嚴格遵守TCP協議棧的規定,如果客戶端的TCP協議棧實現不完善,即便是合法用戶,也可能由於未通過防火牆的嚴格檢查而無法訪問服務器。
l Safe Reset技術依賴於客戶端向服務器發送RST報文後再次發起請求的功能,因此應用Safe Reset技術後,客戶端發起的每個TCP連接的建立時間會有相應增加,增加的程度因客戶端的TCP協議棧實現而有所不同。
圖9 SYN Cooke典型組網應用圖
如圖9所示,Internet上存在潛在的攻擊者和正常使用各種網絡服務的客戶端。來自Internet的目的IP為應用服務器的IP報文,以及應用服務器回應的報文都會經過防火牆處理。在防火牆上使能SYN Cookie功能後,合法客戶端與應用服務器之間TCP連接的交互報文在通過SYN Cookie驗證後由防火牆進行代理發送,而攻擊者向應用服務器發起的連接報文因無法通過SYN Cookie的檢查而被防火牆過濾,應用服務器因此得到保護。
圖10 Safe Reset典型組網應用圖
如圖10所示,Internet上存在潛在的攻擊者和正常使用各種網絡服務的客戶端。來自Internet的目的IP為應用服務器的IP報文都會經過防火牆處理,但服務器回應的報文並不一定經過防火牆。在防火牆上配置Safe Reset功能後,合法的客戶端向應用服務器發起的TCP請求報文在通過Safe Reset檢查後由防火牆允許放行,攻擊者向應用服務器發起的連接報文因無法通過防火牆Safe Reset的檢查而被丟棄,應用服務器因此得到保護。
圖11 SYN Flood攻擊防範綜合組網應用
如圖11所示,防火牆的內網屬於Trust域,內部服務器的網絡屬於DMZ域,外部網絡屬於Untrust域,Untrust域中存在潛在的攻擊者。
在防火牆上采用基於域的配置,對DMZ域內的服務器進行SYN Flood攻擊防範檢測配置,根據服務器的實際流量,配置服務器允許的新建連接速率閾值及半開連接數閾值。若服務器受到SYN Flood攻擊,防火牆輸出SYN Flood告警日誌,並且可以選擇對後續向DMZ域內的服務器發起的訪問進行(單向或雙向)TCP代理,保證到達服務器的TCP連接請求都是正常的。
Copyright ©2008 杭州華三通信技術有限公司 版權所有,保留一切權利。
非經本公司書麵許可,任何單位和個人不得擅自摘抄、複製本文檔內容的部分或全部,並不得以任何形式傳播。
本文檔中的信息可能變動,恕不另行通知。