你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
控制出站网络访问是整个网络安全性计划的重要组成部分。 例如,你可能想要限制对网站的访问。 或者限制可以访问的出站 IP 地址和端口。
可控制 Azure 子网的出站网络访问的一种方法是使用 Azure 防火墙和防火墙策略。 通过 Azure 防火墙和防火墙策略,可配置:
- 应用程序规则,用于定义可从子网访问的完全限定域名 (FQDN)。
- 网络规则,用于定义源地址、协议、目标端口和目标地址。
将网络流量路由到用作子网默认网关的防火墙时,网络流量受到配置的防火墙规则的控制。
在本教程中,你将创建一个包含两个子网的单个简化 VNet,以便于部署。
- AzureFirewallSubnet - 防火墙在此子网中。
- Workload-SN - 工作负荷服务器在此子网中。 此子网的网络流量通过防火墙。
对于生产部署,我们建议使用中心辐射模型,其中,防火墙在其自身的 VNet 中。 工作负荷服务器在包含一个或多个子网的同一区域中的对等 VNet 内。
在本教程中,你将了解如何执行以下操作:
- 设置测试网络环境
- 部署防火墙和防火墙策略
- 创建默认路由
- 配置一个应用程序规则以允许访问 www.google.com
- 配置网络规则,以允许访问外部 DNS 服务器
- 配置 NAT 规则以允许对测试服务器的入站 HTTP 访问
- 测试防火墙
如果需要,可以使用 Azure PowerShell 完成此过程。
先决条件
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
设置网络
首先,创建一个资源组用于包含部署防火墙所需的资源。 然后创建 VNet、子网和测试服务器。
创建资源组
资源组包含本教程所需的所有资源。
登录 Azure 门户。
在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”,然后选择“创建”。 输入或选择下列值:
设置 值 订阅 选择 Azure 订阅。 资源组 输入“Test-FW-RG”。 区域 选择区域。 你创建的所有其他资源必须位于同一区域中。 选择“查看 + 创建”。
选择“创建”。
创建 VNet
此 VNet 有两个子网。
注意
AzureFirewallSubnet 子网的大小为 /26。 有关子网大小的详细信息,请参阅 Azure 防火墙常见问题解答。
在 Azure 门户菜单或“主页”页上,选择“创建资源”。
选择“网络”。
搜索“虚拟网络”,然后选择“创建”。
输入或选择下列值:
设置 值 订阅 选择 Azure 订阅。 资源组 选择“Test-FW-RG”。 名称 输入“Test-FW-VN”。 区域 选择前面使用的同一位置。 选择“下一步”。
在“安全性”选项卡上,选择“下一步”。
对于“IPv4 地址空间”,请接受默认值“10.0.0.0/16”。
在“子网”下,选择“默认值”。
在“编辑子网”页上,为“子网用途”选择“Azure 防火墙”。
防火墙位于此子网中,子网名称 必须是 AzureFirewallSubnet。
在“起始地址”中键入 10.0.1.0。
选择“保存”。
接下来,创建工作负荷服务器的子网。
- 选择“添加子网”。
- 对于“子网名称”,请键入“Workload-SN”。
- 在“起始地址”中键入 10.0.2.0/24。
- 选择“添加”。
- 选择“查看 + 创建”。
- 选择“创建”。
部署 Azure Bastion
部署 Azure Bastion 开发人员版,以安全地连接到 Srv-Work 虚拟机进行测试。
在门户顶部的搜索框中,输入“堡垒”。 从搜索结果中选择 Bastions 。
选择“创建”。
在 “创建 Bastion ”页上,输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“Test-FW-RG”。 实例详细信息 名称 输入 Test-Bastion。 区域 选择前面使用的同一位置。 层 选择 “开发人员”。 虚拟网络 选择 Test-FW-VN。 子网 使用地址空间 10.0.0.0/26 自动创建 AzureBastionSubnet。 选择“查看 + 创建”。
检查设置,然后选择“创建”。
部署需要数分钟才能完成。
创建虚拟机
现在创建工作负荷虚拟机,将其置于“Workload-SN”子网中。
在门户顶部的搜索框中,输入 虚拟机,在搜索结果中选择 虚拟机 。
选择“ 创建>虚拟机”。
输入或选择虚拟机的以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“Test-FW-RG”。 实例详细信息 虚拟机名称 输入“Srv-Work”。 区域 选择前面使用的同一位置。 可用性选项 选择“无需基础结构冗余”。 安全类型 选择“标准” 。 图像 选择 Ubuntu Server 24.04 LTS -x64 Gen2 尺寸 选择虚拟机的大小。 管理员帐户 用户名 输入“azureuser”。 SSH 公钥源 选择“生成新密钥对”。 密钥对名称 输入 Srv-Work_key。 在“公用入站端口”,“入站端口规则”下,选择“无”。
接受其他默认值,然后选择“下一步: 磁盘”。
接受磁盘默认值,然后选择“下一步: 网络”。
请确保为虚拟网络选择“Test-FW-VN”,并且子网为“Workload-SN”。
对于“公共 IP”,请选择“无”。
选择“查看 + 创建”。
检查摘要页上的设置,然后选择“创建”。
出现提示时,选择“下载私钥和创建资源”。 将私钥文件保存到计算机。
部署完成后,选择 Srv-Work 资源并记下专用 IP 地址供以后使用。
安装 Web 服务器
连接到虚拟机并安装用于测试的 Web 服务器。
在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”。 选择“Test-FW-RG”资源组。
选择 Srv-Work 虚拟机。
选择 操作>运行命令>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选择 运行。
等待脚本成功完成。
部署防火墙和策略
将防火墙部署到 VNet。
在 Azure 门户菜单或“主页”页上,选择“创建资源”。
在搜索框中键入“防火墙”,然后按 Enter。
选择“防火墙”,然后选择“创建”。
在“创建防火墙”页上,使用下表配置防火墙:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“Test-FW-RG”。 实例详细信息 名称 输入“Test-FW01”。 区域 选择前面使用的同一位置。 防火墙 SKU 选择“标准” 。 防火墙管理 选择“使用防火墙策略来管理此防火墙”。 防火墙策略 选择“新增”,并输入“fw-test-pol”。
选择前面使用的同一区域。 选择“确定”。选择虚拟网络 选择“使用现有”,然后选择“Test-FW-VN”。 忽略有关强制隧道的警告。 警告将在后续步骤中解决. 公共 IP 地址 选择“新增”,然后在“名称”中输入“fw-pip”。 选择“确定”。 清除“启用防火墙管理 NIC”复选框。
接受其他默认值,然后选择“下一步: 标记”。
选择“下一步: 查看 + 创建”。
查看摘要,然后选择“创建”以创建防火墙。
部署过程需要花费几分钟时间。
部署完成后,转到“Test-FW-RG”资源组,然后选择“Test-FW01”防火墙。
记下防火墙专用 IP 地址和公共 IP 地址。 稍后将使用这些地址。
创建默认路由
对于“Workload-SN”子网,请配置要通过防火墙的出站默认路由。
在 Azure 门户菜单上,选择“所有服务”或在任何页面中搜索并选择“所有服务”。
在“网络”下,选择“路由表”。
选择“创建”,然后输入或选择以下值:
设置 值 项目详细信息 订阅 选择 Azure 订阅。 资源组 选择“Test-FW-RG”。 实例详细信息 名称 输入“Firewall-route”。 区域 选择前面使用的同一位置。 选择“查看 + 创建”。
选择“创建”。
部署完成后,选择“转到资源”。
在“防火墙路由”页上的“设置”下选择“子网”,然后选择“关联”。
对于“虚拟网络”,请选择“Test-FW-VN”。
对于“子网”,请选择“Workload-SN”。
选择“确定”。
依次选择“路由”和“添加”。
对于“路由名称”,请输入“fw-dg”。
对于“目标类型”,请选择“IP 地址”。
输入 0.0.0.0/0 作为“目标 IP 地址/CIDR 范围前缀”。
对于“下一个跃点类型”,请选择“虚拟设备”。
Azure 防火墙实际上是一个托管服务,但虚拟设备可在此场合下正常工作。
对于“下一个跃点地址”,请输入前面记下的防火墙专用 IP 地址。
选择“添加”。
配置应用程序规则
这是允许出站访问 www.google.com 的应用程序规则。
- 打开“Test-FW-RG”资源组,然后选择“fw-test-pol”防火墙策略。
- 在“设置规则”>下,选择应用程序规则。
- 选择“添加规则集合”。
- 对于“名称”,请输入“App-Coll01”。
- 对于“优先级”,请输入“200”。
- 对于“规则集合操作”,请选择“允许”。
- 在“规则”下,为“名称”输入“Allow-Google”。
- 对于“源类型”,请选择“IP 地址”。
- 对于“源”,请输入“10.0.2.0/24”。
- 对于“协议:端口”,请输入“http, https”。
- 对于“目标类型”,请选择“FQDN”。
- 对于“目标”,请输入
www.google.com - 选择“添加”。
Azure 防火墙包含默认情况下允许的基础结构 FQDN 的内置规则集合。 这些 FQDN 特定于平台,不能用于其他目的。 有关详细信息,请参阅基础结构 FQDN。
在后续步骤中创建网络规则之前,请等待应用程序规则部署完成。
配置网络规则
这是允许在端口 53 (DNS) 上对两个 IP 地址进行出站访问的网络规则。
- 选择“网络规则”。
- 选择“添加规则集合”。
- 对于“名称”,请输入“Net-Coll01”。
- 对于“优先级”,请输入“200”。
- 对于“规则集合操作”,请选择“允许”。
- 对于“规则收集组”,请选择“DefaultNetworkRuleCollectionGroup”。
- 在“规则”下,为“名称”输入“Allow-DNS”。
- 对于“源类型”,请选择“IP 地址”。
- 对于“源”,请输入“10.0.2.0/24”。
- 对于“协议”,请选择“UDP”。
- 对于“目标端口”,请输入“53”。
- 对于“目标类型”,请选择“IP 地址”。
- 对于“目标”,请输入“209.244.0.3,209.244.0.4”。
这些是由 CenturyLink 操作的公共 DNS 服务器。 - 选择“添加”。
在后续步骤中创建 DNAT 规则之前,请等待网络规则部署完成。
配置 DNAT 规则
此规则允许通过防火墙连接到 Srv-Work 虚拟机上的 Web 服务器。
- 选择“DNAT 规则”。
- 选择“添加规则集合”。
- 对于 名称,请输入 HTTP。
- 对于“优先级”,请输入“200”。
- 对于“规则收集组”,请选择“DefaultDnatRuleCollectionGroup”。
- 在 “规则”中,对于 “名称”,输入http-nat。
- 对于“源类型”,请选择“IP 地址”。
- 对于“源”,请输入 *。
- 对于“协议”,请选择“TCP”。
- 对于“目标端口”,输入 80。
- 对于“目标”,请输入防火墙公共 IP 地址。
- 对于“转换的类型”,请选择“IP 地址”。
- 对于“已转换的地址”,请输入“Srv-work”的专用 IP 地址。
- 对于 翻译端口,请输入 80。
- 选择“添加”。
更改 Srv-Work 网络接口的主要和辅助 DNS 地址
为了在本教程中进行测试,请配置服务器的主要和辅助 DNS 地址。 这并不是一项常规的 Azure 防火墙要求。
- 在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”。 选择“Test-FW-RG”资源组。
- 选择 Srv-Work 虚拟机的网络接口。
- 在“设置”下,选择“DNS 服务器”。
- 在“DNS 服务器”下,选择“自定义”。
- 在“添加 DNS 服务器”文本框中输入 209.244.0.3,在下一个文本框中输入 209.244.0.4。
- 选择“保存”。
- 重启 Srv-Work 虚拟机。
测试防火墙
现在测试防火墙,以确认它是否按预期方式工作。
测试 DNAT 规则
- 在本地计算机上打开 Web 浏览器。
- 在地址栏中,输入
http://<firewall-public-ip-address>,其中<firewall-public-ip-address>是您之前记录的防火墙的公共 IP 地址。 - 应会看到自定义网页: Azure 防火墙 DNAT 测试。 这确认 DNAT 规则正常工作,流量正在转发到 Srv-Work 虚拟机。
测试应用程序和网络规则
使用 Azure Bastion 安全地连接到 Srv-Work 虚拟机并测试防火墙规则。
在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”。 选择“Test-FW-RG”资源组。
选择 Srv-Work 虚拟机。
选择“通过 Bastion 连接”。>
在 Bastion 页上,输入或选择以下值:
设置 值 身份验证类型 从本地文件选择 SSH 私钥。 用户名 输入“azureuser”。 本地文件 选择 “浏览 ”,然后选择在创建 VM 期间下载的 Srv-Work_key.pem 文件。 选择 连接。
此时会打开一个新的浏览器选项卡,其中包含 Srv-Work 虚拟机的 SSH 会话。
在 SSH 会话中,输入以下命令以测试对 Google 的访问:
curl -I https://www.google.com应会看到成功的 HTTP 响应(200 正常),指示应用程序规则允许访问 Google。
现在测试对 Microsoft 的访问,该访问应被阻止。 输入:
curl -I https://www.microsoft.com该命令应在大约 60 秒后超时或失败,指示防火墙正在阻止访问。
现已验证防火墙规则可正常工作:
- 可以通过 DNAT 规则访问 Web 服务器。
- 可以浏览到一个允许的 FQDN,但不能浏览到其他任何 FQDN。
- 可以使用配置的外部 DNS 服务器解析 DNS 名称。
清理资源
可以将防火墙资源保留到下一教程使用。不再需要时,请删除 Test-FW-RG 资源组,以删除与防火墙相关的所有资源。