控制傳出網路存取是整體網路安全性計畫的重要部分。 例如,你可能想限制網站的存取權限。 或者,限制可存取的輸出 IP 位址和連接埠。
你可以透過使用 Azure 防火牆和防火牆政策來控制來自 Azure 子網的外撥網路存取。 透過使用 Azure Firewall 和防火牆政策,您可以設定:
- 應用程式規則,用以定義可從子網路存取的完整網域名稱 (FQDN)。
- 網路規則,用以定義來源位址、通訊協定、目的地連接埠和目的地位址。
當您將網路流量路由傳送到防火牆作為子網路預設閘道時,網路流量必須遵守設定的防火牆規則。
在這個教學中,你會建立一個簡化的單一虛擬網路(VNet),包含兩個子網,方便部署。
- AzureFirewallSubnet - 防火牆位於此子網路中。
- Workload-SN - 工作負載伺服器位於此子網路中。 此子網路的網路流量會通過防火牆。
在生產部署時,使用 樞紐輻射模式,防火牆放在自己的 VNet 中。 工作負載伺服器位於相同區域中的對等互連 VNet,其中包含一個或多個子網路。
在本教學課程中,您會了解如何:
- 設定測試網路環境
- 部署防火牆與防火牆原則
- 建立預設路由
- 設定應用程式規則以允許存取 www.google.com
- 設定允許存取外部 DNS 伺服器的網路規則
- 設定 NAT 規則,允許對測試伺服器進行 HTTP 輸入存取
- 測試防火牆
如果你願意,可以用 Azure PowerShell 完成這個程序。
先決條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
設定網路
首先,建立資源群組以包含部署防火牆所需的資源。 接著建立虛擬網路、子網路與測試伺服器。
建立資源群組
資源群組包含教學課程的所有資源。
登入 Azure 入口網站。
在 Azure 入口網站選單中,選擇 資源群組 ,或從任一頁面搜尋並選擇 資源群組 ,然後選擇 建立。 輸入或選取下列值:
設定 值 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 輸入 Test-FW-RG。 區域 選取區域。 您建立的所有其他資源都必須在相同區域中。 選擇檢閱 + 建立>建立。
建立 VNet
此 VNet 有兩個子網。
附註
AzureFirewallSubnet 子網路的大小為 /26。 如需子網路大小的詳細資訊,請參閱 Azure 防火牆常見問題集。
在 Azure 入口網站選單或 從 Home 選單,選擇 建立資源,搜尋 虛擬網路,然後選擇 建立。
輸入或選取下列值:
設定 值 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 選取 Test-FW-RG。 名稱 輸入 Test-FW-VN。 區域 選取您先前使用的相同位置。 再選 兩次「下一步 」即可進入 IP 位址 標籤。
在 IPv4 位址空間,接受預設值 10.0.0.0/16。
在 [子網路] 下,選取 [預設]。 在 編輯子網路 面板,將 子網目的 設為 Azure Firewall。
防火牆位於此子網中,子網名稱 必須是 AzureFirewallSubnet。
對於 起始位址,輸入 10.0.1.0,然後選擇 儲存。
選擇 新增子網路 並輸入以下數值,然後選擇 新增:
設定 值 子網路名稱 Workload-SN 起始位址 10.0.2.0/24 選擇檢閱 + 建立>建立。
部署 Azure Bastion
部署 Azure Bastion Developer edition 以安全連接 Srv-Work 虛擬機進行測試。
在入口網站頂端的搜尋框中輸入 Bastion ,並從結果中選擇 堡壘 。 選擇 建立 並輸入以下數值:
設定 值 項目詳細數據 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 選取 Test-FW-RG。 實例詳細數據 名稱 進入Test-Bastion。 區域 選取您先前使用的相同位置。 層 選擇 開發者。 虛擬網路 選擇測試-FW-VN。 子網路 AzureBastionSubnet 會自動建立,位址空間為 10.0.0.0/26。 選擇檢閱 + 建立>建立。
部署需要數分鐘的時間才能完成。
建立虛擬機器
建立工作負載虛擬機並將其置於 Workload-SN 子網。
在入口網站頂端的搜尋框中輸入 虛擬機,選擇 虛擬機,然後選擇 建立>虛擬機。
為虛擬機器輸入或選取下列值:
設定 值 項目詳細數據 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 選取 Test-FW-RG。 實例詳細數據 虛擬機器名稱 輸入 Srv-Work。 區域 選取您先前使用的相同位置。 可用性選項 選擇選項「不需要基礎結構備援」。 安全性類型 選取 [標準]。 影像 Select Ubuntu Server 24.04 LTS -x64 Gen2 大小 選取虛擬機器大小。 系統管理員帳戶 使用者名稱 輸入azureuser。 SSH 公開金鑰來源 選取 [產生新的金鑰組]。 金鑰組名稱 輸入Srv-Work_key。 在 入站埠規則下,將 公共入站埠 設為 無。
接受其他預設選項,並在 網路 標籤中確認已選擇 Test-FW-VN / 工作負載-SN , 且公共 IP 為 None。
選擇檢閱 + 建立>建立。 當提示時,選擇 下載私鑰,建立資源 並儲存金鑰檔案。
部署完成後,記錄 Srv-Work 的私有 IP 位址以備後續使用。
安裝網頁伺服器
連接虛擬機並安裝網頁伺服器進行測試。
在 Test-FW-RG 資源群組中,選擇 Srv-Work 虛擬機器。
選擇 Operations>Run 指令>RunShellScript,輸入以下指令,然後選擇 執行:
sudo apt-get update sudo apt-get install -y nginx echo "<html><body><h1>Azure Firewall DNAT Test</h1><p>If you can see this page, the DNAT rule is working correctly!</p></body></html>" | sudo tee /var/www/html/index.html等劇本成功完成。
部署防火牆與原則
將防火牆部署到虛擬網路中。
在 Azure 入口網站選單或 從 Home 選單,選擇 建立資源,搜尋 防火牆,然後選擇 建立。
在 建立防火牆時,請使用以下表格來設定防火牆:
設定 值 項目詳細數據 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 選取 Test-FW-RG。 實例詳細數據 名稱 輸入 Test-FW01。 區域 選取您先前使用的相同位置。 防火牆 SKU 選取 [標準]。 防火牆管理 選取 [使用防火牆原則管理此防火牆]。 防火牆原則 選取新增,然後輸入 fw-test-pol。
選取您先前使用的相同區域。 選取確定。選擇虛擬網路 選取使用現有項目,然後選取 Test-FW-VN。 忽略關於原力隧道的警告。 該警告會在後續步驟中解決. 公用 IP 位址 選取新增,然後在名稱輸入 fw-pip。 選取確定。 清除啟用防火牆管理網卡的勾選框,接受其他預設值,然後選擇檢視 + 建立,然後建立。
這個流程需要幾分鐘才能部署。
部署結束後,前往 Test-FW-RG,選擇 Test-FW01 防火牆,並記錄私有與公網 IP 位址以供日後使用。
建立預設路由
在 Workload-SN 子網路,設定傳出預設路由以透過防火牆。
搜尋並選擇 路由表,選擇 建立,並輸入以下數值:
設定 值 項目詳細數據 訂用帳戶 選取 Azure 訂用帳戶。 資源群組 選取 Test-FW-RG。 實例詳細數據 名稱 輸入 Firewall-route。 區域 選取您先前使用的相同位置。 選擇檢閱 + 建立>建立。
在部署完成後,選取 [前往資源]。
在 防火牆路由 選區,在 設定中選擇 子網>關聯。
虛擬網路選擇 Test-FW-VN,子網路選擇 Workload-SN。 選取確定。
選擇「新增>」,並輸入以下數值:
設定 值 路線名稱 fw-dg 目的地類型 IP 位址 目的地 IP 位址/CIDR 範圍前綴 0.0.0.0/0 下一個躍點類型 虛擬設備 下一個跳點位址 你之前提過的防火牆私有 IP 位址 附註
Azure 防火牆實際上是受管理的服務,但虛擬設備可在此情況下運作。
選取新增。
設定應用程式規則
此應用規則允許對 www.google.com 的外發存取。
開啟 Test-FW-RG 資源群組,並選取 fw-test-pol 防火牆原則。
在設定>規則中,選擇「應用程式規則>」,新增規則集合。
輸入下列值:
設定 值 名稱 App-Coll01 Priority 200 規則集合動作 允許 規則 名稱 允許Google 來源類型 IP 位址 來源 10.0.2.0/24 協定:埠 http,https 目的地類型 FQDN 目的地 www.google.com選取新增。
Azure 防火牆包含內建的規則集合,適用於依預設允許的基礎結構 FQDN。 這些 FQDN 是平台專用的,不能用於其他用途。 如需詳細資訊,請參閱基礎結構 FQDN。
請等待應用程式規則部署完成後再繼續。
設定網路規則
此網路規則允許透過 53 埠(DNS)出站存取兩個 IP 位址。
選擇網路規則>,新增規則集合。
輸入下列值:
設定 值 名稱 Net-Coll01 Priority 200 規則集合動作 允許 規則集合群組 DefaultNetworkRuleCollectionGroup 規則 名稱 允許DNS系統 來源類型 IP 位址 來源 10.0.2.0/24 通訊協定 UDP 目的地連接埠 53 目的地類型 IP 位址 目的地 209.244.0.3,209.244.0.4 (由 CenturyLink 營運的公共 DNS 伺服器) 選取新增。
請等網路規則部署完成後再繼續。
設定 DNAT 規則
此規則透過防火牆連接到 Srv-Work 虛擬機上的網頁伺服器。
選擇 DNAT 規則>新增規則集合。
輸入下列值:
設定 值 名稱 HTTP Priority 200 規則集合群組 DefaultDnatRuleCollectionGroup 規則 名稱 HTTP-NAT 來源類型 IP 位址 來源 * 通訊協定 TCP 目的地連接埠 80 目的地 防火牆的公共 IP 位址 已轉譯的類型 IP 位址 已轉譯位址 Srv-Work 私人 IP 位址 已轉譯連接埠 80 選取新增。
變更 Srv-Work 網路介面的主要與次要 DNS 位址
為了在本教學課程中進行測試,請設定伺服器的主要與次要 DNS 位址。 這個設定並非一般 Azure 防火牆的要求。
- 在 Test-FW-RG 資源群組中,選擇 Srv-Work 虛擬機的網路介面。
- 在 設定中,選擇 DNS 伺服器>自訂。
- 輸入 209.244.0.3 和 209.244.0.4 作為 DNS 伺服器,然後選擇 儲存。
- 重新啟動 Srv-Work 虛擬機器。
測試防火牆
現在請測試防火牆,以確認其運作符合預期。
測試 DNAT 規則
- 在你本機電腦的網頁瀏覽器中,輸入
http://<firewall-public-ip-address>。 - 你可以看到自訂網頁: Azure Firewall DNAT 測試。 這證明了 DNAT 規則確實有效。
測試應用程式與網路規則
使用 Azure Bastion 安全連接 Srv-Work 虛擬機並測試防火牆規則。
在 Test-FW-RG 資源群組中,選擇 Srv-Work 虛擬機,然後選擇透過 Bastion 連接>。
在堡壘頁面,輸入或選擇以下數值:
設定 值 驗證類型 從 本地檔案選擇 SSH 私鑰。 使用者名稱 輸入azureuser。 本地檔案 選擇 瀏覽 ,並選擇你在虛擬機建立時下載的 Srv-Work_key.pem 檔案。 選擇 連線。
一個新的瀏覽器分頁會開啟,並以 SSH 會話連接到 Srv-Work 虛擬機器。
在 SSH 會話中,輸入以下指令以測試 Google 存取權限:
curl -I https://www.google.com你會看到成功的 HTTP 回應(200 OK),表示應用程式規則允許存取 Google。
現在測試 Microsoft 的存取權限,應該會被封鎖。 輸入:
curl -I https://www.microsoft.com指令約 60 秒後逾時或失敗,表示防火牆正在阻擋存取。
現在你已經確認防火牆規則是有效的:
- 你可以透過 DNAT 規則存取網頁伺服器。
- 您可以瀏覽到允許的 FQDN,但無法瀏覽到其他任何 FQDN。
- 你可以使用已設定的外部 DNS 伺服器來解析 DNS 名稱。
清除資源
您可以保留防火牆資源,以供下一個教學課程使用。 如果你不再需要它們,刪除 Test-FW-RG 資源群組,以刪除所有防火牆相關資源。