你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 防火墙 FTP 支持

为了支持 FTP,防火墙必须考虑以下几个主要方面:

  • FTP 模式 - 主动或被动
  • 客户端/服务器位置 - Internet 或 Intranet
  • 流方向 - 入站或出站。

Azure 防火墙支持主动和被动 FTP 场景。 有关 FTP 模式的详细信息,请参阅主动 FTP 与被动 FTP 的相关说明

默认情况下,将启用被动 FTP 并禁用主动 FTP 支持,以使用 FTP PORT 命令防范 FTP 反弹攻击。

但是,可以在使用 Azure PowerShell、Azure CLI 或 Azure ARM 模板进行部署时启用主动 FTP。 Azure 防火墙可以同时支持主动和被动 FTP。

ActiveFTP 是一项 Azure 防火墙属性,可为以下项启用:

  • 所有 Azure 防火墙 SKU
  • 安全中心和 VNet 防火墙
  • 使用策略和经典规则的防火墙

支持的方案

下表显示支持各种 FTP 场景所需的配置:

提示

请注意,可能还需要在客户端配置防火墙规则来支持连接。

备注

默认情况下,被动 FTP 处于启用状态,主动 FTP 需要在 Azure 防火墙上进行其他配置。 有关说明,请参阅下一节。

出于安全原因,大多数 FTP 服务器不接受来自不同源 IP 地址的数据和控制通道。 因此,需要通过 Azure 防火墙的 FTP 会话才能连接到单个客户端 IP。 这意味着,E-W FTP 流量绝不应使用 Azure 防火墙专用 IP 进行 SNAT 处理,而应将客户端 IP 用于 FTP 流。 同样,对于 Internet FTP 流量,建议为 Azure 防火墙预配单个公共 IP 进行 FTP 连接。 建议使用 NAT 网关以避免 SNAT 耗尽。

防火墙场景 主动 FTP 模式 被动 FTP 模式
VNet-VNet 要配置的网络规则:
- 允许从源 VNet 到目标 IP 端口 21
- 允许从目标 IP 端口 20 到源 VNet
要配置的网络规则:
- 允许从源 VNet 到目标 IP 端口 21
- 允许从源 VNet 到目标 IP <数据端口的范围>
出站 VNet - Internet

(VNet 中的 FTP 客户端,Internet 上的服务器)
不支持* 要配置的网络规则:
- 允许从源 VNet 到目标 IP 端口 21
- 允许从源 VNet 到目标 IP <数据端口的范围>
入站 DNAT

(Internet 上的 FTP 客户端、VNet 中的服务器)
要配置的 DNAT 规则:
- DNAT 从 Internet 源到 VNet IP 端口 21

要配置的网络规则:
- 允许 FTP 服务器 IP 活动 FTP 端口范围上的 Internet 客户端 IP 的流量。
不支持**

* 当 FTP 客户端必须访问 Internet 上的 FTP 服务器时,主动 FTP 会不起作用。 主动 FTP 使用 FTP 客户端的 PORT 命令,该命令指示 FTP 服务器要用于数据通道的 IP 地址和端口。 PORT 命令使用不可更改的客户端专用 IP 地址。 遍历 Azure 防火墙的客户端流量将被 NAT 转换以用于基于 Internet 的通信,因此 FTP 服务器会将 PORT 命令视为无效。 与客户端 NAT 一起使用时,这是主动 FTP 的一般限制。

** 目前不支持通过 Internet 的被动 FTP,因为(通过 Azure 防火墙来自 Internet 客户端的)数据路径流量可能会使用不同的 IP 地址(由于负载均衡器)。 出于安全原因,不建议更改 FTP 服务器设置以接受来自不同源 IP 地址的控制和数据平面流量。

使用 Azure PowerShell 进行部署

若要使用 Azure PowerShell 进行部署,请使用 AllowActiveFTP 参数。 有关详细信息,请参阅创建包含允许主动 FTP 的防火墙

使用 Azure PowerShell 更新现有 Azure 防火墙

要使用 Azure PowerShell 更新现有 Azure 防火墙,请将 AllowActiveFTP 参数切换为“True”。

$rgName = "resourceGroupName"
$afwName = "afwName"
$afw = Get-AzFirewall -Name $afwName -ResourceGroupName $rgName
$afw.AllowActiveFTP = $true
$afw | Set-AzFirewall

使用 Azure CLI 进行部署

若要使用 Azure CLI 进行部署,请使用 --allow-active-ftp 参数。 有关详细信息,请参阅 az network firewall create

部署 Azure 资源管理器 (ARM) 模板

若要使用 ARM 模板进行部署,请使用 AdditionalProperties 字段:

"additionalProperties": {
            "Network.FTP.AllowActiveFTP": "True"
        },

有关详细信息,请参阅 Microsoft.Network azureFirewalls

后续步骤