你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

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

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

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

混合网络中的防火墙

如果要使用 Azure PowerShell 完成此过程,请参阅使用 Azure PowerShell 在混合网络中部署和配置 Azure 防火墙

注意

本文使用经典防火墙规则来管理防火墙。 首选方法是使用防火墙策略。 若要使用防火墙策略完成此过程,请查看教程:使用 Azure 门户在混合网络中部署和配置 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 订阅,请在开始之前创建一个免费帐户

创建防火墙中心虚拟网络

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

  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
    名称 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 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 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 网关。 网络到网络配置需要 RouteBased VpnType。 创建 VPN 网关通常需要 45 分钟或更长时间,具体取决于所选 VPN 网关的 SKU。

  1. 在 Azure 门户主页上,选择“创建资源”。
  2. 在搜索文本框中,键入“虚拟网络网关”并按 Enter
  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-Onprem 到 VNet-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. 选择 添加

    VNet 对等互连

创建路由

接下来创建一对路由:

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

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

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

现在,创建从辐射子网的默认路由。

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

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

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

创建虚拟机

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

创建工作负荷虚拟机

在分支虚拟网络中,创建运行 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 门户中打开 Cloud Shell,确保它设置为“PowerShell”。

  2. 运行以下命令以在虚拟机上安装 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 EastUS
    

创建本地虚拟机

你将使用此虚拟机通过远程桌面连接到公共 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 地址分配给 VM、将 VM 放置在具有或不具有出站规则的标准负载均衡器的后端池中,或者将 Azure 虚拟网络 NAT 网关资源分配给 VM 的子网时,默认禁用出站访问 IP。

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

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

测试防火墙

  1. 首先,记下“VM-spoke-01”虚拟机的专用 IP 地址。

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

  1. VM-Onprem 上打开 Web 浏览器并浏览到 http://<VM-spoke-01 的专用 IP>。

    你会看到 VM-spoke-01 网页:VM-Spoke-01 web page

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

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

现已验证防火墙规则可正常工作:

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

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

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

在测试更改的规则之前,请关闭所有现有的远程桌面。 现在再次运行测试。 这一次,这些规则应该全部失败。

清理资源

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

后续步骤

接下来,可以监视 Azure 防火墙日志。

教程:监视 Azure 防火墙日志