许多INTERNET爱好者最先接触的东西就是FTP,在当时HTTP还未出现,人们还停留在命令行阶段(即使在WIN95里面也内置FTP命令),但人们乐此不返,直到WWW的出现。但FTP在现实中仍然扮演着重要的角色──特别是FTP服务器在提供公用服务方面。
同时,FTP服务器也成为网络安全的一个潜在的漏洞。本文就是基于此而出发的。
一、FTP概述
FTP(File Transfer Protocol)即文件传输协议,用来从一台机器传送文件到另一台机器上。你可以使用FTP来传送任何类型的文件,包括二进制文件、图形文件、ASCII文本文件、PostScript打印文件、音频及视频文件等。有两种类型的FTP访问,即有名和匿名FTP。有名FTP要求用户在服务器上有帐号,当他登录时他可以拥有他应该拥有的一切资源。匿 名FTP是为了那些在服务器上没有帐号的人提供的,主要是用来使用户访问一些公用资源。
(注:希望进一步了解FTP的爱好者可以阅读RFC959,在任一搜索引擎上输入RFC959.TXT查寻。)
二、FTP的包过滤(Packet Filtering)方式
首先,有必要解释什么叫包过滤。简单地说包过滤即是只基于TCP/IP包的检测。FTP使用两个独立的TCP连接:一个在服务器和客户程序之间传递命令和结果(通常称为命令通 道);另一个用来传送真实的文件和目录列表(通常称为数据通道)。在服务器上,命令通道使用众所周知的端口号2 1,数据通道为端口号20。客户程序则在命令和数据通道上分别使用大于1023的端口(根据TCP/IP协议,端口对应于INTERNET应用层,不同的应用层客户程序有其缺省的端口 号,如FTP为20、21,HTTP为80)。
在开始一个FTP的连接时,客户程序首先为自己分配两个大于1023的TCP端口,它使用第一个端口作为命令通道端口与服务器连接,然后发出PORT命令(通常是PORT C,C,C,C,F,F,其中C,C,C,C为客户端IP地址,F,F为第二个端口号),告诉服务器它的第二个作为数据通道的端口号,这样 服务器就能打开数据通道了。图1表示了这种FTP连接。
大多数FTP服务器(特别是那些用在INTERNET上的主要匿名FTP站点)和许多FTP客户程序都支持一种客户程序打开命令通道和数据通道来连接到FTP服务器的修改方式,这种方式 被称之为“反向方式”或“PASV方式”。
在使用反向方式时,一个FTP客户程序需要分配两个TCP端口供其使用。第一步同正常方式,但客户程序通过PASV命令代替原来PORT命令来告诉服务器客户程序的第二个TCP端口。这样就能使服务器为本身的数据通道分配第二个TCP端 口,并通知客户程序所分配的那个端口号。这时,客户程序就从它的数据通道的端口连接到服务器刚才通知它的那个端 口上。图2显示了一个反向方式的FTP连接。
通过FTP包过滤方式的分析可以知道,一个TCP连接可以从防火墙外部实现,即一个外部FTP服务器会接通一个到内部 的客户程序的数据通道的连接,来响应从内部的客户程序发出的命令通道连接。正是这种方式,一方面可以允许客户程序通过FTP代理服务器连接其他FTP服务器(在后面还将专题 讨论),另一方面也给网络带来了不安全性。
三、匿名FTP服务
用过FTP的人知道其提供一种匿名服务(AnonymousService)。登录名用“anonymous”,而口令通常可用你的E-mail代替。正是这种服务方式方便了用户,但也不可避免 地带来了问题,如客户登录后,往往能够获得一个可写目录(通常是/incoming),这样客户就可以通过PUT上载一个甚至是多个TXT文件,来达到其攻击该FTP服务器或其他FTP服务器的目的(后面详述),虽然许多FTP服务器都限制匿名用户的权限,如执行权,而许多FTP服务器同HTTP服务器同装在一台机器上,那么匿名用户完全可以利用该可写目录运行命令 调用HTTP服务器执行
阅读(850) | 评论(0) | 转发(0) |