万花筒写轮眼之防火墙ALG技术之FTP协议穿墙术
Posted 李志宽
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了万花筒写轮眼之防火墙ALG技术之FTP协议穿墙术相关的知识,希望对你有一定的参考价值。
FTP协议主动模式穿越SNAT
主动模式穿越SNAT主要用于FTP服务器部署在公网,客户端需要通过SNAT转换访问服务器。如图1-1所示,描述了FTP主动模式穿越SNAT时的工作流程,此时需要借助ALG技术才可以完成穿越防火墙。
图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)发送至公网服务器,从而实现私网客户端访问公网服务器。
图1-2-(a) FTP主动模式穿越SNAT-Client
图1-2-(b) FTP主动模式穿越SNAT-Server
FTP协议被动模式穿越SNAT
被动模式穿越SNAT主要用于FTP服务器部署在公网,客户端需要通过SNAT转换访问服务器。如图2-1所示,描述了FTP被动模式穿越SNAT时的工作流程,此时不需要借助ALG技术也可以完成穿越防火墙的(为什么呢?请思考一下)。
图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
图2-2-(b) FTP被动模式穿越SNAT-Server
FTP协议被动模式穿越DNAT
被动模式穿越DNAT主要用于FTP服务器部署在私网,客户端需要通过DNAT转换访问服务器,如图3-1所示,描述了FTP被动模式穿越DNAT时的工作流程,此时需要借助ALG技术才可以完成穿越防火墙。
图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)发送至私网服务器,从而实现公网客户端访问私网服务器。
图3-2-(a) FTP被动模式穿越DNAT-Client
图3-2-(b) FTP被动模式穿越DNAT-Server
FTP协议主动模式穿越DNAT
主动模式穿越DNAT主要用于FTP服务器部署在私网,客户端需要通过DNAT转换访问服务器,如图4-1所示,描述了FTP主动模式穿越DNAT时的工作流程,此时不需要借助ALG技术也可以完成穿越防火墙的(为什么呢?请思考一下)。
图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)发送至公网客户端,从而实现公网客户端访问私网服务器。
图4-2-(a) FTP主动模式穿越DNAT-Client
图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协议穿墙术的主要内容,如果未能解决你的问题,请参考以下文章