配置 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 防火墙以实现高级网络保护,您将需要以下项目:
- 活动 Azure 订阅:用于创建和管理资源的 Azure 订阅。
- 管理访问权限:在 Azure 订阅中或在将部署防火墙和 VNet 的资源组中具有“所有者”或“贡献者”角色的帐户。
- Azure 虚拟网络 (VNet):至少一个用于部署 Azure 防火墙的 VNet,最好是用于演示的中心辐射型架构。
- 可选:虚拟机 (VM):部署在分支 VNet 中用于测试防火墙规则的 VM。
- Azure CLI 或 Azure PowerShell:安装并配置命令行工具以与 Azure 交互。
分步:配置 Azure 防火墙以实现高级保护
让我们部署 Azure 防火墙并配置其主要功能。
1. 准备轴辐式架构
中心辐射型体系结构是 Azure 中的常见网络拓扑,其中中心 VNet 包含共享服务(例如 Azure 防火墙),辐射 VNet 包含工作负载。辐条之间和互联网之间的流量通过集线器路由。
- 创建资源组:为所有资源创建资源组。
bash az group create --name RG-Firewall-Artigos --location eastus - 创建虚拟网络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 - 创建 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 - 配置 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 防火墙
-
创建 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。
-
获取防火墙专用 IP:记下 Azure 防火墙专用 IP,因为它将用于路由。
bash az 网络防火墙 show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv
3. 配置 Azure 防火墙的路由
为了使分支 VNet 流量通过 Azure 防火墙,我们需要创建一个路由表并将其与分支子网关联。
- 创建路由表:创建路由表。
bash az 网络路由表创建 --name FirewallRouteTable --resource-group RG-Firewall-Artigos --location eastus - 添加默认路由:添加默认路由 (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 - 将路由表关联到分支子网:将路由表关联到“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、端口、协议)。
-
允许 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 -
允许传出流量到特定 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)。
-
允许访问 Microsoft 站点:示例:允许访问
learn.microsoft.com。bash 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 组。
-
阻止对恶意网站的访问:默认情况下,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)。
-
允许对虚拟机进行外部 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 防火墙高级版。
-
升级防火墙 SKU(如有必要):如果您已创建标准防火墙,则可以将其升级到高级防火墙。
bash az 网络防火墙更新 --名称 AzureFirewall-01 --resource-group RG-Firewall-Artigos --sku Premium -
配置 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 的根证书。
-
配置 IDPS:IDPS 通过防火墙策略启用和配置。
- 在 Azure 门户中,导航到“防火墙策略” -> 设置 -> IDPS。
- 您可以配置 IDPS 模式(警报或警报和拒绝)并创建自定义 IDPS 签名规则。
6. 激活智力威胁数
Azure 防火墙威胁情报可以配置为“警报”或“警报并拒绝”往返于已知恶意 IP 地址和 FQDN 的流量。
- 在 Azure 门户中,导航到 Azure 防火墙 (
AzureFirewall-01)。 - 在左侧导航窗格中,选择“威胁情报”。
- 将“模式”设置为“警报和拒绝”。
验证和测试
验证 Azure 防火墙配置对于确保正确应用安全策略至关重要。
1. 测试网络规则
-
DNS 连接测试:从“WorkloadSubnet”上的虚拟机尝试解析域名。如果配置了 DNS 规则,这应该可以工作。
bash nslookup google.com- 预期结果:DNS解析成功。
-
端口阻塞测试:尝试访问外部IP不允许的端口。
bash 数控-vz 8.8.8.8 80- 预期结果:连接被拒绝或超时。
2. 测试应用规则
-
允许 FQDN 访问测试:从“WorkloadSubnet”上的虚拟机,尝试通过浏览器访问“learn.microsoft.com”。
- 预期结果:访问成功。
-
FQDN 阻止测试:尝试访问
badsite.com(如果您为其配置了拒绝规则)。- 预期结果:访问被防火墙阻止,浏览器中出现错误消息。
3. 测试 NAT 规则 (DNAT)
- 从 Azure 外部的计算机(使用您在 DNAT 规则中指定的公共 IP),尝试通过 RDP/SSH 连接到端口 3389/22 上的 Azure 防火墙公共 IP。
- 预期结果:成功连接到内部虚拟机。
4.检查Azure防火墙日志
Azure 防火墙日志对于监视流量和验证规则至关重要。
- 在 Azure 门户中,导航到 Azure 防火墙 (
AzureFirewall-01)。 - 在左侧导航窗格中,选择日志。
- 您可以使用Log Analytics查询防火墙日志。查找“AzureFirewallNetworkRule”和“AzureFirewallApplicationRule”事件以查看触发了哪些规则以及是否允许或拒绝流量。
5. 测试威胁情报和 IDPS(高级)
- 威胁情报:尝试访问已知为恶意的 IP 或 FQDN(使用安全的恶意软件测试站点,例如“test.malware.testing.com”或威胁情报测试 IP)。防火墙必须阻止访问。
- 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