Azure 防火墙是托管的基于云的网络安全服务,可保护 Azure 虚拟网络资源。 它是一个服务形式的完全有状态防火墙,具有内置的高可用性和不受限制的云可伸缩性。 可以跨订阅和虚拟网络集中创建、实施和记录应用程序与网络连接策略。
有关 Azure 防火墙功能的详细列表,请参阅 Azure 防火墙功能。
可以在任何虚拟网络上部署 Azure 防火墙。 但是,它通常部署在中心辐射型模型中的中央虚拟网络上,其他虚拟网络与中心辐射型虚拟网络对等互连。 从对等互连虚拟网络的默认路由设置为指向此中央防火墙虚拟网络。 虽然支持全局虚拟网络对等互连,但由于跨区域的潜在性能和延迟问题,因此不建议这样做。 为了获得最佳性能,请为每个区域部署一个防火墙。
此模型允许跨不同订阅集中控制多个辐射 VNet,并通过避免在每个虚拟网络中部署防火墙来节省成本。 应根据流量模式根据关联的对等互连成本评估成本节省成本。
可以使用 Azure 门户、PowerShell、REST API 或模板部署 Azure 防火墙。 有关分步说明,请参阅 教程:使用 Azure 门户部署和配置 Azure 防火墙。
Azure 防火墙使用规则和规则集合。 规则集合是一组具有相同顺序和优先级的规则。 规则集合按优先级顺序执行。 DNAT 规则集合的优先级高于网络规则集合,而网络规则集合的优先级又高于应用程序规则集合。 所有规则都在终止。
有三种类型的规则集合:
- 应用程序规则:配置可从虚拟网络访问的完全限定域名(FQDN)。
- 网络规则:使用源地址、协议、目标端口和目标地址配置规则。
- NAT 规则:配置 DNAT 规则以允许传入的 Internet 或 Intranet(预览版)连接。
有关详细信息,请参阅配置 Azure 防火墙规则。
Azure 防火墙与 Azure Monitor 集成,用于查看和分析日志。 日志可以发送到 Log Analytics、Azure 存储或事件中心,并使用 Log Analytics、Excel 或 Power BI 等工具进行分析。 有关详细信息,请参阅教程:监视 Azure 防火墙日志。
Azure 防火墙是一种托管的基于云的网络安全服务,用于保护虚拟网络资源。 它是一个服务形式的完全有状态防火墙,具有内置的高可用性和不受限制的云可伸缩性。 它预先与第三方安全即服务(SECaaS)提供商集成,以增强虚拟网络和分支 Internet 连接的安全性。 有关详细信息,请参阅 Azure 网络安全。
应用程序网关 WAF 为 Web 应用程序提供集中式入站保护,以防止常见的攻击和漏洞。 Azure 防火墙防火墙为非 HTTP/S 协议(例如,RDP、SSH、FTP)提供入站保护、为所有端口和协议提供出站网络级别的保护,并为出站 HTTP/S 提供应用程序级别的保护。
Azure 防火墙补充了 NSG,以提供更好的“深度防御”网络安全。 NSG 提供分布式网络层流量筛选,以限制每个订阅中的虚拟网络中的流量。 Azure 防火墙跨订阅和虚拟网络提供集中式、完全有状态的网络和应用程序级保护。
Azure 防火墙是具有多个保护层的托管服务,包括具有 NIC 级 NSG 的平台保护(不可查看)。 AzureFirewallSubnet 上不需要子网级 NSG,并且已禁用以防止服务中断。
专用终结点是专用链接的一个组件,该技术允许使用专用 IP 地址而不是公共 IP 地址与 Azure PaaS 服务进行交互。 Azure 防火墙可用于防止访问公共 IP 地址,因此避免数据外泄到 Azure 服务不利用专用链接,并通过定义组织中的谁需要访问这些 Azure PaaS 服务来实现零信任策略,因为默认情况下,专用链接会为整个企业网络打开网络访问。
使用 Azure 防火墙检查发往专用终结点的流量的正确设计将取决于网络体系结构,可以在 Azure 防火墙方案中找到更多详细信息,以检查发往专用终结点的流量。
虚拟网络服务终结点是专用链接的替代方法,用于控制对 Azure PaaS 服务的网络访问。 即使客户端仍使用公共 IP 地址访问 PaaS 服务,源子网也可见,以便目标 PaaS 服务可以实施筛选器规则并基于每个子网限制访问。 可以在 “比较专用终结点”和服务终结点“中找到这两种机制之间的详细比较。
Azure 防火墙应用程序规则可用于确保未发生流氓服务的数据外泄,并实现具有超出子网级别的更高粒度的访问策略。 通常,需要在要连接到 Azure 服务的客户端子网中启用虚拟网络服务终结点。 但是,使用 Azure 防火墙检查发往服务终结点的流量时,需要改为在 Azure 防火墙子网中启用相应的服务终结点,并在实际客户端(通常是辐射虚拟网络)的子网上禁用它们。 这样,便可以使用 Azure 防火墙中的应用程序规则来控制 Azure 工作负荷将有权访问的 Azure 服务。
有关定价详细信息,请参阅 Azure 防火墙定价。
有关服务限制,请参阅 Azure 订阅和服务限制、配额和约束。
Azure 防火墙不会在部署客户数据的区域之外移动或存储数据。
否,卡塔尔目前不支持安全虚拟中心(vWAN)中的 Azure 防火墙。
是的,Azure 防火墙支持入站和出站流量筛选。 入站筛选通常用于非 HTTP 协议,例如 RDP、SSH 和 FTP。 对于入站 HTTP 和 HTTPS 流量,请考虑使用 Azure Web 应用程序防火墙(WAF) 或 Azure 防火墙高级版的 TLS 卸载和深度数据包检查功能。
是的,Azure 防火墙基本版支持强制隧道。
TCP ping 实际上不会连接到目标 FQDN。 除非规则明确允许,否则 Azure 防火墙会阻止与任何目标 IP 地址或 FQDN 的连接。
对于 TCP ping,如果没有任何规则允许流量,防火墙本身将响应客户端的 TCP ping 请求。 此响应不会到达目标 IP 地址或 FQDN,并且未记录。 如果网络规则显式允许访问目标 IP 地址或 FQDN,ping 请求将到达目标服务器,并且其响应将中继回客户端。 此事件记录在网络规则日志中。
否,Azure 防火墙本身不支持 BGP 对等互连。 但是, Autolearn SNAT 路由功能 通过 Azure 路由服务器间接使用 BGP。
可以使用 Azure PowerShell 解除分配和分配 Azure 防火墙。 该过程因配置而异。
对于没有管理 NIC 的防火墙:
# Stop the firewall
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw
# Start the firewall
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name"
$publicip1 = Get-AzPublicIpAddress -Name "Public IP1 Name" -ResourceGroupName "RG Name"
$publicip2 = Get-AzPublicIpAddress -Name "Public IP2 Name" -ResourceGroupName "RG Name"
$azfw.Allocate($vnet, @($publicip1, $publicip2))
Set-AzFirewall -AzureFirewall $azfw
对于具有管理 NIC 的防火墙:
# Stop the firewall
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw
# Start the firewall
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name"
$pip = Get-AzPublicIpAddress -ResourceGroupName "RG Name" -Name "azfwpublicip"
$mgmtPip = Get-AzPublicIpAddress -ResourceGroupName "RG Name" -Name "mgmtpip"
$azfw.Allocate($vnet, $pip, $mgmtPip)
Set-AzFirewall -AzureFirewall $azfw
对于安全虚拟中心中的防火墙:
# Stop the firewall
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name"
$azfw.Deallocate()
Set-AzFirewall -AzureFirewall $azfw
# Start the firewall
$virtualhub = Get-AzVirtualHub -ResourceGroupName "vHUB RG Name" -Name "vHUB Name"
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "Firewall RG Name"
$azfw.Allocate($virtualhub.Id)
Set-AzFirewall -AzureFirewall $azfw
注意
停止和启动防火墙时,计费会相应地停止和启动。 但是,如果配置路由表,专用 IP 地址可能会更改,这可能会影响连接。
建议在初始部署期间配置可用性区域。 但是,可以在部署后重新配置它们,前提是:
- 防火墙部署在虚拟网络中(安全虚拟中心不支持)。
- 该区域支持可用性区域。
- 所有附加的公共 IP 地址都配置了相同的区域。
重新配置可用性区域:
- 解除分配防火墙:
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name" $azfw.Deallocate() Set-AzFirewall -AzureFirewall $azfw
- 更新区域配置并分配防火墙:
$azfw = Get-AzFirewall -Name "FW Name" -ResourceGroupName "RG Name" $vnet = Get-AzVirtualNetwork -ResourceGroupName "RG Name" -Name "VNet Name" $pip = Get-AzPublicIpAddress -ResourceGroupName "RG Name" -Name "azfwpublicip" $mgmtPip = Get-AzPublicIpAddress -ResourceGroupName "RG Name" -Name "mgmtpip" $azfw.Allocate($vnet, $pip, $mgmtPip) $azfw.Zones = 1, 2, 3 Set-AzFirewall -AzureFirewall $azfw
是的:
- Azure 防火墙和虚拟网络必须位于同一资源组中。
- 公共 IP 地址可以位于不同的资源组中。
- 所有资源(Azure 防火墙、虚拟网络、公共 IP)必须位于同一订阅中。
失败的预配状态表示配置更新在一个或多个后端实例上失败。 Azure 防火墙仍可正常运行,但配置可能不一致。 重试更新,直到预配状态更改为 “成功”。
Azure 防火墙使用具有多个后端节点的主动-主动配置。 在计划内维护期间,连接排出可确保正常更新。 对于计划外故障,新节点将替换失败的节点,连接通常在 10 秒内还原。
是的,防火墙名称限制为 50 个字符。
/26 子网可确保足够的 IP 地址进行缩放,因为 Azure 防火墙预配了额外的虚拟机实例。
否,/26 子网足以满足所有缩放方案。
Azure 防火墙根据 CPU 使用率、吞吐量和连接计数自动缩放。 吞吐量容量从最初为 2.5-3 Gbps 到 30 Gbps(标准 SKU)或 100 Gbps(高级 SKU)。
是的。 有关详细信息,请参阅 Azure 订阅和服务限制、配额和约束。
否,目前不支持将 IP 组移动到其他资源组。
网络防火墙的标准行为是确保 TCP 连接保持活动状态,并在没有活动时迅速将其关闭。 Azure 防火墙 TCP 空闲超时为 4 分钟。 用户不可配置此设置,但你可以联系 Azure 支持人员来增加入站和出站连接的空闲超时(不超过 15 分钟)。 无法更改东西向流量的空闲超时。
如果处于非活动状态的时间超过超时值,则不能保证维持 TCP 或 HTTP 会话。 常见的做法是使用 TCP 保持连接状态。 这种做法可以使连接状态保持更长时间。 有关详细信息,请参阅 .NET 示例。
是,但你必须在强制隧道模式下配置防火墙。 此配置会创建一个管理接口,其中包含 Azure 防火墙用于其操作的公共 IP 地址。 此公共 IP 地址用于管理流量。 它仅供 Azure 平台使用,不能用于任何其他目的。 可以在没有公共 IP 地址的情况下配置租户数据路径网络,并且 Internet 流量可以强制通过隧道连接到另一个防火墙或完全被阻止。
是的。 有关详细信息,请参阅使用逻辑应用备份 Azure 防火墙和 Azure 防火墙策略。
若要安全访问 PaaS 服务,我们建议使用服务终结点。 可以选择在 Azure 防火墙子网中启用服务终结点,并在连接的分支虚拟网络中禁用它们。 这样可以受益于以下两个功能:服务终结点安全性和针对所有流量的集中日志记录。
能,可以在中心虚拟网络中使用 Azure 防火墙来路由和筛选多个分支虚拟网络之间的流量。 每个分支虚拟网络中的子网必须具有指向 Azure 防火墙的 UDR,作为此方案生效所需的默认网关。
是的。 但是,配置 UDR 以重定向同一虚拟网络中子网之间的流量需要更多关注。 虽然将虚拟网络地址范围用作 UDR 的目标前缀已足够,但这也通过 Azure 防火墙实例将同一子网中的所有流量路由到同一子网中的另一台计算机。 若要避免这种情况,请在 UDR 中包含具有下一跃点类型的 虚拟网络中的子网的路由。 管理这些路由可能很麻烦并且容易出错。 建议的内部网络分段方法是使用不需要 UDR 的网络安全组。
如果目标 IP 地址是符合专用网络的 IANA RFC 1918 或 IANA RFC 6598 的专用 IP 范围,Azure 防火墙不会执行 SNAT。 如果组织对专用网络使用公共 IP 地址范围,Azure 防火墙会通过 SNAT 将流量发送到 AzureFirewallSubnet 中的某个防火墙专用 IP 地址。 可以将 Azure 防火墙配置为不 SNAT 公共 IP 地址范围。 有关详细信息,请参阅 Azure 防火墙 SNAT 专用 IP 地址范围。
此外,应用程序规则处理的流量始终经过 SNAT。 如果要在日志中查看 FQDN 流量的原始源 IP 地址,可将网络规则与目标 FQDN 结合使用。
创建新的防火墙时,支持强制隧道。 不能为强制隧道配置现有的防火墙。 有关详细信息,请参阅 Azure 防火墙强制隧道。
Azure 防火墙必须具有直接的 Internet 连接。 如果 AzureFirewallSubnet 知道通过 BGP 的本地网络的默认路由,则必须将其替代为 0.0.0.0/0 UDR,将 NextHopType 值设置为 Internet 以保持 Internet 直接连接 。
如果你的配置需要通过强制隧道连接到本地网络,并且可以确定 Internet 目标的目标 IP 前缀,则可以通过 AzureFirewallSubnet 上用户定义的路由将本地网络的这些范围配置为下一跃点。 或者,可以使用 BGP 来定义这些路由。
- URL - 在最右边或最左边时,星号起作用。 如果它位于左侧,则不能是 FQDN 的一部分。
- FQDN - 星号在置于最左侧时起作用。
- 常规 - 最左侧的星号表示左侧的任何内容将逐字匹配,这意味着多个子域和/或可能不需要的域名变体将匹配 - 参见以下示例。
示例:
类型 | 规则 | 是否支持? | 正样本 |
---|---|---|---|
TargetURL | www.contoso.com |
是 | www.contoso.com www.contoso.com/ |
TargetURL | *.contoso.com |
是 | any.contoso.com/ sub1.any.contoso.com |
TargetURL | *contoso.com |
是 | example.anycontoso.com sub1.example.contoso.com contoso.com 警告:通配符的这种用法也会带来潜在的意外/风险变化,例如 th3re4lcontoso.com - 请谨慎使用。 |
TargetURL | www.contoso.com/test |
是 | www.contoso.com/test www.contoso.com/test/ www.contoso.com/test?with_query=1 |
TargetURL | www.contoso.com/test/* |
是 | www.contoso.com/test/anything 注意: www.contoso.com/test 不匹配(最后的斜杠) |
TargetURL | www.contoso.*/test/* |
否 | |
TargetURL | www.contoso.com/test?example=1 |
否 | |
TargetURL | www.contoso.* |
否 | |
TargetURL | www.*contoso.com |
否 | |
TargetURL | www.contoso.com:8080 |
否 | |
TargetURL | *.contoso.* |
否 | |
TargetFQDN | www.contoso.com |
是 | www.contoso.com |
TargetFQDN | *.contoso.com |
是 | any.contoso.com 注意:如果要专门允许 contoso.com ,则必须在规则中包含 contoso.com。 否则,默认情况下将删除连接,因为请求将不匹配任何规则。 |
TargetFQDN | *contoso.com |
是 | example.anycontoso.com contoso.com |
TargetFQDN | www.contoso.* |
否 | |
TargetFQDN | *.contoso.* |
否 |
不是。 Azure 防火墙默认阻止 Active Directory 访问。 若要允许访问,请配置 AzureActiveDirectory 服务标记。 有关详细信息,请参阅 Azure 防火墙服务标记。
能。可以使用 Azure PowerShell 执行该操作:
# Add a Threat Intelligence allowlist to an Existing Azure Firewall.
# Create the allowlist with both FQDN and IPAddresses
$fw = Get-AzFirewall -Name "Name_of_Firewall" -ResourceGroupName "Name_of_ResourceGroup"
$fw.ThreatIntelWhitelist = New-AzFirewallThreatIntelWhitelist `
-FQDN @("fqdn1", "fqdn2", …) -IpAddress @("ip1", "ip2", …)
# Or Update FQDNs and IpAddresses separately
$fw = Get-AzFirewall -Name $firewallname -ResourceGroupName $RG
$fw.ThreatIntelWhitelist.IpAddresses = @($fw.ThreatIntelWhitelist.IpAddresses + $ipaddresses)
$fw.ThreatIntelWhitelist.fqdns = @($fw.ThreatIntelWhitelist.fqdns + $fqdns)
Set-AzFirewall -AzureFirewall $fw
Azure 防火墙当前对出站 SNAT 流量使用 TCP/UDP 源端口,没有空闲等待时间。 关闭 TCP/UDP 连接后,所使用的 TCP 端口立即被视为可供即将建立的连接使用。
某些体系结构的解决方法是,可通过使用 Azure 防火墙的 NAT 网关进行部署和缩放,提供一组更广泛的 SNAT 端口来实现可变性和可用性。
特定 NAT 行为取决于防火墙的配置和所配置的 NAT 类型。 例如,防火墙具有面向入站流量的 DNAT 规则,以及面向通过防火墙的出站流量的网络规则和应用程序规则。
有关详细信息,请参阅 Azure 防火墙 NAT 行为。
对于任何计划内维护,连接清空逻辑会正常更新后端节点。 Azure 防火墙会等待 90 秒,以便关闭现有连接。 在前 45 秒内,后端节点不接受新连接,在剩余时间内,它通过 RST
响应所有传入数据包。 如果需要,客户端可以自动重建到另一个后端节点的连接。
在虚拟机规模集横向缩减(纵向缩减)过程中,或者在舰队软件升级过程中,可能会发生 Azure 防火墙 VM 实例关闭的情况。 在这些情况下,新的传入连接会负载均衡到其余的防火墙实例,而不会转发到已关闭的防火墙实例。 在 45 秒后,防火墙会通过发送 TCP RST 数据包来开始拒绝现有的连接。 再过 45 秒后,防火墙 VM 会关闭。 有关详细信息,请参阅负载均衡器 TCP 重置和空闲超时。
当平均吞吐量或 CPU 消耗达到 60% 或连接使用率数量达到 80% 时,Azure 防火墙就会逐渐横向扩展。 例如,当它达到最大吞吐量的 60% 时,即会开始横向扩展。 最大吞吐量数量因 Azure 防火墙 SKU 和已启用的功能而异。 有关详细信息,请参阅 Azure 防火墙性能。
横向扩展需要 5 到 7 分钟。 在性能测试时,请确保至少测试 10 到 15 分钟,并启动新连接以利用新创建的 Azure 防火墙节点。
在连接出现空闲超时(4 分钟时间无活动)时,Azure 防火墙会通过发送 TCP RST 数据包来正常终止该连接。