設定 Azure 防火牆規則

您可以使用傳統規則或防火牆原則,在 Azure 防火牆上設定 NAT 規則、網路規則和應用程式規則。 在手動設定規則以允許流量之前,Azure 防火牆預設會拒絕所有流量。

使用傳統規則時的規則處理方式

系統會根據規則類型的優先順序 (數字由低到高,100 到 65,000) 處理規則集合。 規則集合名稱只能有字母、數字、底線、句點或連字號。 其必須以字母或數字開頭,並以字母、數字或底線結束。 最大名稱長度為 80 個字元。

一開始最好先以 100 作為遞增單位,將規則集合的優先順序數字隔開 (100、200、300 等),以便有空間可在需要時新增更多規則集合。

使用防火牆原則時的規則處理方式

使用防火牆原則時,規則會組織在規則集合和規則集合群組內。 規則集合群組包含零個或多個規則集合。 規則集合的類型為NAT、網路或應用程式。 您可以在單一規則群組內定義多個規則集合類型。 您可以在規則集合中定義零個或多個規則。 規則集合中的規則必須屬於相同類型 (NAT、網路或應用程式)。

規則會根據規則集合群組優先順序和規則集合優先順序進行處理。 優先順序是介於 100 到 65,000 之間任何數位(優先順序最低)。 優先順序最高的規則集合群組會先處理。 在規則集合群組內,會先處理優先順序最高的規則集合(最低數位)。

如果防火牆原則繼承自父原則,則不論子原則的優先順序為何,父原則中的規則集合群組一律優先。

注意

應用程式規則一律會在網路規則之後處理,不論規則集合群組或規則集合優先順序和原則繼承為何,都會在DNAT規則之後進行處理。

以下是範例原則:

假設BaseRCG1是規則集合群組優先順序 (200),其中包含規則集合:DNATRC1、DNATRC3、NetworkRC1。
BaseRCG2 是規則集合群組優先順序 (300),其中包含規則集合:AppRC2、NetworkRC2。
ChildRCG1 是規則集合群組優先順序 (200),其中包含規則集合:ChNetRC1、ChAppRC1。
ChildRCG2 是包含規則集合的規則集合群組:ChNetRC2、ChAppRC2、ChDNATRC3。

根據下表:

名稱 類型 優先順序 規則 繼承來源
BaseRCG1 規則集合群組 200 8 父原則
DNATRC1 DNAT 規則集合 600 7 父原則
DNATRC3 DNAT 規則集合 610 3 父原則
NetworkRC1 網路規則集合 800 1 父原則
BaseRCG2 規則集合群組 300 3 父原則
AppRC2 應用程式規則集合 1200 2 父原則
NetworkRC2 網路規則集合 1300 1 父原則
ChildRCG1 規則集合群組 300 5 -
ChNetRC1 網路規則集合 700 3 -
ChAppRC1 應用程式規則集合 900 2 -
ChildRCG2 規則集合群組 650 9 -
ChNetRC2 網路規則集合 1100 2 -
ChAppRC2 應用程式規則集合 2000 7 -
ChDNATRC3 DNAT 規則集合 3000 2 -

初始處理:

此程式從檢查規則集合群組 (RCG) 作為最低數字開始,也就是優先順序為 200 的 BaseRCG1。 在此群組中,它會搜尋DNAT規則集合,並根據優先順序來評估它們。 在此情況下,會找到DNATRC1(優先順序 600)和DNATRC3(優先順序 610)並據以處理。
接下來,它會移至下一個 RCG BaseRCG2(優先順序 200),但找不到 DNAT 規則集合。
之後,它繼續進行兒童RCG1(優先300),也沒有DNAT規則集合。
最後,它會檢查 ChildRCG2 (優先順序 650),並尋找 ChDNATRC3 規則集合(優先順序 3000)。

規則集合群組內的反覆專案:

回到BaseRCG1,反覆項目會繼續進行,這次是NETWORK規則。 只會找到 NetworkRC1 (優先順序 800)。
然後,它會移至BaseRCG2,其中 NetworkRC2 (優先順序 1300) 位於其中。
繼續移至 ChildRCG1,它會將 ChNetRC1 (優先順序 700) 探索為網路規則。
最後,在 ChildRCG2 中,它會將 ChNetRC2 (優先順序 1100) 尋找為 NETWORK 規則集合。

應用程式規則的最終反覆專案:

返回BaseRCG1,程式會針對APPLICATION規則進行反覆運算,但找不到任何規則。
在BaseRCG2中,它會將AppRC2 (優先順序1200) 識別為APPLICATION規則。
在 ChildRCG1 中,ChAppRC1 (優先順序 900) 會以 APPLICATION 規則的形式找到。
最後,在 ChildRCG2 中,它會將 ChAppRC2 (優先順序 2000) 找出為 APPLICATION 規則。

總而言之,規則處理順序如下所示:DNATRC1、DNATRC3、ChDNATRC3、NetworkRC1、NetworkRC2、ChNetRC1、ChNetRC2、AppRC2、ChAppRC1、ChAppRC2。

此程式牽涉到依優先順序分析規則集合群組,並在每個群組內根據規則類型(DNAT、NETWORK 和 APPLICATION)的優先順序來排序規則。

因此,首先,所有 DNAT 規則都會從所有規則集合群組進行處理,並依優先順序分析規則集合群組,並依優先順序排序每個規則集合群組內的 DNAT 規則。 然後,網路規則的相同程序,最後用於APPLICATION規則。

如需防火牆原則規則集的詳細資訊,請參閱 Azure 防火牆 原則規則集

威脅情報

如果您啟用威脅情報型篩選,這些規則會是最高的優先順序,而且一律會先處理(在網路和應用程式規則之前)。 威脅情報篩選可能會在處理任何已設定的規則之前拒絕流量。 如需詳細資訊,請參閱 Azure 防火牆威脅情報型篩選

IDPS

在警示模式中設定 IDPS 時,IDPS 引擎會與規則處理邏輯平行運作,並針對輸入和輸出流程產生相符簽章的警示。 若與 IDPS 簽章相符,則會在防火牆記錄中記錄警示。 不過,由於 IDPS 引擎與規則處理引擎平行運作,因此應用程式/網路規則拒絕或允許的流量仍可能會產生另一個記錄專案。

在警示和拒絕模式中設定 IDPS 時,IDPS 引擎會在規則處理引擎之後內嵌並啟動。 因此,這兩個引擎都會產生警示,而且可能會封鎖比對流程。 

由 IDPS 執行的工作階段中斷會悄無聲息地封鎖流量。 因此,TCP 層級上不會傳送任何 RST。 由於IDPS會在網路/應用程式規則相符之後一律檢查流量(允許/拒絕),並在記錄中標示,因此IDPS決定因為簽章相符而拒絕會話的位置可能會記錄另一個 Drop 訊息。

啟用未加密和加密流量的 TLS 檢查時。 

輸出連線

網路規則和應用程式規則

如果您設定網路規則和應用程式規則,則會在應用程式規則之前依優先順序套用網路規則。 規則正在終止。 因此,如果在網路規則中找到相符專案,則不會處理任何其他規則。 如果已設定,IDPS 會在所有周遊流量和簽章相符時完成,IDPS 可能會發出警示或/並封鎖可疑流量。

如果沒有任何網路規則相符,且通訊協定為 HTTP、HTTPS 或 MSSQL,則應用程式規則會依優先順序評估封包。

針對 HTTP,Azure 防火牆 根據主機標頭尋找應用程式規則相符專案。 若為 HTTPS,Azure 防火牆只會根據 SNI 來尋找相符的應用程式規則。

在 HTTP 和 TLS 檢查的 HTTPS 案例中,防火牆會忽略封包的目的地 IP 位址,並使用來自主機標頭的 DNS 解析 IP 位址。 防火牆預期會在主機標頭中取得埠號碼,否則會假設標準埠 80。 如果實際 TCP 連接埠與主機標頭中的埠不符,則會捨棄流量。 DNS 解析會由 Azure DNS 或由自訂 DNS (若已在防火牆上設定) 來進行。 

注意

HTTP 和 HTTPS 通訊協定(使用 TLS 檢查)一律會填入 Azure 防火牆 XFF (X-Forwarded-For) 標頭等於原始來源 IP 位址。 

當應用程式規則包含 TLS 檢查時,防火牆規則引擎會處理 SNI、主機標頭,以及符合規則的 URL。

如果在應用程式規則中仍然找不到相符專案,則會根據基礎結構規則集合評估封包。 如果仍然沒有相符專案,則預設會拒絕封包。

注意

網路規則可以針對 TCP、UDP、ICMP 或任何 IP 通訊協定進行設定。 任何IP通訊協定都包含因特網指派號碼授權單位 (IANA) 通訊協定號碼檔中定義的所有IP通訊協定。 如果明確設定目的地埠,則規則會轉譯為 TCP+UDP 規則。 在 2020 年 11 月 9 日之前, 任何 表示 TCP 或 UDP 或 ICMP。 因此,您可能已在該日期 之前使用 Protocol = Any 設定規則,而 目的地埠 = '*'。 如果您不想允許目前定義的任何IP通訊協定,請修改規則以明確設定您想要的通訊協定(TCP、UDP 或ICMP)。

輸入連線

DNAT 規則和網路規則

您可以設定目的地網路位址轉換 (DNAT)來啟用輸入因特網連線,如使用 Azure 入口網站 篩選具有 Azure 防火牆 DNAT 的輸入流量中所述。 NAT 規則會依其優先順序,優先於網路規則套用。 如果找到相符專案,流量會根據DNAT規則轉譯,並由防火牆允許。 因此,流量不會受到其他網路規則的任何進一步處理。 基於安全性理由,建議的方法是新增特定的網際網路來源,以允許 DNAT 存取網路,並避免使用萬用字元。

應用程式規則不適用於輸入連線。 因此,若要篩選輸入 HTTP 或 HTTPS 流量,建議使用 Web 應用程式防火牆 (WAF)。 如需詳細資訊,請參閱什麼是 Azure Web 應用程式防火牆

範例

下列範例顯示其中一些規則組合的結果。

範例 1

因為有相符的網路規則,因此允許 google.com 連線。

網路規則

  • 動作:允許
NAME 通訊協定 來源類型 來源 目的地類型 目的地位址 目的地連接埠
Allow-web TCP IP 位址 * IP 位址 * 80,443

應用程式規則

  • 動作:Deny
NAME 來源類型 來源 通訊協定:連接埠 目標 FQDN
Deny-google IP 位址 * http:80,https:443 google.com

結果

允許連線至 google.com,因為封包符合 Allow-web 網路規則。 正在處理的規則會於此時停止。

範例 2

SSH 流量遭到拒絕,因為較高的優先順序 拒絕 網路規則集合會封鎖它。

網路規則集合 1

  • 名稱:Allow-collection
  • 優先順序:200
  • 動作:允許
NAME 通訊協定 來源類型 來源 目的地類型 目的地位址 目的地連接埠
Allow-SSH TCP IP 位址 * IP 位址 * 22

網路規則集合 2

  • 名稱:Deny-collection
  • 優先順序:100
  • 動作:Deny
NAME 通訊協定 來源類型 來源 目的地類型 目的地位址 目的地連接埠
Deny-SSH TCP IP 位址 * IP 位址 * 22

結果

SSH 連線遭到拒絕,因為較高的優先順序網路規則集合會封鎖它。 正在處理的規則會於此時停止。

規則變更

如果您將規則變更為拒絕先前允許的流量,則會捨棄任何相關的現有工作階段。

三向交握行為

作為具狀態服務,Azure 防火牆 完成從來源到目的地的允許流量的 TCP 三向交握。 例如,VNet-A 到 VNet-B。

建立允許從 VNet-A 到 VNet-B 的規則,不表示就允許起始從 VNet-B 到 VNet-A 的新連線。

因此,不需要建立從 VNet-B 到 VNet-A 的明確拒絕規則。 如果您建立此拒絕規則,您會中斷從 VNet-A 到 VNet-B 的初始允許規則的三向交握。

下一步