9-4 IP 封包過濾
9-4-1 封包過濾原則 『封包過濾』(Packet Filtering)是防火牆最基本的功能,是最不可或缺的工具。在 Internet 網路上,訊息跨越網路之間傳輸的最基本資料單元為 IP 封包,當 IP 封包經過某一路由器時,路由器將會拆解它,再由封包標頭上的目的位址決定如何轉送(或是否給予轉送)。如果路由器除了判斷目的位址之外,還增加判斷其他訊息(如來源位址或協定型態),再決定是否給予轉送,便成為『封包過濾器』。基本上,由一般路由器改變成為封包過濾器並不困難,所以一般路由器都兼具有封包過濾功能。 (A) 封包過濾路由器 如將封包過濾功能安裝於路由器上,便稱之為『封包過濾路由器』(Packet Filtering Router),它與一般路由器有很大的不同,以下是封包過濾路由器應該注意的事項: 1. 關閉路由功能:封包過濾路由器必須完全關閉路徑選擇的功能,封包是否給予通過完全由過濾訊息判斷。 2. 關閉閒置的埠口:必須完全關閉閒置的傳輸埠口,因為入侵者會隨時去搜尋過濾路由器上有那些傳輸埠口接受服務,並由這些埠口進入系統。 3. 關閉不需要的服務:許多過濾路由器是利用 Unix/Linux 或 Windows 2003 主機來裝置,這些主機系統會預設執行許多應用服務,管理者應該刪除掉與過濾功能無關的應用程式,甚至對於不了解其功能的程式,最好也關閉。 4. 內定值為拒絕:將所有過濾條件的內定值都預設為拒絕,除了經過設定允許的條件才給予通過,這對防火牆而言較為安全。如將內定值預設為允許,要找出不允許通過的條件必定非常繁雜,徒增系統的不安全性。 5. 協定是雙向的:一般通訊協定都是必須經過雙方溝通,即一方送出詢問,另一方收到後便會自動給予回應。因此,在制定過濾原則時,必須弄清楚雙方通訊的內容,有時候不同協定之間的通訊內容可能會互相牴觸。 至於 IP 封包內有那些訊息可以作為過濾判斷的條件,這並沒有一定的規範可循。基本上,若依照封包上的訊息來判斷過濾的條件,就封包被拆解程度,以及封包種類,可區分為:IP 封包過濾、IP/TCP 封包過濾、IP/UDP 封包過濾、以及 IP/ICMP 封包過濾等四種型態,下一節將會說明這些封包過濾的設定原則。 (B) 服務方向與封包方向 防火牆是介於公眾網路和私有網路(或稱內部網路、受保護的網路)之間,是所有對內/對外通訊的『咽喉點』。封包經過有兩個方向: l 『進入』(Inbound):當外部網路使用者欲傳送訊息進入內部網路的封包; l 『外出』(Outbound):由內部使用者送往外部網路的訊息的封包。 防火牆功能就是管制『進入』與『外出』封包的進出,以達到安全防護的目的。但產生這兩種封包有兩種『服務方向』: l 『進入』(In):外部主機向內部伺服器要求服務。可能會產生 Inbound 與 Outbound 封包。 l 『出去』(Out):內部主機向外部伺服器要求服務。也會產生 Inbound 與 Outbound 封包。 由此可見,吾人僅管制 Inbound 與 Outbound 封包並無法完全達到目的,還須注意到外出服務或進入服務所產生的封包,如此一來,防火牆的管制就變成非常複雜。 9-4-2 IP 封包過濾 所謂 IP 封包過濾係路由器(或防禦主機)只拆解到 IP 協定標頭,其中可供過濾判斷的條件如下:(如圖 9-12 所示) 1. 來源位址(Source Address, SA):表示此封包的來源位址,由此位址可以判斷出該封包是來自外部網路或內部網路(受保護的網路)。 2. 目的位址(Destination Address, DA):表示此封包所欲連結的位址。由此位址可以知曉該封包欲前往外部網路或內部網路。 3. 協定(Protocol, Pro):表示此封包所承載的訊息是何種通訊協定,可能是承載 TCP、UDP、ICMP 等協定。
圖 9-12 IP 封包過濾訊息 9-4-3 IP/TCP 封包過濾 對一般應用而言,僅利用 IP 封包標頭從事過濾條件是不夠的,若能拆解到上一層協定(如TCP、UDP)標頭,了解該封包功能之後,再判斷是否允許通過防火牆,這樣可能比較實際一點。圖 9-13 為 IP 封包中包裝 TCP 訊息,一般防火牆所採用的判斷訊息如下: 1. 來源位址(SA):由 IP 標頭取得,表示該封包的來源 IP 位址。 2. 目的位址(DA):由 IP 標頭取得,表示該封包的目的 IP 位址。 3. 協定型態(Pro):由 IP 標頭取得,表示該封包所承載的協定,如 TCP 協定。 4. 來源埠口(Source Port, SP):此封包的來源傳輸埠口(TCP Port)。 5. 目的埠口(Destination Port, DP):此封包之目的傳輸埠口(TCP Port)。 6. 位元碼(Code bits):此為 TCP 標頭欄位,包含有 URG、ACK、PSH、RST、SYS 與 FIN 等位元控制訊息。至於應該取用那些控制訊息,作為封包過濾的判斷條件,管理者可依照防火牆的安全條件決定,但較常取用的訊息有: ² ACK(Acknowledge):表示回應確認給原發送端。此旗號是判斷條件的關鍵性因素,但它必須配合三向握手式連絡法的運作程序,容後說明。 ² SYN(Synchronous):表示通知對方要求連線的控制訊息。
圖 9-13 IP/TCP 過濾封包訊息 TCP 協定是屬於連接導向的傳輸方式,通訊雙方必須先建立連線,才可以傳輸資料。因此,如欲限制 TCP 連線是否可通過防火牆的話,只要限制其連線與否即可。也就是說,只要過濾 TCP 建立連線的封包,即可決定是否允許該訊息通過防火牆。 TCP 連線是採用三向握手式連絡法,如圖 9-8 所示。它是利用封包標頭上的兩個旗號: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 = 0:表示連線要求訊號。 ² ACK = 1:表示回應同意連線訊號。 如此一來,再由 ACK 旗號、目的位址、以及來源位址,便可判斷出是外出或進入的連線要求,或是回應連線要求的訊號;如果再增加傳輸埠口號碼,更可以瞭解該連線所欲連接的應用系統(如 Telnet 或 FTP),一般只要利用這些參數來過濾封包,皆可達到防火牆的功能。
圖 9-14 TCP 三向握手式連絡法 9-4-4 IP/UDP 封包過濾 UDP 協定是屬於非連接方式,每一個封包都是獨立的,因此,決定 IP/UDP封包是否給予通過的判斷訊息如圖 9-15 所示:
圖 9-15 IP/UDP 封包過濾訊息 1. 來源位址(SA):封包的來源位址。 2. 目的位址(DA):封包的目的位址。 3. 協定型態(Protocol, Pro):UDP 型態。 4. 來源埠口(Source Port, SP):封包的來源 UDP 埠口。 5. 目的埠口(Destination Port, DP):封包的目的 UDP 埠口。 雖然 UDP 封包只有來源和目的埠口可作為過濾條件的判斷,但 UDP 協定並沒有交談式的建立連線(三向握手式連絡法),每一個封包的進出都是獨立的,因此,只要針對封包的目的埠口做過濾判斷即可。 9-4-5 IP/ICMP 封包過濾 攻擊者最喜歡利用 ICMP 封包來探測網路的狀態;相對的,防火牆必須針對ICMP 封包做特殊處理,才可達到隱藏內部網路狀態的目的。一般來講,ICMP 訊息並不一定要通過防火牆,只要由防火牆回應 ICMP 的訊息中,也可以瞭解內部網路的狀態。因此,封包過濾器收到 ICMP 封包後,除了必須判斷是否給予通過之外,還必須考慮是否可以給予回覆 ICMP 訊息。IP/ICMP 封包過濾可供判斷的訊息如下:(如圖 9-16 所示)
圖 9-16 IP/ICMP 封包過濾訊息 1. 來源位址(SA):封包的來源位址。 2. 目的位址(DA):封包的目的位址。 3. 協定型態(Protocol, Pro):ICMP 型態。 4. 訊息型態(Message Type, MT):表示此 ICMP 訊息的控制型態,如表 9-1 所示。 5. 編碼(Code):各種訊息型態中的次型態。 表 9-1 ICMP 訊息型態
|
翻轉工作室:粘添壽
網路規劃與管理技術:
翻轉電子書系列:
|