万花筒写轮眼之防火墙ALG技术之FTP协议穿墙术

Posted 李志宽

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万花筒写轮眼之防火墙ALG技术之FTP协议穿墙术相关的知识,希望对你有一定的参考价值。

FTP协议主动模式穿越SNAT

主动模式穿越SNAT主要用于FTP服务器部署在公网,客户端需要通过SNAT转换访问服务器。如图1-1所示,描述了FTP主动模式穿越SNAT时的工作流程,此时需要借助ALG技术才可以完成穿越防火墙。

防火墙ALG技术之FTP协议穿墙术

图1-1 FTP主动模式穿越SNAT流程图

防火墙设备上配置了私网地址192.168.12.2到公网地址106.120.22.2/FTP服务的映射,实现IP地址的转换,以支持私网客户端对公网服务器的访问。组网中,若没有ALG对报文载荷的处理(图1-1中红色字体部分内容的变化),私网客户端发送的PORT报文到达公网服务器端后,服务器无法根据私网地址进行路由,也就无法正常地建立数据连接,从而导致私网客户端访问公网FTP服务器失败。如图1-2-(a)和图1-2-(b)所示,整个通信过程包括以下几个阶段:

 

  • 私网客户端与公网服务器之间TCP的三次握手建立控制连接;

  • 私网客户端发送PORT命令,携带私网客户端指定的用于数据连接的IP和PORT信息;

  • PORT命令到达防火墙时,报文载荷中的私网IP(192.168.12.2)和PORT(Y=31272=122*256+40)会被转换成为公网IP(106.120.22.2)和PORT(Y'=31272=122*256+40);

  • 公网服务器收到PORT命令后解析其内容,并主动向私网客户端发送数据连接(源IP-106.120.12.2、目的IP-106.120.22.2、源端口-20、目的端口-Y'=31272),经防火墙NAT转换后(源IP-106.120.12.2、目的IP-192.168.12.2、源端口-20、目的端口Y=31272)发送至公网服务器,从而实现私网客户端访问公网服务器。

 

防火墙ALG技术之FTP协议穿墙术

图1-2-(a) FTP主动模式穿越SNAT-Client

防火墙ALG技术之FTP协议穿墙术

图1-2-(b) FTP主动模式穿越SNAT-Server

 

FTP协议被动模式穿越SNAT

被动模式穿越SNAT主要用于FTP服务器部署在公网,客户端需要通过SNAT转换访问服务器。如图2-1所示,描述了FTP被动模式穿越SNAT时的工作流程,此时不需要借助ALG技术也可以完成穿越防火墙的(为什么呢?请思考一下)。

防火墙ALG技术之FTP协议穿墙术

图2-1 FTP被动模式穿越SNAT流程图

如图2-2-(a)和2-2-(b)所示,防火墙配置同“1.FTP协议主动模式穿越SNAT”章节所述,整个通信过程包括以下几个阶段:

 

  • 私网客户端与公网服务器之间TCP的三次握手建立控制连接;

  • 私网客户端发送PASV命令,公网服务器响应PASV命令,携带公网服务器指定的用于数据连接的IP和PORT信息,被动地等待客户端来连接;

  • PASV响应命令到达防火墙时,报文载荷中的公网IP(106.120.12.2)和PORT(Z=23076=90*256+36)不会进行NAT转换,将原样转发至私网客户端;

  • 私网客户端收到PASV响应命令后解析其内容,发送数据连接(源IP-192.168.12.2、目的IP-106.120.12.2、源端口-Y=31277、目的端口- Z=23076),经防火墙NAT转换后(源IP-106.120.22.2、目的IP-106.120.12.2、源端口-Y'=10009、目的端口Z=23076)发送至公网服务器,从而实现私网客户端访问公网服务器。

图2-2-(a) FTP被动模式穿越SNAT-Client

防火墙ALG技术之FTP协议穿墙术

图2-2-(b) FTP被动模式穿越SNAT-Server

防火墙ALG技术之FTP协议穿墙术

 

FTP协议被动模式穿越DNAT

被动模式穿越DNAT主要用于FTP服务器部署在私网,客户端需要通过DNAT转换访问服务器,如图3-1所示,描述了FTP被动模式穿越DNAT时的工作流程,此时需要借助ALG技术才可以完成穿越防火墙。

防火墙ALG技术之FTP协议穿墙术

图3-1 FTP被动模式穿越DNAT流程图

 

防火墙设备上配置了私网地址192.168.12.2/TCP私网端口21到公网地址106.120.22.2/TCP公网端口2100的映射,实现IP地址的转换,以支持公网客户端对私网服务器的访问。组网中,若没有ALG对报文载荷的处理(图3-1中红色字体部分内容的变化),私网服务器发送的PASV响应报文到达公网客户端后,客户端无法根据私网地址进行路由,也就无法建立正确的数据连接。如图3-2-(a)和图3-2-(b)所示,整个通信过程包括以下几个阶段:

 

  • 公网客户端与私网服务器之间TCP的三次握手建立控制连接;

  • 公网客户端发送PASV命令,私网服务器响应PASV命令,携带私网服务器指定的用于数据连接的IP和PORT信息,被动地等待客户端来连接;

  • PASV响应命令到达防火墙时,报文载荷中的私网IP(192.168.12.2)和PORT(C=31920=124*256+176)会被转换成为公网IP(106.120.22.2)和PORT(C'=31920=124*256+176);

  • 公网客户端收到PASV响应命令后解析其内容,发送数据连接(源IP-106.120.12.2、目的IP-106.120.22.2、源端口-D=23366、目的端口-C'=31920),经防火墙NAT转换后(源IP-106.120.12.2、目的IP-192.168.12.2、源端口-D=23366、目的端口C =31920)发送至私网服务器,从而实现公网客户端访问私网服务器。

防火墙ALG技术之FTP协议穿墙术

图3-2-(a) FTP被动模式穿越DNAT-Client

 

防火墙ALG技术之FTP协议穿墙术

图3-2-(b) FTP被动模式穿越DNAT-Server

 

FTP协议主动模式穿越DNAT

 

主动模式穿越DNAT主要用于FTP服务器部署在私网,客户端需要通过DNAT转换访问服务器,如图4-1所示,描述了FTP主动模式穿越DNAT时的工作流程,此时不需要借助ALG技术也可以完成穿越防火墙的(为什么呢?请思考一下)。

 

防火墙ALG技术之FTP协议穿墙术

图4-1 FTP主动模式穿越DNAT流程图

 

如图4-2-(a)和4-2-(b)所示,防火墙配置同“3.FTP协议被动模式穿越DNAT”章节所述,整个通信过程包括以下几个阶段:

 

  • 公网客户端与私网服务器之间TCP的三次握手建立控制连接;

  • 公网客户端发送PORT命令,携带公网客户端指定的用于数据连接的IP和PORT信息;

  • PORT命令到达防火墙时,报文载荷中的公网IP(106.120.12.2)和PORT(C=23360=91*256+64)不会进行NAT转换,将原样转发至私网服务器;

  • 私网服务器收到PORT命令后解析其内容,并主动向公网客户端发送数据连接(源IP-192.168.12.2、目的IP-106.120.12.2、源端口-20、目的端口-C=23360),经防火墙NAT转换后(源IP-106.120.22.2、目的IP-106.120.12.2、源端口-10011、目的端口-C=23360)发送至公网客户端,从而实现公网客户端访问私网服务器。

 

防火墙ALG技术之FTP协议穿墙术

图4-2-(a) FTP主动模式穿越DNAT-Client

 

防火墙ALG技术之FTP协议穿墙术

图4-2-(b) FTP主动模式穿越DNAT-Server

 

FTP协议穿越防火墙NAT小结

ALG应用在外部地址访问内部地址的场景下。ALG如果发现报文头部进行了NAT,并且进一步发现是一条FTP连接时,就需要对PORT/PASV命令中的IP和PORT进行转换。这样理解后总结上述几种场景可以得出如下结论:

  • 私网访问公网时需要防火墙进行SNAT,主动模式外部地址(Server)访问内部地址(Client)建立数据连接,因此需要ALG;而被动模式不涉及外部地址想访问内部地址的过程,故不需要ALG。

  • 公网访问私网时需要防火墙进行DNAT,被动模式外部地址(Client)访问内部地址(Server)建立数据连接,因此需要ALG;而主动模式不涉及外部地址想访问内部地址的过程,故不需要ALG。

 

  • 01_FTP主动模式穿越SNAT-Client.pcap

  • 02_FTP主动模式穿越SNAT-Server.pcap

  • 03_FTP被动模式穿越SNAT-Client.pcap

  • 04_FTP被动模式穿越SNAT-Server.pcap

  • 05_FTP被动模式穿越DNAT-Client.pcap

  • 06_FTP被动模式穿越DNAT-Server.pcap

  • 07_FTP主动模式穿越DNAT-Client.pcap

  • 08_FTP主动模式穿越DNAT-Server.pcap

→资料获取←

以上是关于万花筒写轮眼之防火墙ALG技术之FTP协议穿墙术的主要内容,如果未能解决你的问题,请参考以下文章

纯css3制作写轮眼开眼及进化过程

windows下samba访问linux ftp 中文乱码

NGFW防火墙的ASPF实现原理

NGFW防火墙的ASPF实现原理

NGFW防火墙的ASPF实现原理

FileZilla 使用FTP传输文件到Ubuntu虚拟机提示错误,用SSH可以传,会有啥问题吗