10-6 IP/TCP 封包過濾
10-6-1 IP/TCP 過濾訊息 對一般應用而言,僅利用 IP 封包標頭從事過濾條件是不夠的,若能拆解到上一層協定(如TCP、UDP)標頭,了解該封包功能之後,再判斷是否允許通過防火牆,這樣可能比較實際一點。圖 13-10 為 IP 封包中包裝 TCP 訊息,一般防火牆所採用的判斷訊息如下:
圖 10-10 IP/TCP 過濾封包訊息 一般 TCP/UDP 1024 以前的埠口皆歸劃為系統管理者使用,並且將較常用的『著名埠口』(Well-known)設定在 1024 之前的埠口,至於使用者的隨機埠口都介於 1024 ~ 65535 之間。在正常的情況下,由埠口號碼就可以知道該封包所欲連結之伺服器,譬如,HTTP 伺服器固定在埠口 80、Telnet 伺服器則在埠口 23。 封包過濾條件是由 IP 和 TCP 標頭上的訊息所構成,更能表示出封包的特性。再說,一般系統為了達到多重連線的功能(譬如,一個 Web 伺服器可同時接受多個客戶端連線),每一個通訊連線都是由雙方的 IP 位址與 TCP 埠口號碼來表示,譬如,192.38.24.50:80 ←→ 163.15.2.30:3456,則表示兩部電腦(192.38.24.50 與 163.15.2.30)的傳輸埠口(80 與 3456)之間的連線。由此可見,的確須拆解到 TCP 封包標頭,對於封包過濾的條件判斷才具意義。 10-6-2 TCP ack 參數 判斷 我們不可能為了架設防火牆設施,去修改目前運作中的 TCP 協定,只能就現有運作的程序中找尋可能過濾的條件因素。TCP 協定是屬於連接導向的傳輸方式,通訊雙方必須先建立連線,才可以傳輸資料。因此,如欲限制 TCP 連線是否可通過防火牆的話,只要限制其連線與否即可。也就是說,只要過濾 TCP 建立連線的封包,即可決定是否允許該訊息通過防火牆。 TCP 連線是採用三向握手式連絡法,如圖 10-11 所示。它是利用封包標頭上的兩個旗號:SYN(Synchronous,要求連線)與 ACK(Acknowledge,確認),達到雙方溝通的目的,其運作程序如下:發起者發送要求連線封包(SYN = 1、ACK = 0,訊號 (1)),回應者發送同意連線封包(SYN = 0、ACK = 1,訊號 (2)),發起者再確認同意連線(SYN = 0、ACK = 1,訊號 (3))。由此可以發現一個重要現象,除了要求連線封包的 ACK 旗號為零外(ACK=0),其它封包的 ACK 旗號都為 1(ACK=1),因此只要從 ACK 的內容即可判斷是否為連線要求封包,其中:
如此一來,再由 ACK 旗號、目的位址、以及來源位址,便可判斷出是外出或進入的連線要求,或是回應連線要求的訊號;如果再增加傳輸埠口號碼,更可以瞭解該連線所欲連接的應用系統(如 Telnet 或 FTP),一般只要利用這些參數來過濾封包,皆可達到防火牆的功能。
圖 10-11 TCP 三向握手式連絡法 |
翻轉工作室:粘添壽
資訊與網路安全技術
翻轉電子書系列:
|