封包过滤

**防火牆**（英語：**Firewall**）在電腦科學領域中是一個架設在網際網路與內網之間的資安系統，根據持有者預定的策略來監控往來的傳輸。防火牆可能是一台專屬的網路裝置，也可執行於主機之上，以檢查各個網路介面的網路傳輸。它是目前最重要的一種網路防護裝置，從專業角度來說，防火牆是位於兩個或以上網路間，實行網路間存取或控制的一組元件集合之硬體或軟體。

## 功能

防火牆最基本的功能就是隔離網路，透過將網路劃分成不同的區域（通常情況下稱為 ZONE），制定出不同區域之間的存取控制策略來控制不同信任程度區域間傳送的資料流。例如網際網路是不可信任的區域，而內部網路是高度信任的區域。以避免安全策略中禁止的一些通信。它有控制資訊基本的任務在不同信任的區域。 典型信任的區域包括網際網路 (一個沒有信任的區域) 和一個內部網路 (一個高信任的區域) 。 最終目標是：根據最小特權原則，在不同水平的信任區域，透過連通安全政策的執行，提供受控制的連通性。
例如：TCP/IP Port 135~139 是 Microsoft Windows 的【網路上的芳鄰】所使用的。如果電腦有使用【網路上的芳鄰】的【共用資料夾】，又沒使用任何防火牆相關的防護措施的話，就等於把自己的【共用資料夾】公開到 Internet，使得任何人都有機會瀏覽目錄內的檔案。且早期版本的 Windows 有【網路上的芳鄰】系統溢位的無密碼保護的漏洞（這裡是指【共用資料夾】有設密碼，但可經由此系統漏洞，達到無須密碼便能瀏覽資料夾的需求）。防火牆的本義，是指古代構築和使用木製結構房屋時，為防止火災發生及蔓延，人們將堅固石塊堆砌在房屋周圍做為屏障，這種防護結構建築就被稱為防火牆。現代網路時代參照此喻意，指隔離本機網路與外界網路或是區域網路間與網際網路或網際網路的一道防禦系統，藉由控制過濾限制訊息來保護內部網路資料的安全。

## 防火牆類型

針對普通使用者的個人防火牆，通常是在一部電腦上具有封包過濾功能的軟體，如 ZoneAlarm 及 Windows XP SP2 後內建的防火牆程式。而專業的防火牆通常為網路裝置，或是擁有 2 個以上網路介面的電腦。以作用的 TCP/IP 堆疊區分，主要分為**網路層防火牆**和**應用層防火牆**兩種，但也有些防火牆是同時運作於網路層和應用層。

### 網路層 (封包過濾型) 防火牆

運作於 TCP/IP 協定堆疊上。管理者會先根據企業 / 組織的策略預先設定好封包通過的規則或採用內建規則，只允許符合規則的封包通過。

一般而言，由於來源 IP 不易阻擋，通常藉由阻擋非 80/443 的埠，以阻擋來自非 80/443 的埠的不需要的流量。

網路層防火牆可分為：狀態感知 (stateful) 與無狀態感知 (stateless)。

* 狀態感知 (stateful)

狀態感知防火牆會針對活動中的連線維護前後傳輸的脈絡，並使用這些狀態資訊來加速封包過濾處理。

根據需求，現行的網路連線由各種性質描述，包括：來源端 IP 位置，目的端 IP 位置、UDP 或 TCP 埠口號碼，以及連線所處的狀態階段 (連線初始化、交握中，資料傳輸中、或完成連線)。

如果有封包與現存連線不符，防火牆會根據規則來評估此封包是否該屬於另外一個新連線。如果封包符合現存連線，防火牆會根據自己所建立的狀態表完成比對，該封包就不必額外處理，即可通過兩端網路。

* 無狀態感知 (stateless)

無狀態感知防火牆所需較少的記憶體，針對於通過的封包，作比較簡易與快速的過濾。如此，相較於查詢對話工作期間 (session)，無狀態感知防火牆所耗的時間也較少。

這種防火牆可處理無狀態網路通訊協定，這種協定並沒有對話工作期間 (session) 的概念。

反之，這種防火牆無法根據溝通的兩端所處的狀態階段作出複雜的決策。

我們也能以另一種較寬鬆的角度來制定防火牆規則，只要封包不符合任何一項「否定規則」就予以放行。現在的作業系統及網路裝置大多已內建防火牆功能。

較新的防火牆能利用封包的多樣屬性來進行過濾，例如：來源 IP 位址、來源埠號、目的 IP 位址或埠號、服務類型 (如 HTTP 或是 FTP)。也能經由通訊協定、TTL 值、來源的網域名稱或網段... 等屬性來進行過濾。

### 應用層防火牆

應用層防火牆是在 TCP/IP 堆疊的「應用層」上運作，使用瀏覽器時所產生的資料流或是使用 FTP 時的資料流都是屬於這一層。應用層防火牆可以攔截進出某應用程式的所有封包，並且封鎖其他的封包 (通常是直接將封包丟棄)。理論上，這一類的防火牆可以完全阻絕外部的資料流進受保護的機器裡。

防火牆藉由監測所有的封包並找出不符規則的內容，可以防範電腦蠕蟲或是木馬程式的快速蔓延。實際上，這個方法繁復（因軟體種類極多），所以大部份防火牆都不會考慮以這種方法設計。

截至 2012 年，所謂的下一代防火牆（NGFW）都只是「拓寬」並「深化」了在套用棧檢查的能力。例如，現有支援深度分組檢測的現代防火牆均可延伸成入侵預防系統（IPS），使用者身分整合（使用者 ID 與 IP 或 MAC 位址繫結），和 Web 套用防火牆（WAF）。

### 代理服務

代理（Proxy）伺服器（可以是一台專屬的網路裝置，或是在一般電腦上的一套軟體）採用應用程式的運作方式，回應其所收到的封包（例：連線要求）來實現防火牆的功能，而封鎖 / 拋棄其他封包。

代理伺服器用來連接一個網路 (例：網際網路) 到另一個特定子網 (例：企業內網) 的轉送者。

代理會使從外部網路竄改一個內部系統更加困難，且只要對於代理有良好的設定，即使內部系統出現問題也不一定會造成安全上的漏洞。相反地，入侵者也許劫持一個公開可及的系統和使用它作為代理人為他們自己的目的；代理人偽裝作為那個系統對其它內部機器。當對內部位址空間的用途增加安全，破壞者也許仍然使用方法譬如 IP 欺騙（IP spoofing）試圖通過封包對目標網路。

防火牆經常有網路位址轉換 (NAT) 的功能，並且主機被保護在防火牆之後共同地使用所謂的「私人位址空間」，定義在 RFC 1918。

防火牆的適當的組態要求技巧和智慧型，它要求管理員對網路協定和電腦安全有深入的了解，因小差錯可使防火牆不能作為安全工具。

## 防火牆架構

### 主機型防火牆

此防火牆需有兩張網路卡，一張與網際網路連接，另一張與內部網路連接，如此網際網路與內部網路的通道無法直接接通，所有封包都需要透過主機傳送。

### 雙閘型防火牆

此防火牆除了主機型防火牆的兩張網路卡外，另安裝應用服務轉送器的軟體，所有網路封包都須經過此軟體檢查，此軟體將過濾掉不被系統所允許的封包。

### 屏障單機型防火牆

此防火牆的硬體裝置除需要主機外，還需要一個路由器，路由器需具有封包過濾的功能，主機則負責過濾及處理網路服務要求的封包，當網際網路的封包進入屏障單機型防火牆時，路由器會先檢查此封包是否滿足過濾規則，再將過濾成功的封包，轉送到主機進行網路服務層的檢查與傳送。

### 屏障雙閘型防火牆

將屏障單機型防火牆的主機換成雙閘型防火牆。

### 屏障子網域型防火牆

此防火牆藉由多台主機與兩個路由器組成，電腦分成兩個區塊，屏障子網域與內部網路，封包經由以下路徑，第一個路由器 -> 屏障子網域 -> 第二路由器 -> 內部網路，此設計因有階段式的過濾功能，因此兩個路由器可以有不同的過濾規則，讓網路封包更有效率。若一封包通過第一過濾器封包，會先在屏障子網域進行服務處理，若要進行更深入內部網路的服務，則要通過第二路由器過濾。

## 缺點

正常狀況下，所有網際網路的封包軟體都應經過防火牆的過濾，這將造成網路交通的瓶頸。例如在攻擊性封包出現時，攻擊者會不時寄出封包，讓防火牆疲於過濾封包，而使一些合法封包軟體亦無法正常進出防火牆。

## 相關條目

* Windows 防火牆
* 電腦安全
* TCP/IP 埠列表
* 狀態防火牆
* 整合式威脅管理（UTM）
* 次世代防火牆
* 稜鏡計劃（美國）
* 防火長城（中國）

## 外部連結

* 科摩多免費防火牆 （頁面存檔備份，存於網際網路檔案館）
* 賽門鐵克線上檢測
* 資訊安全機構 Matousec.com 對個人防火牆進行的防漏洞測試（Leak test）排名 （頁面存檔備份，存於網際網路檔案館）
* Juniper 網路公司防火牆 / IPSec VPN （頁面存檔備份，存於網際網路檔案館）

## 參考資料