所选语种没有对应资源,请选择:

本站点使用Cookies,继续浏览表示您同意我们使用Cookies。Cookies和隐私政策>

提示

尊敬的用户,您的IE浏览器版本过低,为获取更好的浏览体验,请升级您的IE浏览器。

升级
案例库

防火墙设置了NAT ALG功能导致FTP数据连接故障

发布时间:  2020-01-21  |   浏览次数:  403  |   下载次数:  2  |   作者:  guohongyuanan  |   文档编号: EKB1100044680

目录

问题描述

1.涉及产品和版本
本案例描述的故障属于应用类故障,涉及全系列防火墙,不区分版本。

2.组网情况(Networking

本端内网部署了一台FTP服务器,对外提供访问(通过防火墙做ftp 21端口映射)。

71a31b37d8e4444fb5a689d66bb18dd5
3.故障现象

网用户通过FTP客户端被动模式能够与服务器建立连接,但无法打开数据通道。

1b6b20ab5f8c490591ce1fcd45a9e6d1

处理过程

1. 在用户内网用自己电脑Ftp Client连接Ftp Server。能够正常访问FTP资源,排除ftp服务器故障。

2. 在用户外网用自己电脑Ftp Client连接Ftp Server。故障复现,无法访问FTP资源列表,排除FTP客户端故障。

3. 怀疑跟FTP穿越NAT特性有关,查看防火墙相关配置。

    发现存在detect ftp功能配置,

c692efe293d343179d72341ff9901f57

    配置该命令后防火墙同时开启了NAT ALG功能和ASPF功能,防火墙会针对FTP数据通道进行NAT映射,并且动态打开相应安全策略。理论上来讲防火墙已经开启了针对FTP穿越NAT的支持,不应该是NAT导致不通。

4 查看防火墙ftp相关数据流会话表。

     4d58e0f8cc4c4aee8caf09c2c56ae6b4

    当客户端以被动模式访问服务端时,查看防火墙会话表发现去往服务器ip的只有管理通道的会话,没有数据通道的会话。正常情况下应该同时存在管理通道和数据通道两条会话表。被动模式下数据通道由远端用户主动发起,虽然防火墙安全策略禁止外网主动访问内网,也没有提供FTP数据端口的外网映射,但由于配置了detect ftp,防火墙ASPF功能会建立对应server-map表用来打开相关策略。

5 查看防火墙server-map表。

e465959906144e62a0a2fc06fce73007 

    虽然防火墙ASPF功能为FTP数据通道建立了server-map表,但表项不正确,内网转换ip应该是私网ip(服务器的真实ip),但是却变成了公网ip。    当外网数据流到达防火墙时,依据server-map转发时由于内网ip仍然是公网ip,导致数据流无法到达服务器,因此远端用户无法和服务器建立数据通道。

6 抓包分析。

ef825e72d1844d5a95f2def89f046055 

    抓取FTP服务器与防火墙之间的数据流,发现服务器在响应PASV指令时用的是公网ip,正常情况下应该回应真实私网ip。

7. 跟客户协商。

    跟客户沟通得知,客户在部署FTP服务器时设置了NAT穿越功能,指定了pasv回应的ip地址(公网ip)。

5736b8da599d407e94f89a52dc68acd8 

    让客户取消该设置后server-map正常,服务器回应的pasv ip为真实私网ip,FTP资源能够正常访问。

07adc9b579254187b538e712bb98cfc9 



根因

    本案例中故障主要是因为FTP需要NAT后进行通信,但是防火墙的FTP ALG功能和服务器自身的NAT穿越功能不能同时使用。 FTP启用NAT穿越功能后,会修改pasv响应报文中的ip,报文经过防火墙进行NAT ALG转换时生成了错误的转换表项。

466b341c3bdf45439ace9a5cd62a0cb3 

    尽管客户端仍然能根据pasv响应报文中的公网ip发起连接,但由于防火墙上错误的NAT转换表,导致客户端发起的连接到达防火墙后不能到达使用私网ip的真实FTP服务器。

解决方案

1.部署FTP服务器的时候不要设置nat穿越功能(指定pasv ip),由防火墙的NAT ALG功能来对报文的载荷字段进行解析,识别并转换其中包含的重要信息,保证FTP的数据通道可以顺利的进行地址转换而不影响其正常使用。

2.FTP客户端改为主动模式。主动模式下是由FTP服务器主动发起连接,不涉及到防火墙的NAT ALG,但需要打开服务器主动访问外网的策略。  

此方案不推荐,原因有:   

①打开服务器主动访问外网权限后会带来安全风险,   

②FTP Client很少直接部署在公网,一般都在内网,此时同样涉及到NAT ALG功能,如果家庭路由器不支持ALG,私网主机发送的PORT报文(载荷内包含客户主机真实私网ip)到达服务器端后,服务器无法根据私网地址进行寻址,也就无法建立正确的数据连接。   

③FTP Client目前默认都是被动模式,如果要求全部改成主动模式,动作较大,难以实施。

3.FTP服务器配置NAT穿越功能(指定pasv ip为公网ip),同时防火墙关闭FTP的NAT ALG功能(undo detect ftp)。FTP服务器部署在内网,关闭NAT ALG后防火墙不能再为FTP动态数据通道建立会话,因此防火墙上还需要手动添加内网FTP数据通道端口的映射。    

   FTP服务器被动模式下动态打开的数据端口是随机的,防火墙上添加映射时需要做1:1的全映射:nat server global 公网IP inside 192.168.10.50,但当公网ip不够或者安全要求较严(只允许内网开放特定端口)的场景下,此时需要在FTP服务器上固定某几个动态端口(需要FTP软件支持,目前主流软件都支持该功能), 

    防火墙只需针对特定端口做服务器映射:

    nat server protocol tcp global  公网IP 9999 inside 192.168.10.50 9999。

建议与总结

    FTP协议是一个典型的多通道协议,在其工作过程中,FTP Client和FTP Server之间将会建立两条连接(也称为通道):控制连接和数据连接。控制连接用来传输FTP指令和参数,数据连接用来传输数据。    

    FTP协议包括两种工作模式:主动模式和被动模式。    

    ①主动模式中,FTP Server主动向FTP Client发起数据连接;    

    ②被动模式中,FTP Server被动接收FTP Client发起的数据连接。    

    无论是主动模式还是被动模式,在控制连接交互报文的载荷中,都包含用于建立数据连接的IP地址和端口号信息。    

    如果在FTP Client和FTP Server之间部署了NAT设备,这就要求NAT设备必须能够识别出控制连接中包含的IP地址和端口号并进行处理,否则数据连接无法成功建立,FTP协议不能正常工作。    

    普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,比如多媒体协议(H.323、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能导致问题。    

    华为防火墙和路由器都能够提供NAT ALG(Application Level Gateway)功能,可以对报文的载荷字段进行解析,识别并转换其中包含的重要信息,保证类似FTP的多通道协议可以顺利的进行地址转换而不影响其正常使用。    

    除FTP协议外,华为设备还支持对DNS、H.323、ICQ、ILS、MGCP、MMS、MSN、NETBIOS、PPTP、QQ、RTSP、SIP和SQLNET协议提供NAT ALG功能。某些协议也会出现类似此案例问题。

    本案例中故障主要是因为FTP需要NAT后进行通信,但是防火墙的FTP ALG功能和服务器自身的NAT穿越功能不能同时使用。    

    FTP启用NAT穿越功能后,会修改pasv响应报文中的ip,报文经过防火墙进行NAT ALG转换时生成了错误的转换表项。尽管客户端仍然能根据pasv响应报文中的公网ip发起连接,但由于防火墙上错误的NAT转换表,导致客户端发起的连接到达防火墙后不能到达使用私网ip的真实FTP服务器。    

故障的时候一定要对相关协议有一定程度了解,要知晓其工作流程以及华为设备针对该协议的特性原理,不能盲目排查故障,对症下药