教程:使用 Azure 门户部署和配置Azure 防火墙和策略

控制出站网络访问是整个网络安全计划的重要组成部分。 例如,你可能想要限制对网站的访问。 您可能希望限制可以访问的出站 IP 地址和端口。

可以使用 Azure 防火墙和防火墙策略,从 Azure 子网控制出站网络访问。 通过使用Azure 防火墙和防火墙策略,可以配置:

  • 应用程序规则,用于定义可从子网访问的完全限定域名 (FQDN)。
  • 网络规则,用于定义源地址、协议、目标端口和目标地址。

将网络流量路由到用作子网默认网关的防火墙时,网络流量受到配置的防火墙规则的控制。

本教程介绍如何使用两个子网创建简化的单一虚拟网络(VNet),以便轻松部署。

  • AzureFirewallSubnet - 防火墙在此子网中。
  • Workload-SN - 工作负荷服务器在此子网中。 此子网的网络流量通过防火墙。

显示防火墙网络基础结构的示意图。

对于生产部署,请使用 中心辐射模型,防火墙置于独立的 VNet 中。 工作负荷服务器位于同一区域的对等虚拟网络(VNets)中,并包含一个或多个子网。

在本教程中,你将了解如何执行以下操作:

  • 设置测试网络环境
  • 部署防火墙和防火墙策略
  • 创建默认路由
  • 配置一个应用程序规则以允许访问 www.qq.com
  • 配置网络规则,以允许访问外部 DNS 服务器
  • 配置 NAT 规则以允许对测试服务器的入站 HTTP 访问
  • 测试防火墙

如果愿意,可以使用 Azure PowerShell 来完成此过程。

先决条件

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

选择支持Azure Bastion开发人员的区域,例如中国北部。 在本教程中,使用该区域获取所有资源。

设置网络

首先,创建一个资源组用于包含部署防火墙所需的资源。 然后创建虚拟网络、子网和测试服务器。

创建资源组

资源组包含本教程所需的所有资源。

  1. 登录到 Azure 门户。

  2. 在Azure门户菜单上,选择资源组或从任何页面中搜索并选择资源组,然后选择创建。 输入或选择下列值:

    设置 值
    订阅 选择Azure订阅。
    资源组 输入“Test-FW-RG”。
    区域 选择区域。 你创建的所有其他资源必须位于同一区域中。
  3. 选择“审核 + 创建”>创建。

创建 VNet

此 VNet 有两个子网。

注意

AzureFirewallSubnet 子网的大小为 /26。 有关子网大小的详细信息,请参阅 Azure 防火墙 FAQ。

  1. 在Azure门户菜单上或从 Home, 选择 创建资源,搜索 Virtual network,然后选择 Create。

  2. 输入或选择下列值:

    设置 值
    订阅 选择Azure订阅。
    资源组 选择“Test-FW-RG”。
    名称 输入Test-FW-VN。
    区域 选择先前使用的相同位置。
  3. 选择 “下一步 ”两次以访问 “IP 地址 ”选项卡。

  4. 对于“IPv4 地址空间”,请接受默认值“10.0.0.0/16”。

  5. 在“子网”下,选择“默认值”。 在 Edit 子网窗格中,将 Subnet purpose 设置为 Azure 防火墙。

    防火墙位于此子网中,子网名称 必须是 AzureFirewallSubnet。

  6. 对于 起始地址,请键入 10.0.1.0,然后选择“ 保存”。

  7. 选择 “添加子网 ”并输入以下值,然后选择“ 添加:

    设置 值
    子网名称 Workload-SN
    起始地址 10.0.2.0/24
  8. 选择“审核 + 创建”>创建。

部署Azure Bastion

使用 Azure Bastion Developer 安全连接 Srv-Work 进行测试。 开发者使用共享基础设施,连接到同一虚拟网络中的虚拟机。 它不需要专用 的 AzureBastionSubnet 或公共 IP 地址。

这个教程里没有单独的专用主机部署。 创建虚拟机并配置防火墙后,测试步骤将通过 Bastion 进行连接。 在支持的区域内,选择 连接 会自动部署堡垒开发者。 有关详细信息,请参阅 部署 Bastion Developer。

创建虚拟机

创建工作负荷虚拟机并将其放置在 Workload-SN 子网中。

  1. 在门户顶部的搜索框中,输入 虚拟机,选择 虚拟机,然后选择“ 创建>虚拟机”。

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

    设置 值
    项目详情
    订阅 选择Azure订阅。
    资源组 选择“Test-FW-RG”。
    实例详细信息
    虚拟机名称 输入“Srv-Work”。
    区域 选择先前使用的相同位置。
    可用性选项 选择“无需基础结构冗余”。
    安全类型 选择“标准” 。
    图像 选择 Ubuntu Server 24.04 LTS - Gen2
    尺寸 选择虚拟机的大小。
    管理员帐户
    用户名 输入“azureuser”。
    SSH 公钥源 选择“生成新密钥对”。
    密钥对名称 输入 Srv-Work_key。
  3. 在 “入站端口规则”下,将 公共入站端口 设置为 “无”。

  4. 接受其他默认值,并在“ 网络 ”选项卡上,确保已选择 Test-FW-VN / Workload-SN , 公共 IP 为 “无”。

  5. 选择“审核 + 创建”>创建。 出现提示时,选择“ 下载私钥”并创建资源 并保存密钥文件。

  6. 部署完成后,请记下 Srv-Work 专用 IP 地址供以后使用。

部署防火墙和策略

将防火墙部署到虚拟网络。

  1. 在Azure门户菜单或从 Home 中,选择 创建资源,搜索 Firewall,然后选择 Create。

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

    设置 值
    项目详情
    订阅 选择Azure订阅。
    资源组 选择“Test-FW-RG”。
    实例详细信息
    名称 输入“Test-FW01”。
    区域 选择先前使用的相同位置。
    防火墙 SKU 选择“标准” 。
    防火墙管理 选择“使用防火墙策略来管理此防火墙”。
    防火墙策略 选择“新增”,并输入“fw-test-pol”。
    选择前面使用的同一区域。 选择“确定”。
    选择虚拟网络 选择「使用现有」,然后选择「Test-FW-VN」。 忽略有关强制隧道的警告。 警告将在后续步骤中解决.
    公共 IP 地址 选择新增,并为名称输入fw-pip。 选择“确定”。
  3. 勾选 “启用防火墙管理网卡 ”选项,然后选择 “下一步:高级”。

  4. 在本教程中,将启用 NAT 网关保留为未选中。 要在防火墙创建时配置 StandardV2 NAT 网关,请参见“与 Azure 防火墙 集成 NAT 网关。

  5. 选择 审核+创建,查看设置,然后选择 创建。

    部署需要几分钟时间。

  6. 部署完成后,转到 Test-FW-RG,选择 Test-FW01 防火墙,并记下专用和公共 IP 地址供以后使用。

创建默认路由

对于Workload-SN子网,请配置出站默认路由,使其通过防火墙。

  1. 搜索并选择 “路由表”,选择“ 创建”,然后输入以下值:

    设置 值
    项目详情
    订阅 选择Azure订阅。
    资源组 选择“Test-FW-RG”。
    实例详细信息
    名称 输入"Firewall-route"。
    区域 选择先前使用的相同位置。
  2. 选择“审核 + 创建”>创建。

    部署完成后,选择“转到资源”。

  3. 在 “防火墙路由 ”窗格的 “设置”下,选择“ 子网>关联”。

  4. 对于 虚拟网络,请选择 Test-FW-VN,对于 子网,请选择 Workload-SN。 选择“确定”。

  5. 选择“ 添加路由>”,并输入以下值:

    设置 值
    路由名称 fw-dg
    目标类型 IP 地址
    目标 IP 地址/CIDR 范围前缀 0.0.0.0/0
    下一个跃点类型 虚拟设备
    下一个跃点地址 前面记录的防火墙的专用 IP 地址

    注意

    Azure 防火墙实际上是托管服务,但虚拟设备在这种情况下有效。

  6. 选择 添加 。

安装 Web 服务器

虚拟机没有公共IP地址。 使用你刚创建的工作负载路由和一条临时应用规则,通过防火墙下载 nginx。 安装时保持虚拟机默认的 Azure 提供的 DNS 设置。

  1. 打开 fw-test-pol。 在“ 规则”下,选择“ 应用程序规则>添加规则集合”。

  2. 输入以下值:

    设置 值
    名称 Install-Nginx
    规则集合类型 应用程序
    优先级 100
    规则集合操作 允许
    规则汇集组 DefaultApplicationRuleCollectionGroup
    规则名称 允许包仓库
    源类型 IP 地址
    来源 10.0.2.0/24
    Protocol:port http:80, https:443
    目标类型 FQDN
    目标完全限定域名 (FQDN) azure.archive.ubuntu.com,archive.ubuntu.com,security.ubuntu.com,packages.microsoft.com
  3. 选择 添加 ,等待策略更新完成。

  4. 在 Test-FW-RG 中,选择 Srv-Work。 选择“操作”>“运行命令”>RunShellScript,输入以下命令,然后选择“运行”:

    set -eu
    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
    curl --fail http://localhost
    
  5. 确认命令成功完成并返回 Azure 防火墙 DNAT 测试页面。 如果软件包下载失败,请检查错误信息中的仓库主机名,并将其与临时规则进行比对。 仅允许已配置的软件包仓库;不要添加通配符 Internet 规则。 参见 “排查Ubuntu上APT常见问题”。

  6. 返回 fw-test-pol 并删除 Install-Nginx 规则集合。 请等待政策更新完成后再继续。 这种移除确保后续测试只评估教程的永久规则。

配置应用程序规则

此应用程序规则授予到 www.qq.com 的出站访问权限。

  1. 打开“Test-FW-RG”资源组,然后选择“fw-test-pol”防火墙策略。

  2. 在“设置规则”>下,选择“应用程序规则>”。

  3. 输入以下值:

    设置 值
    名称 App-Coll01
    优先级 200
    规则集合操作 允许
    Rules
    名称 Allow-qq
    源类型 IP 地址
    来源 10.0.2.0/24
    Protocol:port http、https
    目标类型 FQDN
    目的地 www.qq.com
  4. 选择 添加 。

Azure 防火墙(Azure 防火墙)内置了用于默认允许的基础结构 FQDN 的规则集合。 这些 FQDN 特定于平台,不能用于其他目的。 有关详细信息,请参阅基础结构 FQDN。

等待应用程序规则部署完成,然后继续。

配置网络规则

此网络规则向端口 53(DNS)的两个 IP 地址授予出站访问权限。

  1. 选择 “网络规则>添加规则集合”。

  2. 输入以下值:

    设置 值
    名称 Net-Coll01
    优先级 200
    规则集合操作 允许
    规则汇集组 DefaultNetworkRuleCollectionGroup
    Rules
    名称 Allow-DNS
    源类型 IP 地址
    来源 10.0.2.0/24
    协议 UDP
    目标端口 53
    目标类型 IP 地址
    目的地 209.244.0.3,209.244.0.4 (世纪链接运营的公共 DNS 服务器)
  3. 选择 添加 。

等待网络规则部署完成,然后继续。

配置 DNAT 规则

此规则通过防火墙连接到 Srv-Work 虚拟机上的 Web 服务器。

  1. 选择 DNAT 规则>添加规则集合。

  2. 输入以下值:

    设置 值
    名称 HTTP
    优先级 200
    规则汇集组 DefaultDnatRuleCollectionGroup
    Rules
    名称 http-nat
    源类型 IP 地址
    来源 *
    协议 TCP
    目标端口 80
    目的地 防火墙公共 IP 地址
    已转换的类型 IP 地址
    已翻译的地址 Srv-Work 专用 IP 地址
    已翻译的端口 80
  3. 选择 添加 。

更改 Srv-Work 网络接口的主要和辅助 DNS 地址

为了在本教程中进行测试,请配置服务器的主要和辅助 DNS 地址。 此配置不是常规Azure 防火墙要求。

  1. 在 Test-FW-RG 资源组中,选择 Srv-Work 虚拟机的网络接口。
  2. 在 “设置”下,选择 “DNS 服务器>自定义”。
  3. 输入 209.244.0.3 和 209.244.0.4 作为 DNS 服务器,然后选择“ 保存”。
  4. 重启 Srv-Work 虚拟机。

测试防火墙

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

测试 DNAT 规则

  1. 在本地计算机上的 Web 浏览器中,输入 http://<firewall-public-ip-address>。
  2. 你将看到自定义网页:Azure 防火墙 DNAT 测试。 这确认 DNAT 规则正常工作。

测试应用程序和网络规则

使用 Azure Bastion 安全地连接到 Srv-Work 虚拟机并测试防火墙规则。

  1. 在 Test-FW-RG 资源组中,选择 Srv-Work 虚拟机,然后选择“通过 Bastion 连接连接>”。

  2. 在 Bastion 页上,输入或选择以下值:

    设置 值
    身份验证类型 从本地文件选择 SSH 私钥。
    用户名 输入“azureuser”。
    本地文件 选择 “浏览 ”,然后选择在创建 VM 期间下载的 Srv-Work_key.pem 文件。
  3. 选择 连接。

    Bastion Developer 会自动部署,并在门户中向 Srv-Work 开启 SSH 会话。

  4. 在 SSH 会话中,输入以下命令以测试对 qq 的访问:

    curl -I https://www.qq.com
    

    你会看到成功的 HTTP 响应(200 正常),指示应用程序规则允许访问 qq。

  5. 现在测试对Microsoft的访问,应阻止访问。 输入:

    curl -I https://www.microsoft.com
    

    该命令在大约 60 秒后超时或失败,指示防火墙正在阻止访问。

现在,你已验证防火墙规则是否正常工作:

  • 可以通过 DNAT 规则访问 Web 服务器。
  • 可以浏览到一个允许的 FQDN,但不能浏览到其他任何 FQDN。
  • 可以使用配置的外部 DNS 服务器解析 DNS 名称。

清理资源

可以在下一教程中保留防火墙资源。 如果不再需要它们,请删除 Test-FW-RG 资源组以删除所有与防火墙相关的资源。

后续步骤