配置 Azure 防火墙以实现高级网络保护

配置 Azure 防火墙以实现高级网络保护

08/08/2024

本技术和教育文章旨在指导安全分析师、IT 管理员和系统工程师配置和使用 Azure 防火墙来实现高级网络保护。 Azure 防火墙是一种基于云的托管网络安全服务,可为 Azure 网络资源提供第 4 层和第 7 层威胁防护,从而实现网络控制的集中化并在云环境中实施一致的安全策略 [1]。

简介

在不断发展的云环境中,网络安全是保护应用程序和数据的基本支柱。 Azure 防火墙提供了用于检查和控制网络流量的强大解决方案,充当安全策略的执行中心点。它超越了基本的网络安全组 (NSG),提供了高级功能,例如基于完全限定域名 (FQDN) 的流量过滤、威胁情报、入侵检测和防御系统 (IDPS) 以及 TLS 检查,这使得它对于 Azure 中的安全网络架构至关重要,尤其是在中心辐射模型中 [2]。

本实用指南将涵盖部署 Azure 防火墙、配置网络和应用程序规则、启用威胁情报和 IDPS、与其他 Azure 服务集成以及网络治理的最佳实践。将提供分步说明、示例 Azure CLI 命令和示例,以便读者能够实施和验证有效的网络保护策略,减少攻击面并增强 Azure 基础设施的网络弹性。

为什么 Azure 防火墙对于高级网络保护至关重要?

  • 高级流量过滤:允许您根据 IP 地址、端口、协议、FQDN 和 URL 过滤网络流量,提供精细控制。
  • 威胁情报:根据 Microsoft 威胁情报源自动阻止进出已知恶意域和 IP 地址的流量。
  • IDPS(入侵检测和防御系统):检测并阻止基于签名的实时攻击,包括漏洞利用和恶意软件。
  • TLS 检查:解密传出 TLS/SSL 流量以检查隐藏的威胁并实施安全策略,在将其发送到目的地之前重新加密。
  • 集中部署:可以部署在中心虚拟网络中,以保护多个分支虚拟网络,从而简化管理和策略实施。
  • 高可用性和可扩展性:它是一项完全托管的服务,具有集成的高可用性和自动可扩展性来处理流量峰值。
  • Azure 生态系统集成:与 Azure Monitor、Azure Sentinel 和 Azure 防火墙管理器无缝集成,以进行集中监控、分析和管理。

先决条件

要配置 Azure 防火墙以实现高级网络保护,您将需要以下项目:

  1. 活动 Azure 订阅:用于创建和管理资源的 Azure 订阅。
  2. 管理访问权限:在 Azure 订阅中或在将部署防火墙和 VNet 的资源组中具有“所有者”或“贡献者”角色的帐户。
  3. Azure 虚拟网络 (VNet):至少一个用于部署 Azure 防火墙的 VNet,最好是用于演示的中心辐射型架构。
  4. 可选:虚拟机 (VM):部署在分支 VNet 中用于测试防火墙规则的 VM。
  5. Azure CLI 或 Azure PowerShell:安装并配置命令行工具以与 Azure 交互。

分步:配置 Azure 防火墙以实现高级保护

让我们部署 Azure 防火墙并配置其主要功能。

1. 准备轴辐式架构

中心辐射型体系结构是 Azure 中的常见网络拓扑,其中中心 VNet 包含共享服务(例如 Azure 防火墙),辐射 VNet 包含工作负载。辐条之间和互联网之间的流量通过集线器路由。

  1. 创建资源组:为所有资源创建资源组。 bash az group create --name RG-Firewall-Artigos --location eastus
  2. 创建虚拟网络et Hub:为中心创建一个 VNet,其中包含 Azure 防火墙的专用子网 (AzureFirewallSubnet)。 bash az network vnet create --name VNet-Hub --resource-group RG-Firewall-Artigos --address-prefix 10.0.0.0/16 --location eastus az 网络 vnet 子网创建 --name AzureFirewallSubnet --vnet-name VNet-Hub --resource-group RG-Firewall-Articles --address-prefix 10.0.1.0/24
  3. 创建 VNet 分支:为分支创建 VNet,并为虚拟机创建子网。 bash az network vnet create --name VNet-Spoke --resource-group RG-Firewall-Artigos --address-prefix 10.1.0.0/16 --location eastus az 网络 vnet 子网创建 --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --address-prefix 10.1.1.0/24
  4. 配置 VNet 对等互连:通过对等互连连接中心 VNet 和分支 VNet。 bash az 网络 vnet 对等创建 --name HubToSpoke --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --remote-vnet VNet-Spoke --allow-vnet-access az 网络 vnet 对等创建 --name SpokeToHub --resource-group RG-Firewall-Articles --vnet-name VNet-Spoke --remote-vnet VNet-Hub --allow-vnet-access

2. 部署 Azure 防火墙

  1. 创建 Azure 防火墙:在中心 VNet 的“AzureFirewallSubnet”上部署 Azure 防火墙。 bash az 网络防火墙 create --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --location eastus --sku 标准 az 网络防火墙 ip-config create --firewall-name AzureFirewall-01 --name AzureFirewall-IP --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --public-ip-address az-firewall-pip

    • 注意:如果您提供名称(例如“az-firewall-pip”),“az networkfirewall ip-config create”命令将自动为防火墙创建公共 IP。
  2. 获取防火墙专用 IP:记下 Azure 防火墙专用 IP,因为它将用于路由。 bash az 网络防火墙 show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv

3. 配置 Azure 防火墙的路由

为了使分支 VNet 流量通过 Azure 防火墙,我们需要创建一个路由表并将其与分支子网关联。

  1. 创建路由表:创建路由表。 bash az 网络路由表创建 --name FirewallRouteTable --resource-group RG-Firewall-Artigos --location eastus
  2. 添加默认路由:添加默认路由 (0.0.0.0/0),将所有流量定向到 Azure 防火墙专用 IP。 bash # 将<FIREWALL_PRIVATE_IP>替换为上一步获取的私有IP FIREWALL_PRIVATE_IP=$(az 网络防火墙显示 --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv) az 网络路由表路由创建 --name DefaultRouteToFirewall --resource-group RG-Firewall-Artigos --route-table-name FirewallRouteTable --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FIREWALL_PRIVATE_IP
  3. 将路由表关联到分支子网:将路由表关联到“VNet-Spoke”的“WorkloadSubnet”。 bash az 网络 vnet 子网更新 --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --route-table FirewallRouteTable

4.配置Azure防火墙规则

Azure 防火墙使用规则集合来控制流量。规则分为三种类型:“网络规则”、“应用程序规则”和“NAT 规则”。

4.1。网络规则

控制第 3 层和第 4 层流量(IP、端口、协议)。

  1. 允许 DNS 出站流量:对于名称解析至关重要。 bash az 网络防火墙网络规则创建 --firewall-name AzureFirewall-01 --collection-name "Allow-DNS" --name "Allow-DNS-Outbound" --resource-group RG-Firewall-Articles --priority 100 --action Allow --source-addresses "*" --destination-addresses "*" --protocols UDP --destination-ports 53

  2. 允许传出流量到特定 IP:示例:允许访问补丁服务器。 bash az 网络防火墙网络规则创建 --firewall-name AzureFirewall-01 --collection-name“Allow-Patch-Server”--name“Allow-Patch-Server-Outbound”--resource-group RG-Firewall-Articles --priority 110 --action允许 --source-addresses "10.1.1.0/24" --destination-addresses "20.1.2.3" --protocols TCP --destination-ports 443

4.2。报名规则

基于 FQDN 控制第 7 层流量 (HTTP/HTTPS)。

  1. 允许访问 Microsoft 站点:示例:允许访问 learn.microsoft.combash az 网络防火墙应用程序规则创建 --firewall-name AzureFirewall-01 --collection-name "Allow-Microsoft-Sites" --name "Allow-Learn-Microsoft" --resource-group RG-Firewall-Articles --priority 100 --action Allow --source-addresses "10.1.1.0/24" --protocols Http=80 Https=443 --fqdn-tags “Microsoft.Websites”--target-fqdns“learn.microsoft.com”

    • 提示:“Fqdn-tags”是 Microsoft 为公共服务预定义的 FQDN 组。
  2. 阻止对恶意网站的访问:默认情况下,Azure 防火墙会阻止所有未明确允许的内容。但是,您可以为特定 FQDN 创建显式拒绝规则。 bash az 网络防火墙应用程序规则创建 --firewall-name AzureFirewall-01 --collection-name "Block-Malicious-Sites" --name "Block-Bad-Site" --resource-group RG-Firewall-Articles --priority 200 --action Deny --source-addresses "10.1.1.0/24" --protocols Https=443 --target-fqdns "badsite.com"

4.3。 NAT(网络地址转换)规则

允许您将传入流量定向到内部资源(DNAT - 目标 NAT)。

  1. 允许对虚拟机进行外部 RDP 访问(谨慎!):示例:允许从特定公共 IP 对虚拟机进行 RDP 访问。 ````bash # 在WorkloadSubnet上创建一个虚拟机进行测试 az vm create --name TestVM --resource-group RG-Firewall-Articles --image UbuntuLTS --size Standard_B1s --vnet-name VNet-Spoke --subnet WorkloadSubnet --admin-用户名 azureuser --admin-password "P@ssw0rd12345!" --无需等待

    获取虚拟机的私有IP

    VM_PRIVATE_IP=$(az vm show --name TestVM --resource-group RG-Firewall-Artigos --query privateIps -o tsv)

    获取防火墙公网IP

    FIREWALL_PUBLIC_IP=$(az 网络 public-ip show --name az-firewall-pip --resource-group RG-Firewall-Artigos --query ipAddress -o tsv)

    创建 DNAT 规则

    az 网络防火墙 nat-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-RDP-Inbound" --name "RDP-to-TestVM" --resource-group RG-Firewall-Articles --priority 100 --action Dnat --source-addresses "YOUR_PUBLIC_IP" --destination-addresses $FIREWALL_PUBLIC_IP --protocols TCP --目标端口 3389 --翻译地址 $VM_PRIVATE_IP --翻译端口 3389 ``` * **警告**:将YOUR_PUBLIC_IP` 替换为您的真实公共 IP 地址以限制访问。 请勿在 DNAT 规则的生产中使用“*”。

5.配置 Azure 高级防火墙(IDPS 和 TLS 检查)

对于 IDPS 和 TLS 检查等高级保护功能,您需要 Azure 防火墙高级版。

  1. 升级防火墙 SKU(如有必要):如果您已创建标准防火墙,则可以将其升级到高级防火墙。 bash az 网络防火墙更新 --名称 AzureFirewall-01 --resource-group RG-Firewall-Artigos --sku Premium

  2. 配置 TLS 检查:对于 TLS 检查,您需要由公司或公共 CA 颁发的 SSL/TLS 证书,并存储在 Azure Key Vault 中。

    • 先决条件:已通过 Azure Key Vault 认证(有关详细信息,请参阅上一篇有关 Azure Key Vault 的文章)。
    • 创建防火墙策略并将其与防火墙关联。 bash az 网络防火墙策略创建 --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --location eastus az 网络防火墙策略更新 --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --threat-intel-mode 警报 az 网络防火墙更新 --名称 AzureFirewall-01 --resource-group RG-Firewall-Artigos --firewall-policy FirewallPolicy-01
    • 在 Azure 门户中,导航到“防火墙策略” -> 设置 -> TLS 检查
    • 启用 TLS 检查并选择 Key Vault 的根证书。
  3. 配置 IDPS:IDPS 通过防火墙策略启用和配置。

    • 在 Azure 门户中,导航到“防火墙策略” -> 设置 -> IDPS
    • 您可以配置 IDPS 模式(警报或警报和拒绝)并创建自定义 IDPS 签名规则。

6. 激活智力威胁数

Azure 防火墙威胁情报可以配置为“警报”或“警报并拒绝”往返于已知恶意 IP 地址和 FQDN 的流量。

  1. 在 Azure 门户中,导航到 Azure 防火墙 (AzureFirewall-01)。
  2. 在左侧导航窗格中,选择“威胁情报”。
  3. 将“模式”设置为“警报和拒绝”。

验证和测试

验证 Azure 防火墙配置对于确保正确应用安全策略至关重要。

1. 测试网络规则

  1. DNS 连接测试:从“WorkloadSubnet”上的虚拟机尝试解析域名。如果配置了 DNS 规则,这应该可以工作。 bash nslookup google.com

    • 预期结果:DNS解析成功。
  2. 端口阻塞测试:尝试访问外部IP不允许的端口。 bash 数控-vz 8.8.8.8 80

    • 预期结果:连接被拒绝或超时。

2. 测试应用规则

  1. 允许 FQDN 访问测试:从“WorkloadSubnet”上的虚拟机,尝试通过浏览器访问“learn.microsoft.com”。

    • 预期结果:访问成功。
  2. FQDN 阻止测试:尝试访问 badsite.com(如果您为其配置了拒绝规则)。

    • 预期结果:访问被防火墙阻止,浏览器中出现错误消息。

3. 测试 NAT 规则 (DNAT)

  1. 从 Azure 外部的计算机(使用您在 DNAT 规则中指定的公共 IP),尝试通过 RDP/SSH 连接到端口 3389/22 上的 Azure 防火墙公共 IP。
    • 预期结果:成功连接到内部虚拟机。

4.检查Azure防火墙日志

Azure 防火墙日志对于监视流量和验证规则至关重要。

  1. 在 Azure 门户中,导航到 Azure 防火墙 (AzureFirewall-01)。
  2. 在左侧导航窗格中,选择日志
  3. 您可以使用Log Analytics查询防火墙日志。查找“AzureFirewallNetworkRule”和“AzureFirewallApplicationRule”事件以查看触发了哪些规则以及是否允许或拒绝流量。

5. 测试威胁情报和 IDPS(高级)

  1. 威胁情报:尝试访问已知为恶意的 IP 或 FQDN(使用安全的恶意软件测试站点,例如“test.malware.testing.com”或威胁情报测试 IP)。防火墙必须阻止访问。
  2. IDPS:尝试模拟 IDPS 检测到的攻击(例如,使用漏洞测试工具尝试对分支 VM 上的 Web 应用程序进行 SQL 注入(如果适用)。防火墙必须生成警报和/或阻止流量。

安全提示和最佳实践

  • 中心辐射型模型:只要有可能,请使用中心辐射型模型并在中心使用 Azure 防火墙来集中网络控制并简化策略管理。
  • 最小权限原则:创建具有尽可能最小权限的防火墙规则,仅允许必要的流量。默认情况下阻止所有流量并明确允许任何必要的流量。
  • 规则优先级:了解每个集合中的规则处理顺序(NAT > 网络 > 应用程序)和优先级,以避免冲突并确保应用所需的规则。
  • 启用威胁情报:在“警报和拒绝”模式下保持威胁情报启用,以自动防御已知恶意源。
  • Azure 防火墙高级版:对于需要高级保护的环境,请使用高级 SKU 来利用 IDPS 和 TLS 检查等功能。
  • TLS 检查:对出站流量实施 TLS 检查,以检测隐藏在加密会话中的威胁,但要仔细规划证书管理。
  • 监控和审核:将 Azure 防火墙日志与 Azure Monitor 和 Azure Sentinel 集成,以进行持续监控、安全分析和事件响应。
  • Azure 防火墙管理器:对于具有多个防火墙和复杂策略的环境,请使用 Azure 防火墙管理器进行集中式分层策略管理。
  • 文档:保留防火墙规则的清晰文档以及每条规则的基本原理。

常见故障排除

  • 交通街区来自意外:检查 Log Analytics 中的 Azure 防火墙日志。它们将指示哪个规则(无论是网络、应用程序还是威胁情报)阻止了流量。根据需要调整规则。
  • 连接速度慢:如果流量缓慢,请检查 Azure Monitor 中的防火墙 CPU 使用情况。防火墙可能已达到其性能极限。考虑扩展 SKU 或优化规则。
  • NAT 规则不起作用:检查公共 IP 和目标以及转换的端口是否正确。确保 NAT 规则中的源 IP 正确(如果受到限制)。检查目标虚拟机中是否有可能阻止流量的 NSG。
  • TLS 检查问题:确保在 Key Vault 和防火墙策略中正确配置根证书。验证客户端是否信任用于 TLS 检查的根 CA。
  • IDPS 不检测攻击:检查 IDPS 是否处于“警报和拒绝”模式,并且相关签名已启用。确保流量确实通过防火墙。
  • 不正确的路由:检查与您的虚拟机子网关联的路由表。确保默认路由 (0.0.0.0/0) 指向 Azure 防火墙专用 IP。

结论

Azure 防火墙是在 Azure 中建立强大的网络安全状态的强大而重要的工具。通过实施高级流量过滤、威胁情报、IDPS 和 TLS 检查,组织可以保护其工作负载免受各种网络威胁。采用以 Azure 防火墙为中心的中心辐射模型,并应用最佳实践和持续监控,可确保有效检查和控制网络流量。通过本实用指南,安全专业人员将能够配置和管理 Azure 防火墙,从而增强 Azure 环境的网络安全性和抵御最新威胁的能力。


参考资料:

[1] 微软学习。 什么是 Azure 防火墙?。网址:https://learn.microsoft.com/pt-br/azure/firewall/overview [2] 微软学习。 Azure 防火墙架构概述。位于:https://learn.microsoft.com/pt-br/azure/firewall/firewall-architecture [3] 微软学习。 Azure 防火墙高级功能。网址:https://learn.microsoft.com/pt-br/azure/firewall/premium-features [4] 微软学习。 基于 Azure 防火墙威胁情报进行过滤。网址:https://learn.microsoft.com/pt-br/azure/firewall/threat-intel