使用 Azure 门户在混合网络中部署和配置 Azure 防火墙

将本地网络连接到 Azure 虚拟网络以创建混合网络时,必须能够控制对 Azure 网络资源的访问,这是整体安全计划的重要部分。

可以使用 Azure 防火墙通过规则来定义允许的和拒绝的网络流量,以便控制混合网络中的网络访问。

在本文中,将创建三个虚拟网络:

  • VNet-Hub:防火墙在此虚拟网络中。
  • VNet-Spoke:分支虚拟网络代表 Azure 中的工作负载。
  • VNet-Onprem:本地虚拟网络代表本地网络。 在实际部署中,可以使用虚拟专用网络 (VPN) 连接或 Azure ExpressRoute 连接来连接到它。 为简单起见,本文使用 VPN 网关连接,并使用 Azure 中的某个虚拟网络来代表本地网络。

显示混合网络中防火墙的关系图。

如果要使用 Azure 门户来完成本文中的过程,请参阅使用 Azure 门户在混合网络中部署和配置 Azure 防火墙

注意

本文使用经典 Azure 防火墙规则来管理防火墙。 首选方法是使用 Azure 防火墙管理器策略。 若要使用 Azure 防火墙管理器策略完成此过程,请查看教程:使用 Azure 门户在混合网络中部署和配置 Azure 防火墙和策略

先决条件

混合网络使用中心和分支型网络体系结构模型在 Azure 虚拟网络与本地网络之间路由流量。 中心辐射型网络体系结构具有以下要求:

  • 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 防火墙,也会直接路由直接对等互连虚拟网络之间的流量。 若要在此方案中将子网到子网流量发送到防火墙,UDR 必须在这两个子网上显式地包含目标子网网络前缀。

如果没有 Azure 订阅,请在开始前创建一个试用版订阅

创建防火墙中心虚拟网络

首先,创建用于包含资源的资源组:

  1. 登录 Azure 门户
  2. 在 Azure 门户主页上,选择“资源组”>“创建”。
  3. 对于“订阅”,请选择自己的订阅。
  4. 对于“资源组”,输入 RG-fw-hybrid-test
  5. 对于“区域”,选择一个区域。 以后创建的所有资源必须位于同一区域。
  6. 选择“查看 + 创建” 。
  7. 选择“创建”。

现在创建虚拟网络。

注意

AzureFirewallSubnet 子网的大小为 /26。 有关子网大小的详细信息,请参阅 Azure 防火墙常见问题解答

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中输入“虚拟网络”。
  3. 选择“虚拟网络”,然后选择“创建”。
  4. 对于“资源组”,请选择“RG-fw-hybrid-test”
  5. 对于“虚拟网络名称”,输入 VNet-hub
  6. 对于“区域”,选择之前使用的区域。
  7. 选择下一步
  8. 在“安全性”选项卡上,选择“下一步”。
  9. 对于“IPv4 地址空间”,删除默认地址,然后输入 10.5.0.0/16
  10. 删除“子网”下的默认子网。
  11. 选择“添加子网”
  12. 在“添加子网”页上,为“子网模板”选择“Azure 防火墙”。
  13. 选择添加

为网关创建第二个子网:

  1. 选择“添加子网”
  2. 对于“子网模板”,请选择“虚拟网络网关”
  3. 对于“起始地址”,接受默认值 10.5.1.0
  4. 对于“子网大小”,接受默认值 /27
  5. 选择添加
  6. 选择“查看 + 创建” 。
  7. 选择“创建”。

创建分支虚拟网络

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中输入“虚拟网络”。
  3. 选择“虚拟网络”,然后选择“创建”。
  4. 对于“资源组”,请选择“RG-fw-hybrid-test”
  5. 对于“名称”,输入 VNet-Spoke
  6. 对于“区域”,选择之前使用的区域。
  7. 选择下一步
  8. 在“安全性”选项卡上,选择“下一步”。
  9. 对于“IPv4 地址空间”,删除默认地址,然后输入 10.6.0.0/16
  10. 删除“子网”下的默认子网。
  11. 选择“添加子网”
  12. 对于“名称”,输入 SN-Workload
  13. 对于“起始地址”,接受默认值 10.6.0.0
  14. 对于“子网大小”,接受默认值 /24
  15. 选择添加
  16. 选择“查看 + 创建” 。
  17. 选择“创建”。

创建本地虚拟网络

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中输入“虚拟网络”。
  3. 选择“虚拟网络”,然后选择“创建”。
  4. 对于“资源组”,请选择“RG-fw-hybrid-test”
  5. 对于“名称”,输入 VNet-Onprem
  6. 对于“区域”,选择之前使用的区域。
  7. 选择下一步
  8. 在“安全性”选项卡上,选择“下一步”。
  9. 对于“IPv4 地址空间”,删除默认地址,然后输入 192.168.0.0/16
  10. 删除“子网”下的默认子网。
  11. 选择“添加子网”
  12. 对于“名称”,输入 SN-Corp
  13. 对于“起始地址”,接受默认值 192.168.0.0
  14. 对于“子网大小”,接受默认值 /24
  15. 选择添加

现在,为网关创建第二个子网:

  1. 选择“添加子网”
  2. 对于“子网模板”,请选择“虚拟网络网关”
  3. 对于“起始地址”,接受默认值 192.168.1.0
  4. 对于“子网大小”,接受默认值 /27
  5. 选择添加
  6. 选择“查看 + 创建” 。
  7. 选择“创建”。

配置和部署防火墙

将防火墙部署到防火墙中心虚拟网络中:

  1. 在 Azure 门户主页上,选择“创建资源”。

  2. 在搜索框中输入防火墙

  3. 依次选择“防火墙”、“创建”。

  4. 在“创建防火墙”页上,使用下表配置防火墙:

    设置
    订阅 选择订阅。
    资源组 输入 RG-fw-hybrid-test
    Name 输入 AzFW01
    区域 选择之前使用的区域。
    防火墙 SKU 选择“标准”。
    防火墙管理 选择“使用防火墙规则(经典)来管理此防火墙”。
    选择虚拟网络 选择“使用现有”>“VNet-Hub”。
    公共 IP 地址 选择“添加新项”>“fw-pip”。
  5. 选择“查看 + 创建”。

  6. 查看摘要,然后选择“创建”以创建防火墙。

    部署防火墙需要几分钟时间。

  7. 部署完成后,转到 RG-fw-hybrid-test 资源组,然后选择 AzFW01 防火墙。

  8. 记下专用 IP 地址。 稍后在创建默认路由时需要用到它。

配置网络规则

首先,添加一个网络规则以允许 Web 流量:

  1. 在“AzFW01”页上,选择“规则(经典)”。
  2. 选择“网络规则集合”选项卡。
  3. 选择“添加网络规则集合”。
  4. 对于“名称”,输入 RCNet01
  5. 对于“优先级”,请输入“100”。
  6. 对于规则集合操作,请选择允许
  7. 在“规则 IP 地址”下,为“名称”输入 AllowWeb
  8. 对于“协议”,请选择“TCP”。
  9. 对于源类型,请选择“IP 地址”。
  10. 对于“”,输入 192.168.0.0/24
  11. 对于“目标类型”,请选择“IP 地址” 。
  12. 对于“目标地址”,输入 10.6.0.0/16
  13. 对于“目标端口”,输入 80

现在添加一个规则以允许 RDP 流量。 在第二个规则行中输入以下信息:

  1. 对于“名称”,输入 AllowRDP
  2. 对于“协议”,请选择“TCP”。
  3. 对于源类型,请选择“IP 地址”。
  4. 对于“”,输入 192.168.0.0/24
  5. 对于“目标类型”,请选择“IP 地址” 。
  6. 对于“目标地址”,输入 10.6.0.0/16
  7. 对于“目标端口”,请输入“3389”。
  8. 选择添加

创建并连接 VPN 网关

通过 VPN 网关连接中心和本地虚拟网络。

为中心虚拟网络创建 VPN 网关

为中心虚拟网络创建 VPN 网关。 网络到网络配置需要基于路由的 VPN 类型。 创建 VPN 网关通常需要 45 分钟或更长的时间,具体取决于所选的 SKU。

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中,输入虚拟网络网关
  3. 选择“虚拟网络网关”,然后选择“创建”。
  4. 对于“名称”,输入 GW-hub
  5. 对于“区域”,请选择前面使用的同一区域。
  6. 对于“网关类型”,请选择“VPN”。
  7. 对于“VPN 类型”,请选择“基于路由”。
  8. 对于“SKU”,请选择“基本”。
  9. 对于“虚拟网络”,选择“VNet-Hub”。
  10. 对于“公共 IP 地址”,选择“新建”,然后输入 VNet-Hub-GW-pip 作为名称。
  11. 对于启用主动-主动模式,选择“已禁用”
  12. 接受剩余的默认值,然后选择“查看 + 创建”。
  13. 查看配置,然后选择“创建”。

为本地虚拟网络创建 VPN 网关

为本地虚拟网络创建 VPN 网关。 网络到网络配置需要基于路由的 VPN 类型。 创建 VPN 网关通常需要 45 分钟或更长的时间,具体取决于所选的 SKU。

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中,输入虚拟网络网关
  3. 选择“虚拟网络网关”,然后选择“创建”。
  4. 对于“名称”,输入 GW-Onprem
  5. 对于“区域”,请选择前面使用的同一区域。
  6. 对于“网关类型”,请选择“VPN”。
  7. 对于“VPN 类型”,请选择“基于路由”。
  8. 对于“SKU”,请选择“基本”。
  9. 对于“虚拟网络”,请选择“VNet-Onprem”。
  10. 对于“公共 IP 地址”,请选择“新建”,然后输入 VNet-Onprem-GW-pip 作为名称。
  11. 对于“启用主动-主动模式”,选择“已禁用”
  12. 接受剩余的默认值,然后选择“查看 + 创建”。
  13. 查看配置,然后选择“创建”。

创建 VPN 连接

现在,可在中心与本地网关之间创建 VPN 连接。

以下步骤将创建从中心虚拟网络到本地虚拟网络的连接。 这些示例显示了共享密钥,但可以对共享密钥使用自己的值。 共享密钥必须与两个连接匹配,这一点非常重要。 创建连接可能需要简短的一段时间才能完成。

  1. 打开“RG-fw-hybrid-test”资源组并选择“GW-hub”网关。
  2. 在左栏中选择“连接”。
  3. 选择添加
  4. 输入 Hub-to-Onprem 作为连接名称。
  5. 对于“连接类型”,选择“VNet 到 VNet”。
  6. 选择下一步
  7. 对于“第一个虚拟网络网关”,选择“GW-hub”。
  8. 对于“第二个虚拟网络网关”,选择“GW-Onprem”。
  9. 对于“共享密钥(PSK)”,输入 AzureA1b2C3
  10. 选择“查看 + 创建” 。
  11. 选择“创建”。

创建本地到中心之间的虚拟网络连接。 下面的步骤类似于之前的步骤,但这次是创建从 VNet-OnpremVNet-Hub 的连接。 确保共享密钥匹配。 连接在几分钟后建立。

  1. 打开“RG-fw-hybrid-test”资源组并选择“GW-Onprem”网关。
  2. 在左栏中选择“连接”。
  3. 选择添加
  4. 输入 Onprem-to-Hub 作为连接名称。
  5. 对于“连接类型”,选择“VNet 到 VNet”。
  6. 选择“下一步: 设置”。
  7. 对于“第一个虚拟网络网关”,选择“GW-Onprem”。
  8. 对于“第二个虚拟网络网关”,选择“GW-hub”。
  9. 对于“共享密钥(PSK)”,输入 AzureA1b2C3
  10. 选择“查看 + 创建” 。
  11. 选择“创建”。

验证连接

大约五分钟后,这两个连接的状态应显示为“已连接”。

显示网关连接的屏幕截图。

将中心和分支虚拟网络对等互连

现在,将中心和分支虚拟网络对等互连:

  1. 打开“RG-fw-hybrid-test”资源组并选择“VNet-Hub”虚拟网络。

  2. 在左栏中选择“对等互连”。

  3. 选择 添加

  4. 在“此虚拟网络”下:

    设置名 设置
    对等互连链接名称 输入 HubtoSpoke
    到远程虚拟网络的流量 选择允许
    从远程虚拟网络转发的流量 选择允许
    虚拟网络网关 选择使用此虚拟网络的网关
  5. 在“远程虚拟网络”下:

    设置名称
    对等互连链接名称 输入 SpoketoHub
    虚拟网络部署模型 选择“资源管理器”。
    订阅 选择订阅。
    虚拟网络 选择“VNet-Spoke”。
    到远程虚拟网络的流量 选择允许
    从远程虚拟网络转发的流量 选择允许
    虚拟网络网关 选择“使用远程虚拟网络的网关”。
  6. 选择添加

以下屏幕截图显示了将中心和分支型虚拟网络对等互连时要使用的设置:

显示对等互连中心和辐射虚拟网络的选择的屏幕截图。

创建路由

在下面的步骤中,将创建这些路由:

  • 通过防火墙 IP 地址从中心网关子网连接到分支子网的路由
  • 通过防火墙 IP 地址从分支子网连接的默认路由

要创建路由,请执行以下操作:

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中输入路由表
  3. 选择“路由表”,然后选择“创建”。
  4. 选择“RG-fw-hybrid-test”作为资源组。
  5. 对于“区域”,请选择以前使用的同一位置。
  6. 输入 UDR-Hub-Spoke 作为名称。
  7. 选择“查看 + 创建” 。
  8. 选择“创建”。
  9. 创建路由表后,请选择它以打开路由表页。
  10. 在左栏中选择“路由”。
  11. 选择添加
  12. 输入 ToSpoke 作为路由名称。
  13. 对于“目标类型”,请选择“IP 地址”
  14. 输入 10.6.0.0/16 作为目标 IP 地址/CIDR 范围
  15. 选择“虚拟设备”作为下一跃点类型。
  16. 输入前面记下的防火墙专用 IP 地址作为下一跃点地址。
  17. 选择添加

现在,将路由关联到子网:

  1. 在“UDR-Hub-Spoke - 路由”页上,选择“子网”。
  2. 选择“关联”。
  3. 在“虚拟网络”下,选择“VNet-Hub”。
  4. 在“子网”下,选择“GatewaySubnet”。
  5. 选择“确定”

从分支子网创建默认路由:

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索框中输入路由表
  3. 选择“路由表”,然后选择“创建”。
  4. 选择“RG-fw-hybrid-test”作为资源组。
  5. 对于“区域”,请选择以前使用的同一位置。
  6. 输入 UDR-DG 作为名称。
  7. 对于“传播网关路由”,请选择“否” 。
  8. 选择“查看 + 创建” 。
  9. 选择“创建”。
  10. 创建路由表后,请选择它以打开路由表页。
  11. 在左栏中选择“路由”。
  12. 选择添加
  13. 输入 ToHub 作为路由名称。
  14. 对于“目标类型”,请选择“IP 地址”
  15. 输入 0.0.0.0/0 作为目标 IP 地址/CIDR 范围
  16. 选择“虚拟设备”作为下一跃点类型。
  17. 输入前面记下的防火墙专用 IP 地址作为下一跃点地址。
  18. 选择添加

将路由关联到子网:

  1. 在“UDR-DG - 路由”页上,选择“子网”。
  2. 选择“关联”。
  3. 在“虚拟网络”下,选择“VNet-Spoke”。
  4. 在“子网”下,选择“SN-Workload”。
  5. 选择“确定”。

创建虚拟机

创建分支工作负载与本地虚拟机,并将其放入相应的子网。

创建工作负荷虚拟机

在分支虚拟网络中创建一个运行 Internet Information Services (IIS) 且没有公共 IP 地址的虚拟机:

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在“热门市场产品”下,选择“Windows Server 2019 Datacenter”。
  3. 输入虚拟机的以下值:
    • 资源组:选择“RG-fw-hybrid-test”。
    • 虚拟机名称:输入 VM-Spoke-01
    • 区域:选择之前使用的同一区域。
    • 用户名:输入用户名。
    • 密码:输入密码。
  4. 对“公共入站端口”,选择“允许所选端口”,然后选择“HTTP (80)”和“RDP (3389)”。
  5. 在完成时选择“下一步:磁盘”
  6. 接受默认设置,然后选择“下一步:网络”。
  7. 对于“虚拟网络”,选择“VNet-Spoke”。 子网为 SN-Workload
  8. 对于“公共 IP”,请选择“无”。
  9. 选择“下一步: 管理”。
  10. 在完成时选择“下一步:监视”。
  11. 对于“启动诊断”,请选择“禁用” 。
  12. 选择“查看 + 创建”,检查摘要页上的设置,然后选择“创建”。

安装 IIS

  1. 在 Azure 门户中打开本地 Shell,确保它设置为“PowerShell”。
  1. 运行以下命令以在虚拟机上安装 IIS 并根据需要更改位置:

    Set-AzVMExtension `
            -ResourceGroupName RG-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 地址进行连接。 在此处,可以通过防火墙连接到分支服务器。

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在“常用”下,选择“Windows Server 2019 Datacenter”。
  3. 输入虚拟机的以下值:
    • 资源组:选择“现有”,然后选择“RG-fw-hybrid-test”。
    • 虚拟机名称:输入 VM-Onprem
    • 区域:选择之前使用的同一区域。
    • 用户名:输入用户名。
    • 密码:输入用户密码。
  4. 对“公共入站端口”,选择“允许所选端口”,然后选择“RDP (3389)”。
  5. 在完成时选择“下一步:磁盘”
  6. 接受默认设置,然后选择“下一步:网络”。
  7. 对于虚拟网络,选择“VNet-Onprem”。 子网为 SN-Corp
  8. 选择“下一步: 管理”。
  9. 在完成时选择“下一步:监视”。
  10. 对于“启动诊断”,请选择“禁用” 。
  11. 选择“查看 + 创建”,检查摘要页上的设置,然后选择“创建”。

注意

Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。

发生以下事件之一时,将禁用默认出站访问 IP:

  • 将公共 IP 地址分配给 VM。
  • 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
  • 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。

在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。

有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问使用源网络地址转换 (SNAT) 进行出站连接

测试防火墙

  1. 记下 VM-spoke-01 虚拟机的专用 IP 地址。

  2. 在 Azure 门户中,连接到 VM-Onprem 虚拟机。

  3. VM-Onprem 上打开 Web 浏览器,并浏览到 http://<VM-Spoke-01 private IP>

    VM-Spoke-01 网页应打开。

    显示分支虚拟机网页的屏幕截图。

  4. 在“VM-Onprem”虚拟机中,打开远程访问连接并连接到 VM-spoke-01 的专用 IP 地址。

    应可成功连接,并且可以登录。

验证防火墙规则是否正常工作后,可以:

  • 浏览到分支虚拟网络上的 Web 服务器。
  • 使用 RDP 连接到分支虚拟网络上的服务器。

接下来,将防火墙网络规则集合的操作更改为“拒绝”,以验证防火墙规则是否按预期工作:

  1. 选择“AzFW01”防火墙。
  2. 选择“规则(经典)”
  3. 选择“网络规则集合”选项卡,然后选择“RCNet01”规则集合。
  4. 对于“操作”,请选择“拒绝”。
  5. 选择“保存”。

关闭任何现有的远程访问连接。 再次运行测试以测试更改的规则。 这一次,这些规则应该全部失败。

清理资源

可以保留防火墙资源以便进行进一步测试。 如果不再需要这些资源,请删除 RG-fw-hybrid-test 资源组以删除所有与防火墙相关的资源。

后续步骤

监视 Azure 防火墙日志