筆記 非法tcp報文以及防火牆過濾

2021-06-03 02:15:30 字數 2382 閱讀 7320

一、非法tcp報文攻擊

在tcp報文的報頭中,有幾個標誌字段:

1.  syn:連線建立標誌,tcp syn報文就是把這個標誌設定為1,來請求建立連線。

3.  fin: 結束標誌,當一台主機接收到乙個設定了fin標誌的tcp報文後,會拆除這個tcp連線。

4.  rst:復位標誌,當ip協議棧接收到乙個目標埠不存在的tcp報文的時候,會回應乙個rst標誌設定的報文。

5.  psh:通知協議棧盡快把tcp資料提交給上層程式處理。

非法tcp報文攻擊是通過非法設定標誌字段致使主機處理的資源消耗甚至系統崩潰,例如以下幾種經常設定的非法tcp報文:

1.        syn 位元和fin位元同時設定的tcp報文

正常情況下,syn標誌(連線請求標誌)和fin標誌(連線拆除標誌)不能同時出現在乙個tcp報文中,而且rfc也沒有規定ip協議棧如何處理這樣的畸形報文。因此各個作業系統的協議棧在收到這樣的報文後的處理方式也不相同,攻擊者就可以利用這個特徵,通過傳送syn和fin同時設定的報文,來判斷作業系統的型別,然後針對該作業系統,進行進一步的攻擊。

2.        沒有設定任何標誌的tcp報文

正常情況下,任何tcp報文都會設定syn,fin,ack,rst,psh五個標誌中的至少乙個標誌,第乙個tcp報文(tcp連線請求報文)設定syn標誌,後續報文都設定ack標誌。有的協議棧基於這樣的假設,沒有針對不設定任何標誌的tcp報文的處理過程,因此這樣的協議棧如果收到了這樣的報文可能會崩潰。攻擊者利用了這個特點,對目標主機進行攻擊。

3.        設定了fin標誌卻沒有設定ack標誌的tcp報文

正常情況下,除了第一報文(syn報文)外,所有的報文都設定ack標誌,包括tcp連線拆除報文(fin 標誌設定的報文)。但有的攻擊者卻可能向目標主機傳送設定了fin標誌卻沒有設定ack標誌的tcp報文,這樣可能導致目標主機崩潰。

4.建立tcp連線(通過3次握手實現)

假如伺服器a和客戶機b通訊。

(1)b->;a。當b要和a通訊時,b首先向a發乙個syn標記的包,告訴a請求建立連線。只有當a收到b發來的syn包,才可以建立連線,除此之外別無它法。因此,如果你的防火牆丟棄所有的發往外網介面的syn包,那麼你將不能讓外部任何主機主動建立連線。

(2)b<-a。接著,a收到後會發乙個對syn包的確認包(syn/ack)回去,表示對第乙個syn包的確認,並繼續握手操作。

(3)b->;a。b收到syn/ack包後,b發乙個確認包(ack),通知a連線已建立。至此,3次握手完成,乙個tcp連線完成。

需要注意的是,當3次握手完成、連線建立以後,tcp連線的每個包都會設定ack位。這就是為何連線跟蹤很重要的原因了,沒有連線跟蹤,防火牆將無法判斷收到的ack包是否屬於乙個已經建立的連線。

2.1.2 結束tcp連線(通過4次握手實現)

假如伺服器a和客戶機b通訊。注意,由於tcp連線是雙向連線,因此關閉連線需要在兩個方向上做。

(1)b->;a。當b要與a結束通訊時,b首先向a發乙個fin標記的包,告訴a請求結束連線。由於連線還沒有關閉,fin包總是打上ack標記。沒有ack標記而僅有fin標記的包不是合法的包,並且通常被認為是惡意的。

(2)b<-a。a送出ack包給b,表示成功地中止b->;a傳輸通道。不過a->;b可能還有資料報需要傳送,所以a->;b傳輸通道仍舊繼續暢通,直到傳輸完畢才會進入下一步。

(3)b<-a。當a完成b<-a的傳輸後,便送出ack/fin包。

(4)b->;a。b送出ack包給a進行確認。

2.1.3 傳送連線復位包結束tcp連線

4次握手不是結束tcp連線的唯一方法。有時,如果主機需要盡快關閉連線(或連線超時,埠或主機不可達),rst包將被傳送。注意,由於rst包不是 tcp連線中的必須部分,可以只傳送rst包(即不帶ack標記)。但在正常的tcp連線中rst包可以帶ack確認標記。注意,rst包是可以不要收方進行確認的。

2.1.4 無效的tcp標記

至此,已經看到了syn、ack、fin、和rst標記。另外,還有psh和urg標記。

最常見的非法組合是syn/fin包。注意,由於syn包是用來初始化連線的,它不可能和fin以及rst標記一起出現,這也是乙個惡意攻擊。

當網路中出現別的一些組合(如syn/fin/psh、syn/fin/rst、syn/fin/rst/psh),很明顯網路肯定受到了攻擊。

另外,已知的非法包還有fin(無ack標記)和「null」包。如同早先討論的,由於ack/fin包的出現是為了結束乙個tcp連線,那麼正常的 fin包總是帶有ack標記的。「null」包就是沒有任何tcp標記的包(urg、ack、psh、rst、syn、fin都為0)。

在正常的網路活動下,到目前為止tcp協議棧不可能產生帶有上面提到的任何乙個標記組合的tcp包。當你發現這些不正常的包時,肯定有人對你的網路不懷好意。另外利用tcp報文的其他欄位的漏洞也可以進行網路攻擊如果欄位mss,序列號,確認號。

TCP連線與防火牆

通常,我們的tcp伺服器會放在idc機房的某乙個或幾個防火牆後面,客戶端與伺服器之間的tcp連線會經過防火牆中轉,如下圖所示 在這種情況下,有一點特別需要注意 當firewall與server之間的tcp連線在一段時間 如10分鐘 內沒有任何應用層的訊息經過時,firewall可能會主動斷開與ser...

防火牆學習筆記之防火牆概述

1 邏輯區域過濾器,將網路區域分成兩大部分,被防火牆保護的區域 信任區,另外乙個區域為非信任區 2 隱藏內網網路結構 3 自身安全保障 4 主動防禦攻擊 根據訪問控制方式,可以分為包過濾防火牆,防火牆,狀態監測防火牆,前兩種已經被淘汰,1 包過濾防火牆 根據五元組 源目ip 源目埠號 協議 通過在防...

什麼是防火牆以及作用?

一 防火牆的基本概念 古時候,人們常在寓所之間砌起一道磚牆,一旦火災發生,它能夠防止火勢蔓延到別的寓所。現在,如果乙個網路接到了internet上面,它的使用者就可以訪問外部世界並與之通訊。但同時,外部世界也同樣可以訪問該網路並與之互動。為安全起見,可以在該網路和internet之間插入乙個中介系統...