今天无聊研究了下防火墙对ftp的控制,这里使用了华为防火墙。
众所周知,ftp有20、21端口,20用来建立数据连接,21用来建立控制连接
ftp有两种模式:主动模式PORT、被动模式PASV。这个主动、被动都是对于server来说的
1、主动模式:client向server发起控制连接,目标端口21
client使用控制连接把自已用于数据连接的端口告诉server,让server主动发起数据连接(你来连我)
这个模式下20、21端口都使用了
环境中,连接client的防火墙FW1端口处于trust区域,连接server的端口处于untrust
由于不同ZONE需要设置安全策略才能获取通信资格,所以配置了client-server的安全策略,允许ftp,此时client-server建立控制连接通过这个策略是正常的(因为目标端口21,匹配ftp通过)
但当client告诉server自己数据连接使用的端口后,此时是靠server主动向client发起数据连接的,而此时server-client的数据连接是另外一条截然不同的数据流了,防火墙完全无法根据前面的控制连接预判这种数据连接的数据情况。好在可以根据client中port命令的信息深度去解析能得到这个数据连接数据情况。
华为防火墙默认情况开启了firewall detect ftp,即ASPF,通过控制连接后,防火墙会生成server-map,来匹配从server-client的数据连接的数据。
2、被动模式PASV:
client向server发起控制连接,目标端口21
client使用控制连接告诉server采用的是PASV模式(我来连你吧),server主动发送自己ip与数据连接使用的端口
这个过程只用21端口。
按照上面的理论,防火墙当然也能预测server-client的数据包
在防火墙层面,这次是client主动跟server建立数据连接,那么就可以不打开firewall detect ftp了?
对于client-server的数据连接,源、目端口都不是ftp的端口,可以认为是普通的TCP通信,所以当关闭ASPF后,在安全策略上,添加了允许TCP,此时也可以建立连接,但不涉及到server-map的事