你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
教程:使用 Azure 门户创建具有 Web 应用程序防火墙的应用程序网关
本教程演示如何使用 Azure 门户创建具有 Web 应用程序防火墙 (WAF) 的应用程序网关。 WAF 使用 OWASP 规则保护应用程序。 这些规则包括针对各种攻击(例如 SQL 注入、跨站点脚本攻击和会话劫持)的保护。 创建应用程序网关后,请测试该网关以确保其正常运行。 使用 Azure 应用程序网关,可以为端口分配侦听器、创建规则以及向后端池添加资源,以便将应用程序 Web 流量定向到特定资源。 为简单起见,本教程使用了带有公共前端 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 地址范围。
子网名称(应用程序网关子网):“子网”区域将会显示名为“默认”的子网。 将此子网的名称更改为 myAGSubnet,并将默认的 IPv4 地址范围保留为 10.0.0.0/24。
应用程序网关子网只能包含应用程序网关。 不允许其他资源。选择“确定”以关闭“创建虚拟网络”窗口,并保存虚拟网络设置 。
在“基本信息” 选项卡上,接受其他设置的默认值,然后选择“下一步: 前端”。
“前端”选项卡
在“前端”选项卡上,验证“IP 地址类型”是否设置为“公共” 。
可以根据用例将前端 IP 配置为“公共”或“两者”。 本示例将选择公共前端 IP。注意
对于应用程序网关 v2 SKU,目前支持“公共”和“两者”前端 IP 地址类型。 当前不支持仅“专用”前端 IP 配置。
为“公共 IP 地址”选择“新增”,输入“myAGPublicIPAddress”作为公共 IP 地址名称,然后选择“确定” 。
在完成时选择“下一步:后端。
“后端”选项卡
后端池用于将请求路由到为请求提供服务的后端服务器。 后端池可以包含 NIC、虚拟机规模集、公共 IP、内部 IP、完全限定的域名 (FQDN) 和多租户后端(例如 Azure 应用服务)。 此示例将使用应用程序网关创建一个空后端池,然后将后端目标添加到该后端池。
在“后端”选项卡上,选择“添加后端池” 。
在打开的“添加后端池”窗口中,输入以下值以创建空的后端池 :
- 名称:输入“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 作为虚拟机名称,以及作为 cmdlet 的
--vm-name
设置。
将后端服务器添加到后端池
选择“所有资源”,然后选择“myAppGateway”。
从左侧菜单中选择“后端池”。
选择“myBackendPool”。
在“目标”类型下,从下拉列表中选择“虚拟机” 。
在“目标”下,从下拉列表中选择“myVM”关联的网络接口 。
针对 myVM2 重复上述操作。
选择“保存” 。
等待部署完成之后再继续下一步。
测试应用程序网关
虽然不需 NGINX 即可创建应用程序网关,但你安装了它来验证 Azure 是否已成功创建应用程序网关。 使用 Web 服务测试应用程序网关:
-
或者,可选择“所有资源”,在搜索框中输入“myAGPublicIPAddress”,然后在搜索结果中将其选中。 Azure 会在“概览”页上显示公共 IP 地址。
复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。
检查响应。 有效响应验证应用程序网关是否已成功创建,以及是否能够成功连接后端。
清理资源
如果不再需要通过应用程序网关创建的资源,请删除资源组。 删除资源组时,也会删除应用程序网关和及其所有的相关资源。
若要删除资源组,请执行以下操作:
- 在 Azure 门户的左侧菜单上选择“资源组” 。
- 在“资源组”页的列表中搜索“myResourceGroupAG”,然后将其选中。
- 在“资源组”页上,选择“删除资源组” 。
- 在“键入资源组名称”字段中输入“myResourceGroupAG”,然后选择“删除”。