一个、ftp的port和pasv工作方式 FTP使用2个TCPport,首先是建立一个命令port(控制port),然后再产生一个数据port。
国内非常多教科书都讲ftp使用21命令port和20数据port,这个应该是教书更新太慢的原因吧。实际上FTP分为主动模式和被动模式两种。ftp工作在主动模式使用tcp 21和20两个port,而工作在被动模式会工作在大于1024随机port。FTP最权威的參考见RFC 959。有兴趣的朋友能够细致阅读ftp://nic.merit.edu/documents/rfc/rfc0959.txt的文档了解FTP具体工作模式和命令。眼下主流的FTP Serverserver模式都是同一时候支持port和pasv两种方式,可是为了方便管理安全管理防火墙和设置ACL了解FTP Server的port和pasv模式是非常有必要的。
1.1 ftp port模式(主动模式) 主动方式的FTP是这种:client从一个随意的非特权portN(N>1024)连接到FTPserver的命令port(即tcp 21port)。紧接着client開始监听portN+1,并发送FTP命令“port N+1”到FTPserver。最后server会从它自己的数据port(20)连接到client指定的数据port(N+1)。这样client就能够和ftpserver建立传输数据通道了。ftp port模式工作流程例如以下图所看到的:
针对FTPserver前面的防火墙来说,必须同意下面通讯才干支持主动方式FTP:
1、客户port>1024port到FTPserver的21port (入:client初始化的连接 S<-C)
2、FTPserver的21port到client>1024的port(出:server响应client的控制port S->C)
3、FTPserver的20port到client>1024的port(出:server端初始化数据连接到client的数据port S->C)
4、client>1024port到FTPserver的20port(入:client发送ACK响应到server的数据port S<-C)
假设server的ip为192.168.10.1在H3C 8500的GigabitEthernet 2/1/10 上创建in acl策略同意ftp 主动模式其它禁止:
rule permit tcp source 192.168.10.1 0 source-port eq 21 destination-port gt 1024
rule permit tcp source 192.168.10.1 0 source-port eq 20 destination-port gt 1024
rele deny ip
1.2 ftp pasv模式(被动模式)
在被动方式FTP中,命令连接和数据连接都由client。
当开启一个FTP连接时,client打开两个随意的非特权本地port(N > 1024和N+1)。第一个port连接server的21port,但与主动方式的FTP不同,client不会提交PORT命令并同意server来回连它的数据port。而是提交PASV命令。这样做的结果是server会开启一个随意的非特权port(P > 1024)。并发送PORT P命令给client。然后client发起从本地portN+1到server的portP的连接用来传送数据。ftp pasv模式工作流程例如以下图所看到的:
对于server端的防火墙来说。必须同意以下的通讯才干支持被动方式的FTP:
1、client>1024port到server的21port (入:client初始化的连接 S<-C)
2、server的21port到client>1024的port (出:server响应到client的控制port的连接 S->C)
3、client>1024port到server的大于1024port (入:client初始化数据连接到server指定的随意port S<-C)
4、server的大于1024port到远程的大于1024的port(出:server发送ACK响应和数据到client的数据port S->C)
假设server的ip为192.168.10.1在H3C 8500的GigabitEthernet 2/1/10 上创建in acl策略同意ftp 主动模式其它禁止:
rule permit tcp source 192.168.10.1 0 source-port eq 21 destination-port gt 1024
rule permit tcp source 192.168.10.1 0 source-port gt 1024 destination-port gt 1024
rele deny ip
二、ftp的port和pasv模式的工作方式 ftp的port和pasv模式最主要差别就是数据端口连接方式不同,ftp port模式仅仅要开启server的21和20端口,而ftp pasv须要开启server大于1024全部tcp端口和21端口。重网络安全的角度来看的话似乎ftp port模式更安全。而ftp pasv更不安全,那么为什么RFC要在ftp port基础再制定一个ftp pasv模式呢?事实上RFC制定ftp pasv模式的主要目的是为了数据传输安全角度出发的。由于ftp port使用固定20端口进行数据传输,那么作为黑客非常容使用sniffer等探嗅器抓取ftp数据,这样一来通过ftp port模式数据传输非常easy被黑客窃取,因此使用pasv方式来架设ftp server是最安全绝佳方案。
假设作为一个有经验的网络管理员就会发现使用ftp pasv方式会给网络安全非常大隐患,那就是ftp pasv须要开启servertcp大于1024全部port,这样对server的安全保护是非常不利的。在此我建议两种方法来完好FTP Pasv模式的port开放问题,第一种就是使用弱洞扫描工具比方Xscan找出server开放的port然后使用acl把portdeny掉,第二种方法就是使用具有状态检測防火墙开启ftp pasv的port。
在ftp pasv模式下是使用状态检測防火墙比acl最大的优点就是使用状态检測防火墙仅仅要开启ftp 21port就能够了。状态检測防火墙会检測客户port连接ftp server的21命令port,一但检測client使用ftp 21命令port然后就会同意这个Session使用ftpserver大于1024port。而其它方式是无法直接訪问ftpserver大于1024port。通过状态检測防火墙就能够保证ftp server大于1024port仅仅对FTP Session开放了。
眼下像IPTable、ISA Server 2000/2004/2006、以及主流硬件防火墙都能够支持状态检測。