|
FTP协议的分析和扩展(5) TCP Options Options Type: 2 Maxinum Segment Size Length: 4 MSS: 1460 FCS - Frame Check Sequence FCS (Calculated): 0x5A1BD023 \====================================================================/ 当使用FTP时候,网络中的防火墙必须要声明相应的端口,防火墙必须要跟踪FTP对话然后检查 PORT命令,防火墙必须要参与从服务器端到客户端在PORT命令中指定的端口连接的建立过程。 如果网络中使用了NAT(注:网络地址翻译),那么NAT的网关同样也需要声明相应的端口,网 关需要把在PORT命令中指定的IP地址翻译成分配给客户的地址,然后重新计算TCP的Checksum ;如果网关没有正确地执行这个操作,FTP就失败了。 黑客可能会利用FTP支持第三方特性这一特点,在PORT命令中设置IP地址和端口号参数来指定 一台目标主机的地址和端口号(有时候称这种攻击为FTP反弹攻击),例如黑客可以让一台FTP 服务器不断地从它的源端口20发送TCP SYN包给一系列目的端口,让FTP服务器看起来正在进行 端口扫描,目的主机不知道攻击来自黑客的主机,看起来攻击象是来自FTP服务器。一些常用的 FTP应用在PORT命令中设置地址为0.0.0.0,这样做的意图是让FTP服务器只需要与打开控制连接 的相同客户进行数据连接,设置地址为0.0.0.0可能会让防火墙不知所措。例如,CISCO PIX IOS 6.0以上版本的PIX(注:CISCO硬件防火墙设备,6.0以上版本为其修正了相关的FTP协议) 要求数据连接的IP地址与已经存在的控制连接的IP地址必须相同。这样做的原因是防止黑客用 PORT命令来攻击别的机器,虽然一些FTP应用设置IP地址为0.0.0.0不是有意图的攻击,但在PI X修正协议环境下的确引起了一些问题,同时对其他不允许第三方模式和避免FTP反弹攻击的防 火墙来说,这也会引起相同的问题。 >>2.2 FTP Passive模式 下面的列表描述了Passive模式的FTP的步骤,步骤1到3和Port模式FTP相同,步骤9到11同样与 Port模式FTP最后三步相同。 1、客户端发送一个TCP SYN(TCP同步)包给服务器段众所周知的FTP控制端口21,客户端使 用暂时的端口作为它的源端口; 2、服务器端发送SYN ACK(同步确认)包给客户端,源端口为21,目的端口为客户端上使用 的暂时端口; 3、客户端发送一个ACK(确认)包;客户端使用这个连接来发送FTP命令,服务器端使用这个 连接来发送FTP应答; 4、当用户请求一个列表(List)或者发送或接收文件时候,客户端软件发送PASV命令给服务器端 表明客户端希望进入Passive模式; 5、服务器端进行应答,应答包括服务器的IP地址和一个暂时的端口,这个暂时的端口是客户端 在打开数据传输连接时应该使用的端口; 6、客户端发送一个SYN包,源端口为客户端自己选择的一个暂时端口,目的端口为服务器在PASV
|