FTP协议的分析和扩展

  发布时间:2010-09-07 22:44:21   作者:佚名   我要评论
>>1.0<< FTP和TCP端口号  根据是使用Port模式还是Passive模式,FTP使用不同的TCP端口号,在详细描述FTP前,我们来  简单讨论一下TCP端口号的一些基本概念。TCP使用端口号来标识所发送和接收的应用,端口
3 PORT: 1402 | 
| [R] LIST -al | 
| [R] Connected. Negotiating SSL/TLS session.. | 
| [R] 150 Opening ASCII data connection for ls / using SSL/TLS. | 
| [R] SSL/TLS negotiation successful... | 
| [R] TLSv1/SSLv3 encrypted session using cipher AES256-SHA (256 bits) | 
| [R] List Complete: 181 bytes in 0.17 seconds (1.04 KBps) | 
\======================================================================/ 

Explicit SSL模式下ftp client <-- server的通讯数据,可以看到AUTH SSL之后的指令全部都 
已经加密,无法看到。对应2.3节中的传统通讯过程,这确保了传输过程中数据无法被窃听到。 
在Implicit SSL模式中,从初始化连接开始的数据将全部加密,无法分析,因此此处不摘录。 
/======================================================================\ 
21:34:22.095241 IP 192.168.0.1.2279 > 192.168.0.3.999: S 1727744887:1727744887(0) win 65535 <mss 1460,nop,nop,sackOK> (DF) 
0x0000 4500 0030 e6b7 4000 8006 92bb c0a8 0001 E..0..@......... 
0x0010 c0a8 0003 08e7 03e7 66fb 4b77 0000 0000 ........f.Kw.... 
0x0020 7002 ffff 428a 0000 0204 05b4 0101 0402 p...B........... 
21:34:22.095576 IP 192.168.0.3.999 > 192.168.0.1.2279: S 3598555607:3598555607(0) ack 1727744888 win 65535 <mss 1460,nop,nop,sackOK> (DF) 
0x0000 4500 0030 8d9e 4000 8006 ebd4 c0a8 0003 E..0..@......... 
0x0010 c0a8 0001 03e7 08e7 d67d 99d7 66fb 4b78 .........}..f.Kx 
0x0020 7012 ffff d223 0000 0204 05b4 0101 0402 p....#.......... 
21:34:22.095639 IP 192.168.0.1.2279 > 192.168.0.3.999: . ack 1 win 65535 (DF) 
0x0000 4500 0028 e6b8 4000 8006 92c2 c0a8 0001 E..(..@......... 
0x0010 c0a8 0003 08e7 03e7 66fb 4b78 d67d 99d8 ........f.Kx.}.. 
0x0020 5010 ffff fee7 0000 P....... 
21:34:22.108439 IP 192.168.0.3.999 > 192.168.0.1.2279: P 1:115(114) ack 1 win 65535 (DF) 
0x0000 4500 009a 8da4 4000 8006 eb64 c0a8 0003 E.....@....d.... 
0x0010 c0a8 0001 03e7 08e7 d67d 99d8 66fb 4b78 .........}..f.Kx 
0x0020 5018 ffff 5cb5 0000 3232 302d 5468 6973 P...\...220-This 
0x0030 2073 6572 7665 7220 6973 2066 6f72 2070 .server.is.for.p 
0x0040 7269 7661 7465 2075 7365 206f 6e6c 790d rivate.use.only. 
0x0050 0a32 .2 
21:34:22.257722 IP 192.168.0.1.2279 > 192.168.0.3.999: . ack 115 win 65421 (DF) 
0x0000 4500 0028 e6c1 4000 8006 92b9 c0a8 0001 E..(..@......... 
0x0010 c0a8 0003 08e7 03e7 66fb 4b78 d67d 9a4a ........f.Kx.}.J 
0x0020 5010 ff8d fee7 0000 P....... 
21:34:22.257941 IP 192.168.0.3.999 > 192.168.0.1.2279: P 115:154(39) ack 1 win 65535 (DF) 
0x0000 4500 004f 8da7 4000 8006 ebac c0a8 0003 E..O..@......... 
0x0010 c0a8 0001 03e7 08e7 d67d 9a4a 66fb 4b78 .........}.Jf.Kx 
0x0020 5018 ffff 96b3 0000 3232 3020 506c 6561 P.......220.Plea 
0x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se.enter.your.lo 
0x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a gin.name.now... 
21:34:22.264587 IP 192.168.0.1.2279 > 192.168.0.3.999: P 1:11(10) ack 154 win 65382 (DF) 
0x0000 4500 0032 e6c2 4000 8006 92ae c0a8 0001 E..2..@......... 
0x0010 c0a8 0003 08e7 03e7 66fb 4b78 d67d 9a71 ........f.Kx.}.q 
0x0020 5018 ff66 e88e 0000 4155 5448 2053 534c P..f....AUTH.SSL 
0x0030 0d0a .. 
21:34:22.371140 IP 192.168.0.3.999 > 192.168.0.1.2279: P 154:205(51) ack 11 win 65525 (DF) 
0x0000 4500 005b 8dac 4000 8006 eb9b c0a8 0003 E..[..@......... 
0x0010 c0a8 0001 03e7 08e7 d67d 9a71 66fb 4b82 .........}.qf.K. 
0x0020 5018 fff5 9a03 0000 3233 3420 4155 5448 P.......234.AUTH 
0x0030 2043 6f6d 6d61 6e64 204f 4b2e 2049 6e69 .Command.OK..Ini 
0x0040 7469 616c 697a 696e 6720 5353 4c20 636f tializing.SSL.co 
0x0050 6e6e nn 
21:34:22.374945 IP 192.168.0.1.2279 > 192.168.0.3.999: P 11:141(130) ack 205 win 65331 (DF) 
0x0000 4500 00aa e6c6 4000 8006 9232 c0a8 0001 E.....@....2.... 
0x0010 c0a8 0003 08e7 03e7 66fb 4b82 d67d 9aa4 ........f.K..}.. 
0x0020 5018 ff33 f99a 0000 8080 0103 0100 5700 P..3..........W. 
0x0030 0000 2000 0016 0000 1300 000a 0700 c000 ................ 
0x0040 0066 0000 0700 0005 0000 0405 0080 0300 .f.............. 
0x0050 8001 .. 
21:34:22.375857 IP 192.168.0.3.999 > 192.168.0.1.2279: P 205:1071(866) ack 141 win 65395 (DF) 
0x0000 4500 038a 8dad 4000 8006 e86b c0a8 0003 E.....@....k.... 
0x0010 c0a8 0001 03e7 08e7 d67d 9aa4 66fb 4c04 .........}..f.L. 
0x0020 5018 ff73 e356 0000 1603 0100 4a02 0000 P..s.V......J... 
0x0030 4603 0140 8283 7da1 8821 775e 7765 a9ee F..@..}..!w^we.. 
0x0040 18ca e0ab 1b17 461e bf71 515f 6837 5c1a ......F..qQ_h7\. 
\======================================================================/ 


>>4.0<< 总结 
FTP的替代应用 
如今,如果考虑到其他一些安全的文件传输选择,可能看起来没有理由再使用FTP了,如SCP或 
者SFTP,与FTP应用相似但运用SSH(注:Secure 
Shell)来进行验证和加密,如果你使用一台基于UNIX的服务器,你可以在命令方式下调用SCP 
或者SFTP,如果你想获得更多的关于SSH的信息,参考如下URLhttp://www.openssh.com 
如果你只是用FTP来更新你的Web页面,有别的替代应用,称为WebDAV的新的协议,WebDAV 
是HTTP的扩展,它允许多个用户共同编辑和维护远程WEB服务器上的文件,如果想了解WebDAV 
的详细信息,参考http://www.cis.ohio-state.edu/cgi-bin/rfc/rfc2518.html 

FTP是在70年代设计出来的,那个时候互联网还是一个封闭的网络,网络安全不是一个大的问 
题。当FTP在使用NAT网关、防火墙、CISCO访问列表的现代网络环境中运用的时候,不管你使 
用Port模式还是Passive模式,都可能产生一些问题,FTP在公网上作为一些关键应用的文件传 
输手段可能就是一个错误;当然近年很多人为了是FTP协议更加安全进行了不懈的努力,这些 
努力却使对于FTP的排错更加复杂,而且都没有解决FTP最大的问题,即明文传输用户名和口令 
。有许多应用可以替代FTP,如SCP,SFTP或者WebDAV。 

以上为原文总结,本文下半部分补充了ftp自身的安全扩展,使用SSL/TLS进行ftp传输过程的 
验证和加密,良好的实现了与传统ftp协议的兼容性和优良的数据保密性与完整性。在无法使用 
替代服务的环境下,是一种非常好的ftp服务改进计划。 

略有不足的是,由于历史兼容性因素,很多ftp client和server对ssl ftp扩展的实现都存在 
着各种缺陷,例如加密算法不足,指令顺序有错误等等,这可能会引起一些安全保护级别的削弱。 
1, 由于没有良好的PKI体系支撑,很多ftp server的证书合法性无法得到验证,可能存在无法 
信任或被伪造的可能; 
2, 由于Explicit SSL模式的历史兼容问题,AUTH指令和USER/PASS指令序列的优先级没有明确 
约定,可能存在指令序列错误造成信息泄露的问题; 
3, 由于SSL自身体系的一些问题,可能受到证书泄露,伪造,或SSL中间人攻击; 
4, 在不完整的CA或PKI体系下,只能够采用自签名证书,这时SSL ftp得到的安全性提高仅仅 
是通讯过程加密,并无法完成身份认证的功能。 

当然,排除无法实现身份认证功能和略微的实现缺陷,ssl ftp仍然是一种优秀的ftp服务安全加强 
措施。 


>>5.0<< 参考 

ftp协议簇 
http://www.ietf.org/rfc/rfc959.txt 
http://www.ietf.org/rfc/rfc1579.txt 

ftp安全扩展 
http://www.ietf.org/rfc/rfc2228.txt 
http://www.ietf.org/rfc/rfc2246.txt 

ftp安全扩展,SSL接口草案: 
http://www.ietf.org/internet-drafts/draft-murray-auth-ftp-ssl-13.txt 

ssl/tls协议规范: 

相关文章

最新评论