教程:使用 Azure 门户在混合网络中部署和配置 Azure 防火墙和策略
将本地网络连接到 Azure 虚拟网络以创建混合网络时,必须能够控制对 Azure 网络资源的访问,这是整体安全计划的重要部分。
可以使用 Azure 防火墙和防火墙策略,通过规则来定义允许的和拒绝的网络流量,以便控制混合网络中的网络访问。
在本教程中,请创建三个虚拟网络:
- VNet-Hub - 防火墙在此虚拟网络中。
- VNet-Spoke - 分支虚拟网络代表 Azure 中的工作负荷。
- VNet-Onprem - 本地虚拟网络代表本地网络。 在实际部署中,可以使用 VPN 或 ExpressRoute 来连接它。 为简单起见,本教程将使用 VPN 网关连接,并使用 Azure 中的某个虚拟网络来代表本地网络。
本教程介绍如何执行下列操作:
- 创建防火墙中心虚拟网络
- 创建分支虚拟网络
- 创建本地虚拟网络
- 配置和部署防火墙和策略
- 创建并连接 VPN 网关
- 将中心和分支虚拟网络对等互连
- 创建路由
- 创建虚拟机
- 测试防火墙
如果要使用 Azure PowerShell 完成此过程,请参阅使用 Azure PowerShell 在混合网络中部署和配置 Azure 防火墙。
先决条件
混合网络使用中心辐射型网络体系结构模型在 Azure VNet 与本地网络之间路由流量。 中心辐射型网络体系结构具有以下要求:
将 VNet-Hub 对等互连到 VNet-Spoke 时,应设置“使用此虚拟网络的网关或路由服务器”。 在中心辐射型网络体系结构中,辐射虚拟网络可以通过网关传输共享中心的 VPN 网关,不必在每个辐射虚拟网络中部署 VPN 网关。
此外,通往网关连接的虚拟网络或本地网络的路由会通过网关传输自动传播到对等互连的虚拟网络的路由表。 有关详细信息,请参阅针对虚拟网络对等互连配置 VPN 网关传输。
将 VNet-Spoke 对等互连到 VNet-Hub 时,应设置“使用远程虚拟网络的网关或路由服务器”。 如果设置了“使用远程虚拟网络的网关或路由服务器”,同时在远程对等端上设置了“使用此虚拟网络的网关或路由服务器”,则辐射虚拟网络将使用远程虚拟网络的网关进行传输 。
若要通过中心防火墙路由分支子网流量,则可使用一个用户定义的路由 (UDR) 指向禁用了“虚拟网关路由传播”选项的防火墙。 禁用了“虚拟网关路由传播”选项可防止将路由分配到分支子网。 这可以防止获知的路由与你的 UDR 冲突。 如果要保持“虚拟网关路由传播”处于启用状态,请确保定义到防火墙的特定路由,以替代通过 BGP 从本地发布的路由。
请在中心网关子网上配置一个指向防火墙 IP 地址的 UDR,将其作为通向辐射网络的下一跃点。 无需在 Azure 防火墙子网中创建 UDR,因为它会从 BGP 探测路由。
请参阅本教程的创建路由部分了解如何创建这些路由。
注意
Azure 防火墙必须具有直接的 Internet 连接。 如果 AzureFirewallSubnet 知道通过 BGP 的本地网络的默认路由,则必须将其替代为 0.0.0.0/0 UDR,将 NextHopType 值设置为 Internet 以保持 Internet 直接连接 。
可将 Azure 防火墙配置为支持强制隧道。 有关详细信息,请参阅 Azure 防火墙强制隧道。
注意
即使 UDR 指向作为默认网关的 Azure 防火墙,也会直接路由直接对等互连 VNet 之间的流量。 若要在此方案中将子网到子网流量发送到防火墙,UDR 必须在这两个子网上显式地包含目标子网网络前缀。
如果没有 Azure 订阅,请在开始前创建一个试用版订阅。
创建防火墙中心虚拟网络
首先,创建用于存储本教程资源的资源组:
- 登录 Azure 门户。
- 在 Azure 门户主页上,选择“资源组”>“创建”。
- 对于“订阅”,请选择自己的订阅。
- 对于“资源组名称”,请键入 FW-Hybrid-Test。
- 对于“区域”,请选择“中国东部”。 以后创建的所有资源必须位于同一位置。
- 选择“查看 + 创建” 。
- 选择“创建”。
现在创建 VNet:
注意
AzureFirewallSubnet 子网的大小为 /26。 有关子网大小的详细信息,请参阅 Azure 防火墙常见问题解答。
- 在 Azure 门户主页上,选择“创建资源”。
- 在“网络”下,选择“虚拟网络”。
- 选择“创建”。
- 对于“资源组”,请选择“FW-Hybrid-Test”。
- 对于“名称”,请键入 VNet-hub。
- 在完成时选择“下一步:IP 地址”。
- 对于“IPv4 地址空间”,请删除默认地址然后键入“10.5.0.0/16” 。
- 在“子网名称”下,选择“添加子网” 。
- 对于“子网名称”,键入“AzureFirewallSubnet”。 防火墙将位于此子网中,子网名称必须是 AzureFirewallSubnet。
- 对于“子网地址范围”,请键入“10.5.0.0/26” 。
- 选择 添加 。
- 选择“查看 + 创建” 。
- 选择“创建”。
创建分支虚拟网络
- 在 Azure 门户主页上,选择“创建资源”。
- 在“网络”中,选择“虚拟网络” 。
- 选择“创建”。
- 对于“资源组”,请选择“FW-Hybrid-Test”。
- 对于“名称”,请键入 VNet-Spoke。
- 对于“区域”,请选择“中国东部”。
- 在完成时选择“下一步:IP 地址”。
- 对于“IPv4 地址空间”,请删除默认地址然后键入“10.6.0.0/16” 。
- 在“子网名称”下,选择“添加子网” 。
- 对于“子网名称”,请键入“SN-Workload” 。
- 对于“子网地址范围”,请键入“10.6.0.0/24” 。
- 选择 添加 。
- 选择“查看 + 创建” 。
- 选择“创建”。
创建本地虚拟网络
- 在 Azure 门户主页上,选择“创建资源”。
- 在“网络”中,选择“虚拟网络” 。
- 对于“资源组”,请选择“FW-Hybrid-Test”。
- 对于“名称”,请键入 VNet-OnPrem。
- 对于“区域”,请选择“中国东部”。
- 选择“下一步: IP 地址”
- 对于“IPv4 地址空间”,请删除默认地址然后键入“192.168.0.0/16” 。
- 在“子网名称”下,选择“添加子网” 。
- 对于“子网名称”,请键入“SN-Corp” 。
- 对于“子网地址范围”,请键入“192.168.1.0/24” 。
- 选择 添加 。
- 选择“查看 + 创建” 。
- 选择“创建”。
现在,为网关创建第二个子网。
- 在“VNet-Onprem”页上,选择“子网”。
- 选择“+子网”。
- 对于“名称”,请键入 GatewaySubnet。
- 对于“子网地址范围”,请键入“192.168.2.0/24” 。
- 选择“保存” 。
配置和部署防火墙
现在,将防火墙部署到防火墙中心虚拟网络中。
在 Azure 门户主页上,选择“创建资源”。
在左列中选择“网络”,然后搜索并选择“防火墙”,然后选择“创建”。
在“创建防火墙”页上,使用下表配置防火墙:
设置 值 订阅 <用户的订阅> 资源组 FW-Hybrid-Test 名称 AzFW01 区域 中国东部 防火墙层 标准 防火墙管理 使用防火墙策略来管理此防火墙 防火墙策略 添加新项:
hybrid-test-pol
中国东部选择虚拟网络 使用现有项:
VNet-hub公共 IP 地址 添加新项:
fw-pip选择“查看 + 创建”。
查看摘要,然后选择“创建”以创建防火墙。
部署过程需要花费几分钟时间。
部署完成后,转到“FW-Hybrid-Test”资源组,然后选择“AzFW01”防火墙。
记下专用 IP 地址。 稍后在创建默认路由时需要用到此地址。
配置网络规则
首先,添加一个网络规则以允许 Web 流量。
- 从“FW-Hybrid-Test”资源组选择“hybrid-test-pol”防火墙策略 。
- 选择“网络规则”。
- 选择“添加规则集合”。
- 对于“名称”,请键入 RCNet01。
- 对于“优先级”,请键入 100。
- 对于规则集合操作,请选择允许。
- 在“规则”下,为“名称”键入 AllowWeb。
- 对于源类型,请选择“IP 地址”。
- 对于源,请键入 192.168.1.0/24。
- 对于“协议”,请选择“TCP”。
- 对于“目标端口”,请键入 80。
- 对于“目标类型”,请选择“IP 地址” 。
- 对于“目标”,请键入 10.6.0.0/16。
现在添加一个规则以允许 RDP 流量。
在第二个规则行中键入以下信息:
- 对于“名称”,请键入 AllowRDP。
- 对于源类型,请选择“IP 地址”。
- 对于源,请键入 192.168.1.0/24。
- 对于“协议”,请选择“TCP”。
- 对于“目标端口”,请键入 3389。
- 对于“目标类型”,请选择“IP 地址” 。
- 对于“目标”,键入 10.6.0.0/16
- 选择 添加 。
创建并连接 VPN 网关
通过 VPN 网关连接中心和本地虚拟网络。
为中心虚拟网络创建 VPN 网关
现在,为中心虚拟网络创建 VPN 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 SKU。
- 在 Azure 门户主页上,选择“创建资源”。
- 在搜索文本框中,键入“虚拟网络网关”。
- 依次选择“虚拟网络网关”、“创建”。
- 对于“名称”,请键入 GW-hub。
- 对于“区域”,请选择前面使用的同一区域。
- 对于“网关类型”,请选择“VPN”。
- 对于“VPN 类型”,请选择“基于路由”。
- 对于“SKU”,请选择“基本”。
- 对于“虚拟网络”,请选择“VNet-hub”。
- 对于“公共 IP 地址”,请选择“新建”,然后键入 VNet-hub-GW-pip 作为名称。
- 接受剩余的默认值,然后选择“查看 + 创建”。
- 检查配置,然后选择“创建”。
为本地虚拟网络创建 VPN 网关
现在,为本地虚拟网络创建 VPN 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 SKU。
- 在 Azure 门户主页上,选择“创建资源”。
- 在搜索文本框中,键入“虚拟网络网关”并按 Enter。
- 依次选择“虚拟网络网关”、“创建”。
- 对于“名称”,请键入 GW-Onprem。
- 对于“区域”,请选择前面使用的同一区域。
- 对于“网关类型”,请选择“VPN”。
- 对于“VPN 类型”,请选择“基于路由”。
- 对于“SKU”,请选择“基本”。
- 对于“虚拟网络”,请选择“VNet-Onprem”。
- 对于“公共 IP 地址”,请选择“新建”,然后键入 VNet-Onprem-GW-pip 作为名称。
- 接受剩余的默认值,然后选择“查看 + 创建”。
- 检查配置,然后选择“创建”。
创建 VPN 连接
现在,可在中心与本地网关之间创建 VPN 连接。
此步骤创建从中心虚拟网络到本地虚拟网络的连接。 示例中引用了共享密钥。 可以对共享密钥使用自己的值。 共享密钥必须与两个连接匹配,这一点非常重要。 创建连接可能需要简短的一段时间才能完成。
- 打开“FW-Hybrid-Test”资源组并选择“GW-hub”网关。
- 在左栏中选择“连接”。
- 选择 添加 。
- 键入 Hub-to-Onprem 作为连接名称。
- 选择“VNet 到 VNet”作为“连接类型”。
- 对于“第二个虚拟网络网关”,请选择“GW-Onprem”。
- 对于“共享密钥(PSK)”,请键入 AzureA1b2C3。
- 选择“确定”。
创建本地到中心虚拟网络连接。 此步骤类似于前一步骤,但这次是创建从 VNet-Onprem 到 VNet-hub 的连接。 确保共享密钥匹配。 几分钟后会建立连接。
- 打开“FW-Hybrid-Test”资源组并选择“GW-Onprem”网关。
- 在左栏中选择“连接”。
- 选择 添加 。
- 对于“连接名称”,请键入“Onprem-to-Hub”。
- 选择“VNet 到 VNet”作为“连接类型”。
- 对于“第二个虚拟网络网关”,请选择“GW-hub”。
- 对于“共享密钥(PSK)”,请键入 AzureA1b2C3。
- 选择“确定” 。
验证连接
大约五分钟后,这两个连接的状态应显示为“已连接”。
将中心和分支虚拟网络对等互连
现在,将中心和分支虚拟网络对等互连。
打开“FW-Hybrid-Test”资源组并选择“VNet-hub”虚拟网络。
在左栏中选择“对等互连”。
选择 添加 。
在“此虚拟网络”下:
设置名称 值 对等互连链接名称 HubtoSpoke 到远程虚拟网络的流量 允许(默认) 从远程虚拟网络转接的流量 允许(默认) 虚拟网络网关 使用此虚拟网络的网关 在“远程虚拟网络”下:
设置名称 值 对等互连链接名称 SpoketoHub 虚拟网络部署模型 资源管理器 订阅 <订阅> 虚拟网络 VNet-Spoke 到远程虚拟网络的流量 允许(默认) 从远程虚拟网络转接的流量 允许(默认) 虚拟网络网关 使用此远程虚拟网络的网关 选择添加。
创建路由
接下来创建一对路由:
- 通过防火墙 IP 地址从中心网关子网连接到分支子网的路由
- 通过防火墙 IP 地址从分支子网连接的默认路由
- 在 Azure 门户主页上,选择“创建资源”。
- 在搜索文本框中,键入“路由表”并按 Enter。
- 选择“路由表”。
- 选择“创建”。
- 选择“FW-Hybrid-Test”作为资源组。
- 对于“区域”,请选择以前使用的同一位置。
- 对于“名称”,请键入 UDR-Hub-Spoke。
- 选择“查看 + 创建” 。
- 选择“创建”。
- 创建路由表后,请选择它以打开路由表页。
- 在左栏中选择“路由”。
- 选择 添加 。
- 键入 ToSpoke 作为路由名称。
- 对于“地址前缀目标”,选择“IP 地址”。
- 对于“目标 IP 地址/CIDR 范围”,键入 10.6.0.0/16。
- 选择“虚拟设备”作为下一跃点类型。
- 键入前面记下的防火墙专用 IP 地址作为下一跃点地址。
- 选择 添加 。
现在,将路由关联到子网。
- 在“UDR-Hub-Spoke - 路由”页上,选择“子网”。
- 选择“关联”。
- 在“虚拟网络”下,选择“VNet-hub”。
- 在“子网”下,选择“GatewaySubnet”。
- 选择“确定”。
现在,创建从辐射子网的默认路由。
- 在 Azure 门户主页上,选择“创建资源”。
- 在搜索文本框中,键入“路由表”并按 Enter。
- 选择“路由表”。
- 选择“创建”。
- 选择“FW-Hybrid-Test”作为资源组。
- 对于“区域”,请选择以前使用的同一位置。
- 键入 UDR-DG 作为名称。
- 对于“传播网关路由”,请选择“否” 。
- 选择“查看 + 创建” 。
- 选择“创建”。
- 创建路由表后,请选择它以打开路由表页。
- 在左栏中选择“路由”。
- 选择 添加 。
- 键入“ToHub”作为路由名称。
- 对于“地址前缀目标”,选择“IP 地址”。
- 对于“目标 IP 地址/CIDR 范围”,键入 0.0.0.0/0。
- 选择“虚拟设备”作为下一跃点类型。
- 键入前面记下的防火墙专用 IP 地址作为下一跃点地址。
- 选择 添加 。
现在,将路由关联到子网。
- 在“UDR-DG - 路由”页上,选择“子网”。
- 选择“关联”。
- 在“虚拟网络”下,选择“VNet-spoke”。
- 在“子网”下,选择“SN-Workload”。
- 选择“确定”。
创建虚拟机
现在,创建分支工作负荷与本地虚拟机,并将其放入相应的子网。
创建工作负荷虚拟机
在分支虚拟网络中,创建运行 IIS 且不使用公共 IP 地址的虚拟机。
- 在 Azure 门户主页上,选择“创建资源”。
- 在“常用”下,选择“Windows Server 2016 Datacenter”。
- 输入虚拟机的以下值:
- 资源组 - 选择“FW-Hybrid-Test”。
- 虚拟机名称:VM-Spoke-01。
- 区域 - 前面使用的同一区域。
- 用户名:<键入用户名>。
- 密码:<键入密码>
- 对“公共入站端口”,请选择“允许所选端口”,然后选择“HTTP (80)”和“RDP (3389)”。
- 选择“下一步:磁盘” 。
- 接受默认设置,然后选择“下一步:网络”。
- 选择“VNet-Spoke”作为虚拟网络;子网为“SN-Workload”。
- 对于“公共 IP”,请选择“无”。
- 选择“下一步: 管理”。
- 对于“启动诊断”,请选择“禁用” 。
- 选择“查看 + 创建”,检查摘要页上的设置,然后选择“创建”。
安装 IIS
以管理员身份运行 PowerShell 控制台,然后使用你的帐户登录。
运行以下命令以在虚拟机上安装 IIS 并根据需要更改位置:
Set-AzVMExtension ` -ResourceGroupName FW-Hybrid-Test ` -ExtensionName IIS ` -VMName VM-Spoke-01 ` -Publisher Microsoft.Compute ` -ExtensionType CustomScriptExtension ` -TypeHandlerVersion 1.4 ` -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' ` -Location ChinaEast
创建本地虚拟机
你将使用此虚拟机通过远程桌面连接到公共 IP 地址。 然后,请在该虚拟机中通过防火墙连接到本地服务器。
- 在 Azure 门户主页上,选择“创建资源”。
- 在“常用”下,选择“Windows Server 2019 Datacenter”。
- 输入虚拟机的以下值:
- 资源组 - 选择现有资源组,然后选择“FW-Hybrid-Test”。
- 虚拟机名称 - VM-Onprem。
- 区域 - 前面使用的同一区域。
- 用户名:<键入用户名>。
- 密码:<键入用户密码>。
- 对“公共入站端口”,请选择“允许所选端口”,然后选择“RDP (3389)”。
- 选择“下一步:磁盘” 。
- 接受默认值,然后选择“下一步: 网络”。
- 选择“VNet-Onprem”作为虚拟网络;子网为“SN-Corp”。
- 选择“下一步: 管理”。
- 对于“启动诊断”,请选择“禁用” 。
- 选择“查看 + 创建”,检查摘要页上的设置,然后选择“创建”。
注意
Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。
发生以下事件之一时,将禁用默认出站访问 IP:
- 将公共 IP 地址分配给 VM。
- 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
- 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。
在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。
有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问和使用源网络地址转换 (SNAT) 进行出站连接。
测试防火墙
首先,记下“VM-spoke-01”虚拟机的专用 IP 地址。
在 Azure 门户中,连接到 VM-Onprem 虚拟机。
在 VM-Onprem 上打开 Web 浏览器并浏览到 http://<VM-spoke-01 的专用 IP>。
你会看到 VM-spoke-01 网页:
在“VM-Onprem”虚拟机中,打开远程桌面并连接到 VM-spoke-01 的专用 IP 地址。
应可成功连接,并且可以登录。
现已验证防火墙规则可正常工作:
- 可以浏览分支虚拟网络中的 Web 服务器。
- 可以使用 RDP 连接到分支虚拟网络中的服务器。
接下来,将防火墙网络规则集合操作更改为“拒绝”,以验证防火墙规则是否按预期工作。
- 选择“hybrid-test-pol”防火墙策略。
- 选择“规则集合”。
- 选择“RCNet01”规则集合。
- 对于“规则集合操作”,请选择“拒绝”。
- 选择“保存”。
在测试更改的规则之前,请关闭所有现有的远程桌面。 现在再次运行测试。 这一次,这些规则应该全部失败。
清理资源
可以保留防火墙资源以便在下一篇教程中使用。不再需要时,请删除 FW-Hybrid-Test 资源组,以删除与防火墙相关的所有资源。