教程:使用 Azure 防火墙管理器保护中心虚拟网络

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

使用 Azure 防火墙管理器,可以创建中心虚拟网络来保护发往专用 IP 地址、Azure PaaS 和 Internet 的混合网络流量。 可以使用 Azure 防火墙器通过策略来定义允许和拒绝的网络流量,以便控制混合网络中的网络访问。

防火墙管理器还支持安全虚拟中心体系结构。 有关安全虚拟中心和中心虚拟网络体系结构类型的比较,请参阅有哪些 Azure 防火墙管理器体系结构选项?

在本教程中,请创建三个虚拟网络:

  • VNet-Hub - 防火墙在此虚拟网络中。

  • VNet-Spoke - 分支虚拟网络代表 Azure 中的工作负荷。

  • VNet-Onprem - 本地虚拟网络代表本地网络。 在实际部署中,可以使用 VPN 或 ExpressRoute 来连接它。 为简单起见,本教程将使用 VPN 网关连接,并使用 Azure 中的某个虚拟网络来代表本地网络。

Azure 防火墙管理器中心混合网络的屏幕截图。

本教程介绍如何执行下列操作:

  • 创建防火墙策略
  • 创建虚拟网络
  • 配置和部署防火墙
  • 创建并连接 VPN 网关
  • 将中心和分支虚拟网络对等互连
  • 创建路由
  • 创建虚拟机
  • 测试防火墙

先决条件

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

  • 若要通过中心防火墙路由辐射子网流量,需有一个用户定义的路由 (UDR) 且该路由应指向禁用了“虚拟网络路由传播”设置的防火墙。 此选项可防止路由分发到辐射子网。 这可以防止获知的路由与你的 UDR 冲突。

  • 请在中心网关子网上配置一个指向防火墙 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. “创建 Azure 防火墙策略”中,选择订阅,对于资源组,请选择“ 新建 ”,并创建名为 FW-Hybrid-Test 的资源组。

  5. 对于策略名称,请输入 Pol-Net01

  6. 对于“区域”,请选择“中国东部”。

  7. 选择“下一步: DNS 设置”。

  8. 选择“下一步:TLS 检查”

  9. 选择“下一步:规则”。

  10. 选择“添加规则集合”。

  11. 对于“名称”,输入 RCNet01

  12. 对于“规则集合类型”,请选择“网络”。

  13. 对于“优先级”,请输入“100”。

  14. 对于“操作”,请选择“允许”。

  15. “规则”下,对于 “名称”,请输入 AllowWeb

  16. 源类型中选择 IP 地址

  17. 对于 ,请输入 192.168.1.0/24

  18. 对于“协议”,请选择“TCP”。

  19. 对于“目标端口”,输入 80

  20. 对于“目标类型”,请选择“IP 地址”。

  21. 对于 目标,请输入 10.6.0.0/16

  22. 选择 添加

  23. 选择“查看 + 创建”。

  24. 检查详细信息,然后选择“创建”。

创建防火墙中心虚拟网络

注意

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

  1. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络

  2. 选择“创建”。

  3. 对于“订阅”,请选择自己的订阅。

  4. 对于“资源组”,请选择“FW-Hybrid-Test”。

  5. 对于 名称,请输入 VNet-Hub

  6. 对于“区域”,请选择“中国东部”。

  7. 选择下一步

  8. 在“安全性”上,选择“下一步”。

  9. 对于 IPv4 地址空间,请输入 10.5.0.0/16

  10. 在“子网”下,选择“默认值”。

  11. 对于“子网用途”,请选择“Azure 防火墙”

  12. 对于 起始地址,请输入 10.5.0.0/26

  13. 接受其他默认设置,然后选择“保存”。

  14. 选择“查看 + 创建”。

  15. 选择“创建”。

添加另一个子网,将子网用途设置为“虚拟网络网关”,起始地址为 10.5.1.0/27。 此子网用于 VPN 网关。

创建分支虚拟网络

  1. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络

  2. 选择“创建”。

  3. 对于“订阅”,请选择自己的订阅。

  4. 对于“资源组”,请选择“FW-Hybrid-Test”。

  5. 对于“名称”,输入 VNet-Spoke

  6. 对于“区域”,请选择“中国东部”。

  7. 选择下一步

  8. 在“安全性”页上,选择“下一步”。

  9. 选择“下一步: IP 地址”。

  10. 对于 IPv4 地址空间,请输入 10.6.0.0/16

  11. 在“子网”下,选择“默认值”。

  12. 将“名称”更改为“SN-Workload”。

  13. 对于 起始地址,请输入 10.6.0.0/24

  14. 接受其他默认设置,然后选择“保存”。

  15. 选择“查看 + 创建”。

  16. 选择“创建”。

创建本地虚拟网络

  1. 在门户顶部的搜索框中,输入“虚拟网络”。 在搜索结果中选择 虚拟网络

  2. 选择“创建”。

  3. 对于“订阅”,请选择自己的订阅。

  4. 对于“资源组”,请选择“FW-Hybrid-Test”。

  5. 对于 虚拟网络名称,请输入 VNet-Onprem

  6. 对于“区域”,请选择“中国东部”。

  7. 选择下一步

  8. 在“安全性”页上,选择“下一步”。

  9. 对于 IPv4 地址空间,请输入 192.168.0.0/16

  10. 在“子网”下,选择“默认值”。

  11. 将“名称”更改为 SN-Corp。

  12. 对于 起始地址,请输入 192.168.1.0/24

  13. 接受其他默认设置,然后选择“保存”。

  14. 选择“添加子网”

  15. 对于“子网用途”,请选择“虚拟网络网关”

  16. 对于 起始地址 ,请输入 192.168.2.0/27

  17. 选择 添加

  18. 选择“查看 + 创建”。

  19. 选择“创建”。

配置和部署防火墙

安全策略在与中心关联后,将称作“中心虚拟网络”。

VNet-Hub 虚拟网络转换为中心虚拟网络,并使用 Azure 防火墙对其进行保护。

  1. 在 Azure 门户搜索栏中,输入 防火墙管理器 ,然后按 Enter

  2. 在右窗格中,选择“概述”。

  3. 在“Azure 防火墙管理器”页上的“向虚拟网络添加安全性”下,选择“查看中心虚拟网络”。

  4. “虚拟网络”下,选中 VNet-Hub 的复选框。

  5. 选择“管理安全性”,然后选择“部署具有防火墙策略的防火墙”。

  6. 在“转换虚拟网络”页上的“Azure 防火墙层”下,选择“高级”。 在“防火墙策略”下,选中“Pol-Net01”的复选框。

  7. 选择“下一步: 查看 + 确认”

  8. 检查详细信息,然后选择“确认”。

    部署过程需要花费几分钟时间。

  9. 部署完成后,转到“FW-Hybrid-Test”资源组,然后选择防火墙。

  10. 请注意“概述”页上的“防火墙专用 IP 地址”。 稍后在创建默认路由时需要用到它。

部署 Azure Bastion

部署 Azure Bastion 开发人员版,以安全地连接到虚拟机进行测试。

  1. 在门户顶部的搜索框中,输入“堡垒”。 从搜索结果中选择 Bastions

  2. 选择“创建”。

  3. “创建 Bastion ”页上,输入或选择以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择 FW-Hybrid-Test
    实例详细信息
    Name 输入 Bastion-Hub
    区域 选择“中国东部”。
    选择 “开发人员”。
    虚拟网络 选择 VNet-Hub
    子网 使用地址空间 10.5.2.0/26 自动创建 AzureBastionSubnet
  4. 选择“查看 + 创建”。

  5. 检查设置,然后选择“创建”。

    部署需要数分钟才能完成。

创建并连接 VPN 网关

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

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

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

  1. 在门户顶部的搜索框中,输入 虚拟网络网关。 在搜索结果中选择 虚拟网络网关

  2. 依次选择“虚拟网络网关”、“创建”。

  3. 对于“名称”,输入 GW-hub

  4. 对于 区域,请选择 “美国”中国东部

  5. 对于“网关类型”,请选择“VPN”。

  6. 对于“SKU”,选择“VpnGw2”。

  7. 为“代系”选择“第 2 代”。

  8. 对于“虚拟网络”,请选择“VNet-Hub”。

  9. 对于 公共 IP 地址,请选择 “新建”,然后输入 VNet-Hub-GW-pip 以获取名称。

  10. 对于“启用主动-主动模式”,选择“已禁用”

  11. 接受剩余的默认值,然后选择“查看 + 创建”。

  12. 检查配置,然后选择“创建”。

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

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

  1. 在门户顶部的搜索框中,输入 虚拟网络网关。 在搜索结果中选择 虚拟网络网关

  2. 依次选择“虚拟网络网关”、“创建”。

  3. 对于“名称”,输入 GW-Onprem

  4. 对于 区域,请选择 “美国”中国东部

  5. 对于“网关类型”,请选择“VPN”。

  6. 对于“SKU”,选择“VpnGw2”。

  7. 为“代系”选择“第 2 代”。

  8. 对于“虚拟网络”,请选择“VNet-Onprem”。

  9. 对于 公共 IP 地址,请选择创建新的,并输入名称 VNet-Onprem-GW-pip

  10. 对于“启用主动-主动模式”,选择“已禁用”

  11. 接受剩余的默认值,然后选择“查看 + 创建”。

  12. 检查配置,然后选择“创建”。

创建 VPN 连接

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

此步骤创建从中心虚拟网络到本地虚拟网络的连接。 示例中引用了一个共享密钥。 可以对共享密钥使用自己的值。 共享密钥必须与两个连接匹配,这一点非常重要。 创建连接需要花费一段时间。

  1. 打开“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. 打开“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. 选择“确定” 。

验证连接

在部署第二个网络连接大约五分钟左右后,两个连接的状态应为“已连接”

VPN 网关连接的屏幕截图。

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

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

  1. 打开 FW-Hybrid-Test 资源组,然后选择 VNet-Hub 虚拟网络。

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

  3. 选择 添加

  4. 在“远程虚拟网络摘要”下:

    设置名称
    对等互连链接名称 SpoketoHub
    虚拟网络部署模型 资源管理器
    订阅 <订阅>
    虚拟网络 VNet-Spoke
    允许“VNet-分支”访问“VNet-中心” 已选定
    允许“VNet-Spoke”接收来自“VNet-Hub”的转发流量 已选定
    允许“VNet-Spoke”中的网关或路由服务器将流量转发到“VNet-Hub” 未选中
    启用“VNet-Spoke”以使用“VNet-Hub”的远程网关或路由服务器 已选定
  5. 在“本地虚拟网络摘要”下:

    设置名称
    对等互连链接名称 HubtoSpoke
    允许“VNet-Hub”访问“VNet-Spoke” 已选定
    允许“VNet-Hub”接收来自“VNet-Spoke”的转发流量 已选定
    允许“VNet-Hub”中的网关或路由服务器将流量转发到“VNet-Spoke” 已选定
    启用“VNet-Hub”以使用“VNet-Spoke”远程网关或路由服务器 未选中
  6. 选择 添加

    VNet 对等互连的屏幕截图。

创建路由

接下来创建一对路由:

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

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

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

  2. 在搜索文本框中,输入 路由表 ,然后按 Enter

  3. 选择“路由表”。

  4. 选择“创建”。

  5. 选择“FW-Hybrid-Test”作为资源组。

  6. 对于“区域”,请选择“中国东部”。

  7. 输入 UDR-Hub-Spoke 作为名称。

  8. 选择“查看 + 创建”。

  9. 选择“创建”。

  10. 创建路由表后,请选择它以打开路由表页。

  11. 在左栏中选择“路由”。

  12. 选择 添加

  13. 输入 ToSpoke 作为路由名称。

  14. 对于“目标类型”,请选择“IP 地址”

  15. 输入 10.6.0.0/16 作为目标 IP 地址/CIDR 范围

  16. 选择“虚拟设备”作为下一跃点类型。

  17. 对于下一跳地址,请输入之前记录的防火墙专用 IP 地址。

  18. 选择 添加

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

  1. 在“UDR-Hub-Spoke - 路由”页上,选择“子网”。

  2. 选择“关联”。

  3. 在“虚拟网络”下,选择“VNet-Hub”。

  4. 在“子网”下,选择“GatewaySubnet”。

  5. 选择“确定” 。

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

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

  2. 在搜索文本框中,输入 路由表 ,然后按 Enter

  3. 选择“路由表”。

  4. 选择“创建”。

  5. 选择“FW-Hybrid-Test”作为资源组。

  6. 对于“区域”,请选择“中国东部”。

  7. 输入 UDR-DG 作为名称。

  8. 对于“传播网关路由”,请选择“否” 。

  9. 选择“查看 + 创建”。

  10. 选择“创建”。

  11. 创建路由表后,请选择它以打开路由表页。

  12. 在左栏中选择“路由”。

  13. 选择 添加

  14. 输入 ToHub 作为路由名称。

  15. 对于“目标类型”,请选择“IP 地址”

  16. 输入 0.0.0.0/0 作为目标 IP 地址/CIDR 范围

  17. 选择“虚拟设备”作为下一跃点类型。

  18. 对于下一跳地址,请输入之前记录的防火墙专用 IP 地址。

  19. 选择 添加

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

  1. 在“UDR-DG - 路由”页上,选择“子网”。

  2. 选择“关联”。

  3. 在“虚拟网络”下,选择“VNet-spoke”。

  4. 在“子网”下,选择“SN-Workload”。

  5. 选择“确定” 。

创建虚拟机

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

创建工作负荷虚拟机

在辐射(Spoke)虚拟网络中创建一台没有公共 IP 地址的虚拟机,并在其中安装一个 Web 服务器。

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

  2. 在门户顶部的搜索框中,输入 虚拟机,在搜索结果中选择 虚拟机

  3. 选择“ 创建>虚拟机”。

  4. 输入或选择虚拟机的以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择 FW-Hybrid-Test
    实例详细信息
    虚拟机名称 输入 VM-Spoke-01
    区域 选择“中国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准” 。
    图像 选择 Ubuntu Server 24.04 LTS -x64 Gen2
    尺寸 选择虚拟机的大小。
    管理员帐户
    用户名 输入“azureuser”。
    SSH 公钥源 选择“生成新密钥对”。
    密钥对名称 输入 VM-分支-01_key
  5. 在“公用入站端口”,“入站端口规则”下 ,选择“无”。

  6. 选择下一步: 磁盘

  7. 接受默认设置,然后选择“下一步:网络”。

  8. 选择“VNet-Spoke”作为虚拟网络;子网为“SN-Workload”。

  9. 对于“公共 IP”,请选择“无”。

  10. 选择“查看 + 创建”。

  11. 检查摘要页上的设置,然后选择“创建”。

  12. 出现提示时,选择“下载私钥和创建资源”。 将私钥文件保存到计算机。

  13. 部署完成后,请记下专用 IP 地址供以后使用。

安装 Web 服务器

连接到虚拟机并安装用于测试的 Web 服务器。

  1. 在 Azure 门户菜单上,选择“资源组”或从任意页面搜索并选择“资源组”。 选择 FW-Hybrid-Test 资源组。

  2. 选择 VM-Spoke-01 虚拟机。

  3. 选择 操作>运行命令>RunShellScript

  4. 在脚本框中,输入以下命令:

    sudo apt-get update
    sudo apt-get install -y nginx
    echo "<html><body><h1>VM-Spoke-01</h1><p>Hybrid network test page</p></body></html>" | sudo tee /var/www/html/index.html
    
  5. 选择 运行

  6. 等待脚本成功完成。

创建本地虚拟机

这是一个用于通过 Azure Bastion 进行连接的虚拟机,用于测试防火墙。

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

  2. 在门户顶部的搜索框中,输入 虚拟机,在搜索结果中选择 虚拟机

  3. 选择“ 创建>虚拟机”。

  4. 输入或选择虚拟机的以下值:

    设置
    项目详细信息
    订阅 选择 Azure 订阅。
    资源组 选择 FW-Hybrid-Test
    实例详细信息
    虚拟机名称 输入 VM-Onprem
    区域 选择“中国东部”。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准” 。
    图像 选择 Ubuntu Server 24.04 LTS -x64 Gen2
    尺寸 选择虚拟机的大小。
    管理员帐户
    用户名 输入“azureuser”。
    SSH 公钥源 选择“生成新密钥对”。
    密钥对名称 输入 VM-Onprem_key
  5. 在“公用入站端口”,“入站端口规则”下 ,选择“无”。

  6. 选择下一步: 磁盘

  7. 接受默认设置,然后选择“下一步:网络”。

  8. 为虚拟网络选择 VNet-Onprem ,并验证子网是否为 SN-Corp

  9. 对于“公共 IP”,请选择“无”。

  10. 选择“查看 + 创建”。

  11. 检查摘要页上的设置,然后选择“创建”。

  12. 出现提示时,选择“下载私钥和创建资源”。 将私钥文件保存到计算机。

  13. 部署完成后,请记下专用 IP 地址供以后使用。

测试防火墙

现在测试防火墙,以确认它是否按预期方式工作。

  1. 使用 Azure Bastion 和下载的 SSH 密钥连接到 VM-Onprem 虚拟机:

    • 在 Azure 门户中,选择 VM-Onprem 虚拟机。
    • 选择连接>连接>
    • 对于 身份验证类型请从本地文件选择 SSH 私钥
    • 对于 “用户名”,请输入 azureuser
    • 对于 本地文件,请选择“ 上传文件 ”并浏览到之前下载的 VM-Onprem_key.pem 文件。
    • 选择 连接
  2. 在 SSH 会话中,使用其专用 IP 地址在 VM-Spoke-01 上测试 Web 服务器(可以在 VM-Spoke-01 概述页上找到):

    curl http://10.0.1.4
    

    应会看到 VM-Spoke-01 网页中的 HTML 响应:

    <html><body><h1>VM-Spoke-01</h1><p>Hybrid network test page</p></body></html>
    
  3. 关闭 Bastion SSH 会话。

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

  • 您可以在分支虚拟网络上浏览 Web 服务器。

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

  1. 打开“FW-Hybrid-Test”资源组并选择“Pol-Net01”防火墙策略。

  2. 在“设置”下,选择“规则集合”。

  3. 选择“RCNet01”规则集合。

  4. 对于“规则集合操作”,请选择“拒绝”。

  5. 选择“保存”。

在测试已更改的规则之前,请关闭 VM-Onprem 上的所有现有远程桌面和浏览器。 规则集合更新完成后,再次运行测试。 这一次,远程桌面和浏览器应该都无法建立连接。

清理资源

可以保留防火墙资源以供进一步的调查。不再需要时,请删除 FW-Hybrid-Test 资源组,以删除与防火墙相关的所有资源。

后续步骤