教學課程:使用 Azure 入口網站建立包含 Web 應用程式防火牆的應用程式閘道
本教學課程說明如何使用 Azure 入口網站建立包含 Web 應用程式防火牆 (WAF) 的應用程式閘道。 WAF 會使用 OWASP 規則來保護您的應用程式。 這些規則包括防禦諸如 SQL 插入攻擊、跨網站指令碼攻擊,以及工作階段劫持等攻擊。 建立應用程式閘道之後,您要加以測試,確定它可正常運作。 您會使用 Azure 應用程式閘道,將接聽程式指派給連接埠、建立規則,以及將資源新增至後端集區,來將應用程式網路流量導向至特定資源。 為了簡單起見,本教學課程使用簡單的設定,包括公用前端 IP、在此應用程式閘道上裝載單一網站的基本接聽程式、用於後端集區的兩部 Linux 虛擬機器,以及基本的要求路由規則。
在本教學課程中,您會了解如何:
- 建立已啟用 WAF 的應用程式閘道
- 建立用來作為後端伺服器的虛擬機器
- 建立儲存體帳戶並設定診斷
- 測試應用程式閘道
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
必要條件
如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶。
登入 Azure
登入 Azure 入口網站。
建立應用程式閘道
在 Azure 入口網站的左側功能表上選取 [建立資源]。 [建立資源] 視窗隨即出現。
選取 [網络],然後在 [熱門 Azure 服務] 列表中選取 [應用程式閘道]。
[基本] 索引標籤
在 [基本] 索引標籤上,為下列應用程式閘道設定輸入這些值:
Azure 需要虛擬網路才能在您所建立的資源之間進行通訊。 您可以建立新的虛擬網路,或使用現有的虛擬網路。 在此範例中,您會在建立應用程式閘道的同時建立新的虛擬網路。 在不同的子網路中,建立應用程式閘道執行個體。 在此範例中,您會建立兩個子網:一個用於應用程式閘道,然後再為後端伺服器新增另一個子網。
在 [設定虛擬網路] 底下,選取 [建立] 以建立新的虛擬網路。 在開啟的 [ 建立虛擬網络] 視窗中,輸入下列值來建立虛擬網路和子網:
名稱:輸入 myVNet 以取得虛擬網路的名稱。
地址空間 :接受 10.0.0.0/16 位址範圍。
子網名稱(應用程式閘道 子網):[子網] 區域會顯示名為Default的子網。 將此子網的名稱變更為 myAGSubnet,並將預設的 IPv4 位址範圍保留為 10.0.0.0/24。
應用程式閘道子網路只能包含應用程式閘道。 不允許任何其他資源。選取 [確定] 以關閉 [建立虛擬網路] 視窗並儲存虛擬網路設定。
在 [基本] 索引標籤上,接受其他設定的預設值,然後選取 [下一步:前端]。
[前端] 索引標籤
在 [前端] 索引標籤上,確認 [前端 IP 位址類型] 已被設為 [公用]。
您可以根據自己的使用案例,將前端 IP 設定為公用或私人兩者。 在此範例中,您會選擇公用前端IP。注意
針對應用程式閘道 v2 SKU,目前支援公用和私人兩者前端 IP 位址類型。 目前不支援私人前端 IP 設定。
針對 [公用 IP 位址] 選擇 [新增],然後針對公用 IP 位址名稱輸入 myAGPublicIPAddress,然後選取 [確定]。
選取 [下一步:後端]。
[後端] 索引標籤
後端集區用於將要求路由傳送至可為要求提供服務的後端伺服器。 後端集區可以由 NIC、虛擬機擴展集、公用 IP、內部 IP、完整功能變數名稱 (FQDN) 和多租使用者後端組成,例如 Azure App 服務。 在此範例中,您會使用應用程式閘道建立空的後端集區,然後稍後將後端目標新增至後端集區。
在 [後端] 索引標籤上,選取 [新增後端集區]。
在隨即開啟的 [新增後端集區] 視窗中,輸入下列值以建立空的後端集區:
- 名稱:輸入 myBackendPool 作為後端集區的名稱。
- 新增不含目標的後端集區:選取 [是] 以建立不含目標的後端集區。 您將會在建立應用程式閘道之後再新增後端目標。
在 [新增後端集區] 視窗中,選取 [新增] 以儲存後端集區設定,並返回 [後端] 索引標籤。
在 [後端] 索引標籤上,選取 [下一步:設定]。
設定索引標籤
在 [設定] 索引標籤上,您會連線至您使用路由規則所建立的前端和後端集區。
選取 [路由規則] 欄中的 [新增路由規則]。
在隨即開啟的 [新增路由規則] 視窗中,針對 [規則名稱] 輸入 myRoutingRule。
針對 [優先順序],輸入優先順序號碼。
路由規則需要接聽程式。 在 [新增路由規則] 視窗內的 [接聽程式] 索引標籤上,針對接聽程式輸入下列值:
接聽程式名稱:輸入 myListener 作為接聽程式的名稱。
前端IP通訊協定:選取 [公用 IPv4 ] 以選擇您為前端建立的公用IP。
接受 [接聽程式] 索引標籤上其他設定的預設值,然後選取 [後端目標] 索引標籤以設定其餘的路由規則。
在 [後端目標] 索引標籤上,針對 [後端目標] 選取 [myBackendPool]。
針對 [後端設定],選取 [新增] 建立新的後端設定。 此設定會決定路由規則的行為。 在開啟的 [新增後端設定] 視窗中,在 [後端設定名稱] 中輸入 myBackendSetting。 接收視窗中其他設定的預設值,然後選取 [新增] 返回至 [新增路由規則] 視窗。
在 [新增路由規則] 視窗上,選取 [新增] 以儲存路由規則,並返回 [設定] 索引標籤。
選取 [下一步:標籤],然後選取 [下一步:檢閱 + 建立]。
[檢閱 + 建立] 索引標籤
檢閱 [檢閱 + 建立] 索引標籤上的設定,然後選取 [建立] 以建立虛擬網路、公用 IP 位址和應用程式閘道。 Azure 可能需要幾分鐘的時間才能建立應用程式閘道。
請等候部署成功完成後,再繼續進行至下一節。
新增後端伺服器子網
- 開啟 myVNet 虛擬網路。
- 在 [設定] 下,選取 [子網路]。
- 選取 [+ 子網路]。
- 在 [ 名稱] 中,輸入 myBackendSubnet。
- 針對 [開始位址],輸入 10.0.1.0。
- 選取 [新增] 以新增子網路。
新增後端目標
在此範例中,您會使用虛擬機器作為目標後端。 您可以使用現有的虛擬機器,或建立新的虛擬機器。 您會建立兩部虛擬機,讓 Azure 作為應用程式閘道的後端伺服器。
若要這麼做,您將會:
- 建立兩個新的 Linux VM (myVM 與 myVM2),作為後端伺服器使用。
- 在虛擬機器上安裝 NGINX,以確認成功建立應用程式閘道。
- 將後端伺服器新增至後端集區。
建立虛擬機器
在 Azure 入口網站中,選取 [建立資源]。 [建立資源] 視窗隨即出現。
在 [虛擬機器] 底下,選取 [建立]。
在 [基本] 索引標籤中,為下列虛擬機器設定輸入這些值:
- 資源群組:選取 [myResourceGroupAG] 作為資源群組名稱。
- 虛擬機器名稱:輸入 myVM 作為虛擬機器的名稱。
- 映像:Ubuntu Server 20.04 LTS - Gen2。
- 驗證類型:密碼
- 使用者名稱:輸入管理員使用者名稱。
- 密碼:輸入管理員的密碼。
- 公用輸入連接埠:選取 [無]。
接受其他預設值,然後選取 [下一步:磁碟]。
接受 [磁碟] 索引標籤的預設值,然後選取 [下一步:網路]。
在 [網路] 索引標籤上,確認已選取 [myVNet] 作為[虛擬網路],且 [子網路] 設為 [myBackendSubnet]。
在 [公用 IP] 中,選取 [無]。
接受其他預設值,然後選取 [下一步:管理]。
選取 [下一步:監視],將 [開機診斷] 設定為 [停用]。 接受其他預設值,然後選取 [檢閱 + 建立]。
在 [檢閱 + 建立] 索引標籤上檢閱設定,並更正任何驗證錯誤,然後選取 [建立]。
請等候虛擬機器建立完成,再繼續操作。
安裝 NGINX 進行測試
在此範例中,您在虛擬機器上安裝 NGINX,只為了驗證 Azure 已成功建立應用程式閘道。
開啟 Bash Cloud Shell。 若要這樣做,請從 Azure 入口網站的頂端導覽列中選取 [Cloud Shell] 圖示,然後從下拉式清單中選取 [Bash]。
確定已為您的訂用帳戶設定Bash工作階段:
az account set --subscription "<your subscription name>"
執行下列命令以在虛擬機器上安裝 NGINX:
az vm extension set \ --publisher Microsoft.Azure.Extensions \ --version 2.0 \ --name CustomScript \ --resource-group myResourceGroupAG \ --vm-name myVM \ --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
使用您先前完成的步驟,建立第二個虛擬機器並安裝 NGINX。 將 myVM2 用於虛擬機名稱和
--vm-name
Cmdlet 的設定。
將後端伺服器新增至後端集區
選取 [所有資源],然後選取 [myAppGateway]。
從左側功能表中中選取 [後端集區]。
選取 [myBackendPool]。
在 [目標類型] 下方,從下拉式清單中選取 [虛擬機器]。
在 [目標] 下,從下拉式清單中選取 myVM 的相關聯網路介面。
針對 myVM2 重複。
選取 [儲存]。
等候部署完成,再繼續進行下一個步驟。
測試應用程式閘道
雖然不需要 NGINX 即可建立應用程式閘道,但您仍會加以安裝,以確認 Azure 是否已成功建立應用程式閘道。 使用 Web 服務來測試應用程式閘道:
-
或者,您可以選取 [所有資源],並在搜尋方塊中輸入 myAGPublicIPAddress,然後在搜尋結果中加以選取。 Azure 會在 [概觀] 頁面上顯示公用 IP 位址。
將公用 IP 位址複製並貼到您瀏覽器的網址列。
檢查回應。 有效的回應會確認應用程式閘道已成功建立,並可與後端順利連線。
清除資源
當您不再需要先前為應用程式閘道建立的資源時,請移除資源群組。 藉由移除資源群組,您也可以移除應用程式閘道及其所有相關資源。
若要移除資源群組:
- 在 Azure 入口網站的左側功能表上,選取 [資源群組]。
- 在 [資源群組] 頁面上,在清單中搜尋 myResourceGroupAG 並加以選取。
- 在 [資源群組] 頁面上,選取 [刪除資源群組]。
- 針對 [輸入資源群組名稱] 輸入 myResourceGroupAG,然後選取 [刪除]。