防火牆、IDS、IPS、WAF 的差異:檢查範圍、阻擋或通報、保護對象比較

四者都是防範經由網路而來之攻擊的機制,但檢查的範圍與發現時的動作不同。防火牆依 IP 位址、連接埠號碼等規則,只讓允許的通訊通過。IDS(入侵偵測系統)會檢查到通訊的內容,找出疑似攻擊的通訊並通知管理者,但不會阻擋通訊。IPS(入侵防禦系統)配置在通訊的路徑上,當場阻擋發現的攻擊。WAF(Web 應用程式防火牆)檢查 HTTP 請求的內容,防範 SQL 隱碼攻擊這類針對 Web 應用程式的攻擊。沒有一種能單獨保護所有部分,因此會搭配使用。

項目防火牆IDSIPSWAF
主要檢查的內容來源與目的地的 IP 位址、連接埠號碼、通訊的狀態(網路層、傳輸層)。也有能辨識應用程式的產品從封包的標頭到內容(網路層到應用層)與 IDS 相同,從封包的標頭到內容HTTP、HTTPS 請求與回應的內容(應用層)
在通訊路徑上的配置方式在路徑上(串接,inline)多半在路徑之外。從交換器的鏡像連接埠等接收通訊的副本在路徑上(串接)在路徑上。以反向代理或雲端服務的形式,配置在 Web 伺服器之前
偵測到時的動作阻擋規則未允許的通訊發出警示並記錄。不阻擋通訊本身阻擋該通訊,或切斷連線阻擋判定為攻擊的請求。也有只偵測並記錄的模式
判定的方法允許與拒絕的規則(位址、連接埠、通訊狀態)與已知攻擊模式(特徵碼,signature)比對,以及觀察是否偏離平常通訊的異常偵測與 IDS 相同,以特徵碼與異常偵測SQL 隱碼攻擊、跨網站指令碼等攻擊模式的規則,以及定義允許之輸入的規則
主要保護的對象網路的出入口。不讓未允許的通訊進入內部監視網路與伺服器。察覺攻擊或入侵的徵兆保護網路上的伺服器與端點,抵禦已知的攻擊Web 應用程式。防範利用應用程式漏洞的攻擊
誤判的影響規則錯誤會使正當的通訊中斷誤判多時警示會被淹沒,增加維運人員的負擔。業務通訊不會中斷誤判會直接造成正當通訊被阻擋,因此需要謹慎調校若將含符號的文字等正當輸入判定為攻擊,使用者的操作就會失敗
配置位置的例子公司內部網路與網際網路的邊界、網路區段之間、各伺服器與端點上想監視的網路區段(網路型),或伺服器上(主機型)與網際網路的邊界上,例如防火牆的內側公開的 Web 伺服器之前
限制無法阻擋經由允許之連接埠進來的攻擊(例如利用 Web 應用程式漏洞的攻擊)。沒有加密通訊的功能只能偵測,無法阻擋。除非配置在可解密的位置,否則無法檢查以 TLS 加密之通訊的內容沒有特徵碼的未知攻擊需仰賴異常偵測,容易漏掉。看不到加密的內容。處理能力可能成為通訊的瓶頸不保護 Web 以外的通訊。並不會修正應用程式本身的漏洞

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

防火牆
在任何網路中都是最先配置的基本對策。只允許必要的通訊,其餘一律阻擋。
IDS
想避免中斷通訊的風險,同時察覺攻擊或入侵的徵兆時。也用來留下調查所需的記錄。
IPS
想不必等待人員判斷,就自動阻擋已知攻擊時。一般會先以只偵測的模式調校,再啟用阻擋,以免誤判中斷業務通訊。
WAF
公開 Web 應用程式時。在來不及修正漏洞的期間也可作為應急對策,但不能取代應用程式端的修正。

常見問題

IDS 與 IPS 最大的差異是什麼?

在於是否阻擋發現的攻擊。IDS 多半接收通訊的副本進行檢查,只發出警示,不干涉通訊。IPS 配置在通訊路徑上,當場阻擋判定為攻擊的通訊。因此在 IPS 中,誤判會造成正當通訊被阻擋,也需要考慮設備故障時不會讓整個通訊中斷。許多產品能以同一台設備切換兩種模式。

有了防火牆,還需要 WAF 嗎?

兩者角色不同,公開 Web 應用程式時兩者並用是有意義的。防火牆一旦允許連到 Web 伺服器 443 號連接埠的通訊,就不會區分其內容是正當請求還是攻擊。WAF 則檢查 HTTP 請求的內容,找出並阻擋 SQL 隱碼攻擊、跨網站指令碼等攻擊模式。

IDS 或 IPS 能檢查加密通訊的內容嗎?

直接無法檢查。要檢查以 TLS 加密之通訊的內容,需要配置在終結 TLS 的設備(反向代理或 WAF 等)之後,或由設備先解密再檢查。不解密時,就只能從通訊的目的地、流量、時間上的模式等找出異常。

次世代防火牆(NGFW)是什麼?

是指在傳統的位址與連接埠規則之外,將從通訊內容辨識應用程式的功能、IPS 的功能等整合在一台設備中的防火牆。各產品包含的功能不同,使用時要確認它檢查哪些層、能阻擋什麼。

理解度檢測

下列關於防火牆(封包過濾型)基本功能的敘述,何者正確?

  1. A把通訊內容加密,防止在途中的路徑上被竊聽
  2. B依據以來源與目的地IP位址、連接埠號碼等為基礎的規則,只讓允許的通訊通過,其餘一律阻擋
  3. C把收到的封包分配給多台伺服器,以分散處理負載
查看答案與解析

正確答案:B. 依據以來源與目的地IP位址、連接埠號碼等為基礎的規則,只讓允許的通訊通過,其餘一律阻擋

防火牆設置於公司內部網路與網際網路的邊界等處,依預先決定的規則允許或拒絕通訊。例如設定為「從外部只允許連到公開Web伺服器443號連接埠的通訊,其他從外部發起的連線一律拒絕」。現在多數的防火牆會進行記錄通訊狀態的狀態檢測(stateful inspection),自動放行從內側發起之通訊的回傳封包。防火牆不會加密,因此要保護通訊需與TLS或VPN搭配。此外,它無法阻擋經由允許之連接埠進來的攻擊(例如利用Web應用程式弱點的攻擊),因此也會搭配WAF等其他對策。

在某網頁應用程式的登入畫面中,只要在密碼欄位輸入 ' OR '1'='1 之類的字串,不知道密碼也能登入。這種攻擊稱為什麼?

  1. ASQL隱碼攻擊
  2. B跨網站指令碼攻擊
  3. C目錄遍歷
查看答案與解析

正確答案:A. SQL隱碼攻擊

SQL隱碼攻擊是利用網頁應用程式把使用者的輸入直接當作字串串接起來,組成對資料庫的命令(SQL敘述)的攻擊。例如在組出「密碼等於'輸入值'」條件之處放入 ' OR '1'='1,引號會把字串結束,並附加上「或'1'等於'1'」這個永遠成立的條件。結果不知道密碼條件也會成立,因而能夠登入。同樣的手法也可能用來竊取、竄改或刪除資料。根本的對策是使用不會把輸入解讀為命令一部分的機制,也就是使用預留位置的參數化查詢(prepared statement)。

某留言板網頁應用程式有一個漏洞:使用者張貼的文章中所含的指令碼,會在其他瀏覽者的瀏覽器中執行。此漏洞的名稱與根本對策的組合,正確的是哪一項?

  1. ASQL隱碼攻擊。加長連接資料庫所用的密碼
  2. B跨網站指令碼(XSS)。把張貼的文章以HTML輸出時,跳脫 < 與 > 等具有特殊意義的字元
  3. C跨網站指令碼(XSS)。以HTTPS加密伺服器與瀏覽器之間的通訊
查看答案與解析

正確答案:B. 跨網站指令碼(XSS)。把張貼的文章以HTML輸出時,跳脫 < 與 > 等具有特殊意義的字元

跨網站指令碼(XSS)是網頁應用程式把使用者的輸入直接輸出到HTML中,導致輸入所含的指令碼作為網頁的一部分,在瀏覽者的瀏覽器中執行的漏洞。指令碼是以該網站的網頁身分執行,因此可能竊取瀏覽者的工作階段資訊(Cookie),或顯示假的輸入欄位。根本的對策是依輸出的位置,把 <、>、& 與引號等具有特殊意義的字元跳脫(例如把 < 轉換為 &lt;),使其只顯示為一般字元。輔助的對策包括為Cookie加上HttpOnly屬性使指令碼無法讀取,以及以內容安全性原則限制可執行的指令碼。HTTPS保護的是通訊路徑,無法防止嵌入合法網頁中的指令碼執行。

  1. 下列何者正確描述零時差攻擊?
  2. 下列何者正確描述DDoS攻擊?
  3. 關於反向代理的說明,下列何者正確?

前往資訊安全基礎的練習題

相關名詞的解說

連接埠號碼
TCP與UDP用來區分通訊要給終端上哪一個應用程式的0~65535編號。HTTP的80、HTTPS的443、DNS的53等0~1023的編號稱為知名連接埠。
OSI參考模型
把通訊功能分為實體層、資料連結層、網路層、傳輸層、會議層、表現層、應用層7層來整理的模型。用來作為分別思考各層角色的共通語言。
SQL隱碼攻擊
利用網頁應用程式把使用者的輸入直接串接來組成SQL敘述,以輸入改變命令的意義,不當操作資料庫的攻擊。使用預留位置的參數化查詢(prepared statement)是根本的對策。
跨網站指令碼(XSS)
網頁應用程式把使用者的輸入直接輸出到HTML中,導致輸入所含的指令碼以該網站網頁的身分在瀏覽者的瀏覽器中執行的漏洞。輸出時跳脫具有特殊意義的字元是根本的對策。
反向代理
放在網頁伺服器前方,代替伺服器接收使用者的請求,並轉送給後方一台或多台伺服器的伺服器。負責集中處理HTTPS的加密(TLS終止)、保存並回傳常用的回應、把負載分散到多台伺服器、隱藏後方伺服器的架構等角色。與放在使用者端、代替使用者連線到外部網站的正向代理相比,放置的位置與保護的對象不同。
TLS
Transport Layer Security(傳輸層安全性協定)。進行通訊加密、竄改偵測,以及以憑證驗證伺服器的協定。HTTPS是以TLS保護的HTTP。
零時差攻擊
在軟體漏洞被發現後、修補程式提供之前的期間,利用該漏洞進行的攻擊。由於無法以修補程式防範,要以多層對策抑制損害。

相關的比較