如何在端口过滤后通过pasv模式连接FTP服务器


了解下FTP协议原理,对我们深入理解和排查问题都是有好处的。

维基百科的链接:http://zh.wikipedia.org/wiki/FTP%E5%AE%A2%E6%88%B6%E7%AB%AF

 

为了保障服务器的安全,一般都会对服务器进行端口过滤;
windows服务器一般采用通过TCP/IP筛选,而Linux则通过iptables防火墙。

因为FTP服务器默认都会使用pasv模式进行数据传输,在连接时,服务器端会根据连接过来的IP计算出一个特定的端口来传输数据,这样可以实现每个IP地址连接过来之后都通过一个不同的端口进行数据的传输;
如果这个端口不能打开,将无法连接到该服务器传输数据(即使在ftp登陆信息中看到已经成功登陆)。

一些优秀的FTP传输工具在此时会自动切换到port模式进行传输,以达到使用监听端口(如默认的数据流端口20)来传输数据的目的。
但这样会造成一些麻烦,比如我们直接使用IE的FTP功能,或很简单的一些FTP客户端,都无法正常连接上来;即使通过FlashFXP和CuteFTP这样的工具,也仍然不是很顺利。

所以,在进行了端口的过滤之后,我们一般采用固定设置几个端口作为pasv的数据传输端口(一般设置5个以上),并开放这几个端口。

Windows下使用Serv-U搭建FTP服务器,然后在“设置”中有一项可以设置数据传输端口,保存后再到TCP/IP筛选中添加允许这些端口即可。
而Linux下常用的VSFTP服务器,需要在配置文件/etc/vsftpd.conf中添加以下几行配置,然后在iptables中开放这些端口即可。
port_enable=NO
pasv_enable=YES
pasv_min_port=10021
pasv_max_port=10025

这样,就可以在进行了端口过滤后通过pasv模式连接FTP服务器了。

  1. No comments yet.
(will not be published)
*