30.2. 防火牆概念

一個規則集 (Ruleset) 中會有一群根據封包內的資料來判斷通過或封鎖的規則,主機間雙向的封包交換構成一個連線階段的對話,防火牆規則集會同時處理接收自網際網路的封包以及由系統所產生的回應封包,每一個 TCP/IP 服務都會預先定義其通訊協定以及要傾聽的埠,要送往指定服務的封包會誕生在來源位址,使用一個不需特殊權限的埠並傳送給目標位址上特定服務的埠,所有上述過程中的參數均可用來當做建立規則的篩選條件,來允許或封鎖服務。

要查詢一個不清楚的埠號,可參考 /etc/services,或者至 http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers 查詢埠號來找出特定埠號的用途。

查看這個連結來了解有那些埠號會被木馬程式使用 http://www.sans.org/security-resources/idfaq/oddports.php

FTP 有兩個模式:主動 (Active) 模式與被動 (Passive) 模式,兩者的差異在於取得資料通道的方式,被動模式會較安全,由於資料通道會取自 FTP 連線請求者。想要取得 FTP 與兩種模式更進一步的說明,詳見 http://www.slacksite.com/other/ftp.html

防火牆規則集可以為排除式 (exclusive) 或者內含式 (inclusive),一個排除式的防火牆會允許所有的連線通過除了符合規則集的連線,內含式的防火牆則會反過來只允許符合規則集的連線並封鎖其他任何的連線。

內含式的防火牆對於外發的流量有較好的控制,使其成為提供網際網路服務的系統的最佳選擇,它同時可以控制可存取私有網路的網際網路連線,所有不符合該規則的連線會被封鎖並記錄。一般來說,內含式的防火牆會比排除式的防火牆安全,因為內含式的防火牆可以明顯的減少不必要連線所造成風險。

注意:

除非另有說明,否則所有在此章節的範例規則集均為內含式防火牆規則集。

使用具狀態防火牆 (Stateful firewall) 可以更進一步加強安全性,這種類型的防火牆可持續追蹤連線,只允許與現有連線相符的封包或符合允許條件的新連線通過。

狀態過濾技術 (Stateful filtering) 將所有的流量當做是一個由雙向封包交換所組成的連線階段,當在符合的規則上指定狀態 (State) 時,防火牆會自動產生內部規則來處理該連線階段中每個預期會通過的封包,這種防火牆有足夠的比對能力可以辨別是否為同一個連線階段的封包,任何不符合連線階段樣板的封包都會被自動拒絕。

當連線階段結束時,該規則將會動態狀態表 (Dynamic state table) 中移除。

Stateful filtering 讓管理者可以專注於封鎖/傳遞新的連線階段,若新的連線階段通過,那麼該連線階段後續的封包將會自動允許通過,且任何假冒的封包會自動被拒絕。若新的連線階最被封鎖,將不允許其任何後續的封包。Stateful filtering 提供了進階的比對能力,能夠抵禦不同種類由攻擊者發動的 flood 攻擊。

NAT 代表 Network Address Translation 即網路位址轉譯,NAT 功能讓在防火牆之後的私有 LAN 可以共用一個 ISP 分配的 IP 位址 (甚至是動態分配的),NAT 每一台在該 LAN 中的電腦均可連線網際網路,而不需要支付 ISP 多個網路帳號或 IP 位址的額外費用。

NAT 在當封包要外送到防火牆之外的網際網路時,會自動轉譯每一台電腦在私有 LAN 的 IP 位址成為一個公有 IP 位址,它也同樣會對回傳的封包做反向轉譯。

根據 RFC1918,會保留以下範圍的 IP 位址做為私有網路使用,永遠不會被傳送到網際網路,因此可供 NAT 使用:

警告:

在使用防火牆規則時要非常小心,有一些設定會將管理者鎖在伺服器之外,保險起見的方式是在本機的 Console 做初次的防火牆設定,不要直接由遠端透過 ssh 來設定防火牆。

本文及其他文件,可由此下載: ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。

關於本文件的問題,請洽詢 <doc@FreeBSD.org>。