了解FTP ASPF/ALG

了解FTP ASPF/ALG
FTP主动模式的ASPF
FTP主动模式下,客户端使用随机端口xxxx向服务器的21端口发起连接请求建立控制通道,然后使用PORT命令协商两者建立数据通道的端口号,协商出来的端口是yyyy。
然后服务器主动向客户端的yyyy端口发起连接请求,建立数据通道。数据通道建立成功后再进行数据传输。
在配置安全策略时,如果只配置了允许客户端访问服务器的21端口的安全策略,即控制连接能成功建立。但是当服务器访问客户端yyyy端口的报文到达FW后,对于FW来说,这个报文不是前一条连接的后续报文,而是代表着一条新的连接。要想使这个报文顺利到达FTP客户端,FW上就必须配置了安全策略允许其通过,如果没有配置服务器到客户端这个方向上的安全策略,该报文无法通过FW,导致数据通道建立失败。结果是用户能访问服务器,但无法请求数据。
如果通过安全策略解决此问题,数据通道使用的端口是在控制通道中临时协商出来的,具有随机性,无法精确预知,所以只能开放客户端的所有端口,这样就会给客户端带来安全隐患。ASPF功能正是为了解决此问题,如图所示。
FTP主动模式下的ASPF处理过程

图片.png

由于PORT命令的应用层信息中携带了客户端的IP地址和向服务器随机开放的端口,FW通过分析PORT命令的应用层信息,提前预测到后续报文的行为方式,根据应用层信息中的IP和端口创建Server-map表。服务器向客户端发起数据连接的报文到达FW后命中该Server-map表项,不再受安全策略的控制。
查看FW上生成的Server-map表。
<sysname> display firewall server-map
Type: ASPF, 2.2.2.2 -> 1.1.1.1:yyyy, Zone: ---
   Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:15
   VPN: public -> public
yyyy端口即客户端通过控制通道向服务器开放的数据端口。服务器(2.2.2.2)主动访问客户端(1.1.1.1)的yyyy端口的数据报文由于命中该Server-map表而被放行。
查看FW上创建的会话表。
<sysname> display firewall session-table
Current Total Sessions : 2
  ftp  VPN:public --> public 1.1.1.1:xxxx+->2.2.2.2:21
  ftp-data  VPN:public --> public 2.2.2.2:20-->1.1.1.1:yyyy
多通道协议会创建多条会话,控制连接和数据连接是两个不同的连接。第一条会话代表控制连接,“+->”表示该会话进入了ASPF/ALG流程。第二条会话代表数据连接,数据通道的报文命中Server-map表后创建数据连接会话。

FTP被动模式的ASPF
FTP被动模式(客户端主动访问服务器)下,客户端使用随机端口xxxx向服务器的21端口发起连接请求建立控制通道,然后使用PASV命令协商两者建立数据通道的端口号,协商出来的端口是yyyy。然后客户端主动向服务器的yyyy端口发起连接请求,建立数据通道。数据通道建立成功后再进行数据传输。
在配置安全策略时,如果只配置了允许客户端访问服务器的21端口的安全策略,即控制连接能成功建立。但是当客户端访问服务器yyyy端口的报文到达FW后,对于FW来说,这个报文不是前一条连接的后续报文,而是代表着一条新的连接。要想使这个报文顺利到达服务器,FW上就必须配置了安全策略允许其通过,如果没有配置客户端到服务器的yyyy端口的安全策略,该报文无法通过FW,导致数据通道建立失败。结果是用户能访问FTP服务器,但无法请求数据。
如果通过安全策略解决此问题,数据通道使用的端口是在控制通道中临时协商出来的,具有随机性,无法精确预知,所以只能开放服务器的所有端口,这样就会给服务器带来安全隐患。ASPF功能正是为了解决此问题,如图所示。
FTP被动模式下的ASPF处理过程

图片.png

由于PASV Command OK命令的应用层信息中携带了服务器的IP地址和向客户端随机开放的端口,FW通过分析PASV Command OK命令的应用层信息,提前预测到后续报文的行为方式,根据应用层信息中的IP和端口创建Server-map表。客户端向服务器发起数据连接的报文到达FW后命中该Server-map表项,不再受安全策略的控制。
查看FW上生成的Server-map表。
<sysname> display firewall server-map
Type: ASPF, 1.1.1.1 -> 2.2.2.2:yyyy, Zone: ---
   Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:15
   VPN: public -> public
yyyy端口即服务器通过控制通道向客户端开放的数据端口。客户端(1.1.1.1)主动访问服务器(2.2.2.2)的yyyy端口的数据报文由于命中该Server-map表而被放行。
查看FW上创建的会话表。
<sysname> display firewall session-table
Current Total Sessions : 2
  ftp  VPN:public --> public 1.1.1.1:xxxx+->2.2.2.2:21
  ftp-data  VPN:public --> public 1.1.1.1:aaaa-->2.2.2.2:yyyy
多通道协议会创建多条会话,控制连接和数据连接是两个不同的连接。第一条会话代表控制连接,“+->”表示该会话进入了ASPF/ALG流程。第二条会话代表数据连接,数据通道的报文命中Server-map表后创建数据连接会话。

FTP主动模式的ALG
如图3所示,客户端位于私网,服务器位于公网。为了使客户端能正常访问服务器,在FW上配置源NAT策略,用于将客户端的私网地址转换为公网地址,并允许端口转换。客户端和服务器经过TCP三次握手建立控制通道后,客户端通过PORT命令向服务器发送私网IP地址和开放的私网端口用于建立数据通道。
FTP主动模式下的ALG处理过程

图片.png

未配置ALG功能前,为了保证客户端和服务器之间的控制通道和数据通道的正常建立,FW需要配置两条安全策略:
(1)允许从客户端的任意端口到服务器的21端口的访问,用于建立控制连接和发送命令。
(2)允许从服务器的20端口到客户端的任意端口的访问,用于建立数据连接。
    由于客户端开放的端口是临时协商的,管理员无法提前预知,因此只能开放客户端的所有端口,给客户端带来了安全隐患。

另外,在源NAT场景中,即使配置了安全策略,服务器向客户端的私网端口发起数据连接时,数据连接仍然会建立失败。
配置了ALG功能后,FW通过分析PORT命令的应用层信息,将命令中携带的私网IP和私网端口转换成公网地址和公网端口后再转发给服务器,并创建Server-map表。服务器向转换后的公网地址和公网端口发起数据连接,报文到达FW后命中该Server-map表项,自动将目的地址和端口转换为真实的私网地址,不再受安全策略控制。

普通NAT只能转换报文的传输层信息,ALG功能可以转换报文的应用层信息。
配置了ALG的情况下,FW上只需配置允许从客户端的任意端口到服务器的21端口的安全策略即可。

查看FW上生成的Server-map表。
<sysname> display firewall server-map
Type: ASPF, 1.1.1.1 -> 1.1.1.2:zzzz[192.168.0.1:yyyy], Zone: ---
   Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:15
   VPN: public -> public
服务器(1.1.1.1)主动访问客户端公网地址和公网端口的数据报文由于命中该Server-map表而被放行,且目的公网地址和公网端口被转换为真实的私网地址(192.168.0.1)和私网端口(yyyy)。
查看FW上创建的会话表。
<sysname> display firewall session-table
Current Total Sessions : 2
  ftp  VPN:public --> public 192.168.0.1:xxxx[1.1.1.2:2050]+->1.1.1.1:21
  ftp-data  VPN:public --> public 1.1.1.1:20-->1.1.1.2:zzzz[192.168.0.1:yyyy]
多通道协议会创建多条会话,控制连接和数据连接是两个不同的连接。第一条会话代表控制连接,源地址(客户端地址)经过源NAT,“+-”表示该会话进入了ASPF/ALG流程。第二条会话代表数据连接,数据通道的报文命中Server-map表对目的地址做NAT转换为客户端的私网地址,并创建了数据连接会话。

FTP被动模式的ALG
如图4所示,客户端位于公网,服务器位于私网。为了使客户端能正常访问服务器,在FW上配置NAT Server,用于将服务器的公网地址转换为私网地址,并允许端口转换。客户端和服务器经过TCP三次握手建立控制通道后,服务器通过PASV Command OK命令向客户端发送私网IP地址和开放的私网端口用于建立数据通道。
FTP被动模式下的ALG处理过程

图片.png

未配置ALG功能前,为了保证客户端和服务器之间的控制通道和数据通道的正常建立,FW需要配置两条安全策略:
(1)允许从客户端的任意端口到服务器的21端口的访问,用于建立控制连接和发送命令。
(2)允许从客户端的任意端口到服务器的任意端口的访问,用于建立数据连接。
由于服务器开放的端口是临时协商的,管理员无法提前预知,因此只能开放服务器的所有端口,给服务器带来了安全隐患。
另外,在NAT Server场景中,即使配置了安全策略,客户端向服务器的私网端口发起数据连接时,数据连接仍然会建立失败。
配置了ALG功能后,FW通过分析PASV Command OK命令的应用层信息,将命令中携带的私网IP和私网端口转换成公网地址和公网端口后再转发给客户端,并创建Server-map表。客户端向转换后的公网地址和公网端口发起数据连接,报文到达FW后命中该Server-map表项,自动将目的地址和端口转换为真实的私网地址,不再受安全策略控制。
配置了ALG的情况下,FW上只需配置允许从客户端的任意端口到服务器的21端口的安全策略即可。

普通NAT只能转换报文的传输层信息,ALG功能可以转换报文的应用层信息。
配置了ALG的情况下,FW上只需配置允许从客户端的任意端口到服务器的21端口的安全策略即可。


查看FW上生成的Server-map表。
<sysname> display firewall server-map
Type: ASPF, 1.1.1.1 -> 1.1.1.2:zzzz[192.168.0.1:yyyy], Zone: ---
   Protocol: tcp(Appro: ftp-data), Left-Time: 00:00:15
   VPN: public -> public
客户端(1.1.1.1)主动访问服务器公网地址和公网端口的数据报文由于命中该Server-map表而被放行,且目的公网地址和公网端口被转换为真实的私网地址(192.168.0.1)和私网端口(yyyy)。
查看FW上创建的会话表。
<sysname> display firewall session-table
Current Total Sessions : 2
  ftp  VPN:public --> public 1.1.1.1:xxxx+->1.1.1.2:22[192.168.0.1:21]
  ftp-data  VPN:public --> public 1.1.1.1:aaaa-->1.1.1.2:zzzz[192.168.0.1:yyyy]
多通道协议会创建多条会话,控制连接和数据连接是两个不同的连接。第一条会话代表控制连接,目的地址(服务器地址)经过NAT Server,“+-”表示该会话进入了ASPF/ALG流程。第二条会话代表数据连接,数据通道的报文命中Server-map表对目的地址做NAT转换为服务器的私网地址,并创建了数据连接会话。



1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 了解FTP ASPF/ALG

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!