在此页面上
FTP ALG
文件传输协议是一种广泛且常用的方法,用于通过 IP 网络交换文件。FTP ALG 监控端口、PAV 和 227 个命令。它NAT对 IP、端口或设备上消息和门开口执行安全保护。
FTP ALG 概述
文件传输协议 (FTP) 是一种通过 IP 网络交换文件的广泛常用方法。除了主控制连接之外,客户端与服务器之间的任何数据传输也进行数据连接;主机、端口和方向则通过控制通道进行协商。
对于活动模式 FTP,Junos OS状态防火墙服务会扫描 PORT 命令的客户端到服务器应用程序数据,PORT 命令将提供服务器连接的 IP 地址和端口号。对于被动模式 FTP,Junos OS 状态防火墙服务会扫描用于PASV 命令的客户端到服务器应用程序数据,然后扫描服务器到客户端的227响应响应,其中包含客户端连接的 IP 地址和端口号。
FTP 表示 ASCII 中的地址和端口号。因此,在重写地址和端口时,TCP 序列号可能会更改,之后 NAT 服务需要在所有后续数据包上执行顺序 NAT 来维持 SEQ 和 ACK 编号中的此 delta。
FTP ALG 支持以下功能:
自动为动态数据连接分配数据端口和防火墙权限
监控主动模式和被动模式下的控制连接
使用相应的地址和端口信息重写NAT数据包
网络地址转换、协议转换 (NAT-PT)
传输层安全 (TLS) 作为安全机制
用于路由的 IPv6 FTP ALG
FTP 中的 PORT/PAV 请求和相应的 200/227 响应用于声明 TCP 端口,由主机侦听 FTP 数据连接。
EPRT/EPSV/229 命令用于这些请求和响应。FTP ALG 已支持 EPRT/EPSV/229,但仅支持 IPv4 地址。
在 Junos OS 10.4 版中,EPRT/EPSV/229 命令已更新,以支持 IPv4 和 IPv6 地址。
FTP ALG 使用预先定位的 cookie 存储其会话 Cookie。如果 FTP ALG 同时支持 IPv4 和 IPv6 地址,会话 Cookie 结构将放大 256 位(32 字节),以存储 IPv6 地址。
FTP ALG 对 IPv6 的支持
FTP ALG 监控 FTP 控制通道上的命令和响应,以取得语法正确性,并打开相应的针孔以允许建立数据通道连接。在 Junos OS 10.4 版中,FTP ALG 仅支持 IPv4 路由、IPv6 路由和NAT模式。在 Junos OS 11.2 和更高版本中,FTP ALG 还支持 IPv6 NAT和NAT-PT 模式。
了解 FTP 命令
FTP ALG 监控 FTP 控制通道上的命令和响应,以取得语法正确性,并打开相应的针孔以允许建立数据通道连接。在 Junos OS 10.4 版中,FTP ALG 支持 IPv4 路由和NAT模式,并且仅支持 IPv6 路由模式。在 Junos OS 11.2 及更高版本中,FTP ALG 还支持 IPv6 NAT 和 NAT-PT 模式。
PORT 命令
PORT 命令在活动 FTP 模式中使用。PORT 命令指定服务器应连接到的地址和端口号。使用此命令时,参数是 32 位互联网主机地址和 16 位 TCP 端口地址的串联。地址信息分为 8 位字段,每个字段的值以十进制数字形式传输(以字符串表示形式)。字段用逗号分隔。
以下示例 PORT 命令,其中 h1 是互联网主机地址的最高顺序 8 位:
端口 h1、h2、h3、h4、p1、p2
PAV 命令
通过PASV 命令,服务器需要侦听并非服务器默认数据端口的数据端口,并等待连接,而不是启动另一个连接。对PASV 命令的响应包括服务器正在侦听的主机和端口地址。
扩展 FTP 命令
扩展的 FTP 命令提供了一种方法,通过此方法,FTP 可以通信 IPv4 外网络协议的数据连接端点信息。扩展 FTP 命令在 RFC 2428 中指定。在 RFC 2428 中,扩展的 FTP 命令 EPRT 和 EPSV 分别更换 FTP 命令 PORT 和PASV。
EPRT 命令
EPRT 命令允许指定数据连接的扩展地址。扩展地址必须由网络协议以及网络和传输地址组成。
EPRT 的格式是:
EPRT<space><><net-prt><d><net-addr><d><tcp-port><d>
参数 |
描述 |
---|---|
net-prt |
由 IANA 定义的地址IANA。 |
net-addr |
网络地址的特定协议字符串。 |
tcp 端口 |
主机正在侦听数据连接的 TCP 端口号。 |
分隔符 |
分隔符字符必须为 33 到 126(含)范围的 ASCII 字符之一。字符"|"(ASCII 124)。 |
以下命令显示如何指定服务器如何使用 IPv4 地址打开到 TCP 端口 6275 上的主机 132.235.1.2 的数据连接:
EPRT |1|132.235.1.2|6275|
以下命令显示如何指定服务器如何使用 IPv6 网络协议和网络地址在端口 5282 上打开 TCP 数据连接:
EPRT |2|1080::8:800:200C:417A|5282|
在此模式下,FTP ALG 仅关注 EPRT 命令;它从 EPRT 命令中提取 IPv6 地址和端口,并打开针孔。
EPSV 模式
EPSV 命令要求服务器在数据端口上侦听并等待连接。对此命令的响应仅包含侦听连接的 TCP 端口号。
示例响应字符串如下所示:
Entering Extended Passive Mode (|||6446|)
使用扩展地址进入被动模式的响应代码必须为 229。您应提取 229 个有效负载中的 TCP 端口,然后用于打开针孔。
示例:配置 FTP ALG
此示例展示如何为 FTP ALG NAT-PT。
要求
开始之前:
为源设备池中的所有 IP 地址配置代理 ARP NAT。
了解 ALG for FTP 背后的概念。请参阅 FTP ALG 概述。
概述
此示例将 FTP 的 ALG 配置为监控 FTP 流量并允许在客户端与位于设备两侧的服务器瞻博网络交换。
此示例展示如何为 FTP ALG NAT-PT。
配置
配置源NAT池NAT池和规则集
CLI快速配置
要快速配置示例的此部分,请复制以下命令,将其粘贴到文本文件中,删除所有换行符,更改详细信息,以匹配网络配置,将命令复制并粘贴到 层次结构级别的 CLI 中,然后从配置模式进入 。 [edit]
commit
set security nat static rule-set rs1 from zone untrust set security nat source rule-set rs-source to zone trust set security nat source rule-set rs-source rule src-nat match source-address 3333::130/128 set security nat source rule-set rs-source rule src-nat match destination-address 40.0.0.211/32 set security nat source rule-set rs-source rule src-nat then source-nat interface set security nat static rule-set rs2 from zone untrust set security nat static rule-set rs2 rule r2 match destination-address 4444::141/128 set security nat static rule-set rs2 rule r2 then static-nat prefix 40.0.0.211/32
逐步过程
以下示例要求您在配置层次结构中导航各个级别。有关如何操作的说明,请参阅 CLI用户指南 中的 在配置模式下CLI编辑器 。
要配置源NAT池:
创建源NAT、静态NAT接口和NAT规则集。
[edit ] user@host# set security nat source rule-set rs-source from zone untrust user@host# set security nat source rule-set rs-source to zone trust user@host# set security nat source rule-set rs-source rule src-nat match source-address 3333::130/128 user@host# set security nat source rule-set rs-source rule src-nat match destination-address 40.0.0.211/32 user@host# set security nat source rule-set rs-source rule src-nat then source-nat interface user@host# set security nat static rule-set rs2 from zone untrust user@host# set security nat static rule-set rs2 rule r2 match destination-address 4444::141/128 user@host# set security nat static rule-set rs2 rule r2 then static-nat prefix 40.0.0.211/32
使用NAT将 PT-PT 应用关联。
[edit] user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match source-address any user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match destination-address any user@host# set security policies from-zone trust to-zone untrust policy ftp-basic match application junos-ftp user@host# set security policies from-zone trust to-zone untrust policy ftp-basic then permit
结果
在配置模式下,输入 命令以确认 show security nat
您的配置。如果输出未显示预期的配置,请重复此示例中的配置说明进行更正。
user@host# show security nat static { rule-set rs2 { from zone untrust; rule r2 { match { destination-address 4444::141/128; } then { static-nat { prefix { 40.0.0.211/32 } } } } } }
[edit] user@host# show security policies from-zone untrust to-zone trust { policy ftp-basic { match { source-address any; destination-address any; application [ junos-ping junos-mgcp junos-ftp junos-rsh junos-h323 ]; } then { permit; } } } default-policy { permit-all; }
如果完成设备配置,请从配置 commit
模式输入 。
验证
要确认配置工作正常,请执行以下任务:
验证源NAT池,NAT池规则集
目的
验证用于NAT FTP ALG 的源池和规则集是否正常运行。
行动
在操作模式下,输入 show configuration security nat
命令。