您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > FTP协议分析和安全研究
FTP协议分析和安全研究摘要:FTP协议(FileTransferProtocol)是网络中常用的协议之一,用于用户间的文件传输。在互联网早期,FTP协议以其强大的功能,被广泛的使用;时至今日,尽管由于互联网网速的大大提高,PDF的使用有所减少,但在网络安全威胁越来越被严重的情况下,PDF以其稳定,便于控制的特性,在局域网功能服务上有很强的优势。本文将对FTP协议进行分析和并对其安全性方面进行探讨。一.什么是PDF文件传输协议规范(FTP)提供了一种允许客户端建立FTP控制连接并在两台FTP服务器间传输文件的机制。由于网络的带宽及各种服务的限制,单纯从页面上下载显得又慢又不可靠,所以就有许多FTP工具提供出来。从根本上说,FTP是TCP/IP的一种具体应用,是网络中极为实用的服务之一。它工作在OSI模型的第七层,TCP模型的第四层,即应用层,使用TCP传输而不是UDP,客户在和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证。它允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信。然而,用户并不真正登录到自己想要存取的计算机上面而成为完全用户,可用ftp程序访问远程资源,实现用户往返传输文件、目录管理以及访问电子邮件等等,即使双方计算机可能配有不同的操作系统和文件存储方式。二.PDF工作原理FTP协议是Internet文件传送的基础,它由一系列规格说明文档组成,目标是提高文件的共享性,提供非直接使用远程计算机,使存储介质对用户透明和可靠高效地传送数据。简单的说,FTP就是完成两台计算机之间的拷贝,从远程计算机拷贝文件至自己的计算机上,称之为“下载(download)”文件。若将文件从自己计算机中拷贝至远程计算机上,则称之为“上载(upload)”文件。从根本上说,FTP是基于客户———服务器(C/S)模型而设计的,在客户端与FTP服务器之间建立两个连接。客户端用户调用ftp命令后,便与服务器建立连接,这一连接被称作控制连接,又称为协议解释器PI,主要用于传输客户端的请求命令以及远程服务器的应答信息。一旦控制连接建立成功,双方便进入交互式会话状态,互相协调完成文件传输工作。另一个连接是数据连接,当客户端用户向远程服务器提出一个FTP请求时,临时在客户与服务器之间建立一个数据连接,主要用于数据的传送,因而又称作数据传输过程DTP。为了建立与远程系统的连接,从保密安全的角度出发,FTP要求客户向服务器提供用户注册名和口令,服务器拒绝非法用户的访问。但是连接一旦建立成功,一个或多个文本或图像二进制文件都能被传送,FTP不必担心可靠性和连接的管理,因为FTP依靠TCP正确执行这些功能。FTP支持两种模式,一种方式叫做Standard(也就是PORT方式,主动方式),主动方式的FTP工作过程是由FTP客户端首先和FTP服务器的TCP21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令。PORT命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的指定端口发送数据。FTPserver必须和客户端建立一个新的连接用来传送数据。另一种是Passive(也就是PASV,被动方式)。Passive模式在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令。FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求,客户端连接FTP服务器此端口,然后FTP服务器将通过这个端口进行数据的传送,这个时候FTPserver不再需要建立一个新的和客户端之间的连接。FTP的传输方式也有两种模式。一是ASCII传输方式。假定用户正在拷贝的文件包含的简单ASCII码文本,如果在远程机器上运行的不是UNIX,当文件传输时ftp通常会自动地调整文件的内容以便于把文件解释成另外那台计算机存储文本文件的格式;其次是二进制传输模式。在二进制传输中,保存文件的位序,以便原始和拷贝的是逐位一一对应的。即使目的地机器上包含位序列的文件是没意义的。例如,macintosh以二进制方式传送可执行文件到Windows系统,在对方系统上,此文件不能执行。三.PDF安全问题对于Port模式,这种模式多是用于因为服务端有防火墙,无法使用Pasv在服务端打开端口让客户端去连接而被逼使用,但由于连接本身是由服务端本身向外连接,这本身就存在一个安全的问题,因为如果这个连接一旦被黑客攻击,由于连接是由服务器本身向外连,防火墙将不会有任何动作去处理这个连接。对于Pasv模式,似乎比Port模式安全很多。但还是会发现它本身的问题。由于服务端会打开一个端口等客户端去连接,但如果这个打开的端口并没有检测连接的IP是哪个客户端的IP,那么安全问题也出现了。因为有很多FTP服务器打开的数据端口等客户端连接是随机的,但都会在一定范围内。如果FTP服务器并没有在接收数据端口的连接时检测连接过来的IP是不是已经是合法登陆的用户的话,那么其他并没有登陆的用户就很有机会攻击这个连接了。(一)FTP常见的攻击方式(1)跳转攻击(BounceAttack)RFC959[PR85]中规定的FTP规范提供了一种攻击知名网络服务器的一种方法,并且使攻击者很难被跟踪。攻击者发送一个FTPPORT命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。例如,客户端上载包含SMTP命令的报文到FTP服务器。然后,使用正确的PORT命令,客户端命令服务器打开一个连接给第三方机器的SMTP端口。最后,客户端命令服务器传输刚才上载的包含SMTP命令的报文给第三方机器。这就使得客户端不建立任何直接的连接而在第三方机器上伪造邮件,并且很难跟踪到这个攻击者。(2)FTP服务器软件漏洞常用的FTP服务软件有Wu-ftpd,ProFTPD,vsftpd,以及windows下常用的Serv-U等,最常见也最可怕的漏洞就是缓冲区溢出,近来Wu-ftpd和Serv-U的溢出漏洞层出不穷,ProFT-PD也出现过缓冲区溢出,目前比较安全的还是vsftp。(3)明文口令攻击由于TCP/IP协议族的设计在相互信任和安全的基础上的,FTP的设计也没有采用加密传送,FTP客户与服务器之前所有的数据传送都是通过明文的方式,当然也包括了口令。至从有了交换环境下的数据监听之后,这种明文传送就变得十分危险,因为别人可能从传输过程过捕获一些敏感的信息,如用户名和口令等。像HTTPS和SSH都采用加密解决了这一问题。而FTP仍然是明文传送,而像UINX和LINUX这类系统的ftp账号通常就是系统帐号,(vsftp就是这样做的)。这样黑客就可以通过捕获FTP的用户名和口令来取得系统的帐号,如果该帐号可以远程登录的话,通常采用本地溢出来获得root权限。这样该FTP服务器就被黑客控制了。(4)端口盗用许多操作系统以递增的顺序动态的分配端口号。通过合法的传输,攻击者能够观察当前由服务器端分配的端口号,并“猜”出下一个即将使用的端口号。攻击者可以与这个端口建立连接,然后就剥夺了下一个合法用户进行传输的能力。或者,攻击者可以盗取给合法用户的文件。另外,攻击者还可能在从授权用户发出的数据流中插入伪造的文件。通过使FTP客户和服务器随机的给数据连接分配端口号,或者要求操作系统随机分配端口号,或者使用与系统无关的机制都可以减少端口盗用的发生。(5)数据劫持FTP协议本身并没有要求传输命令的客户IP和进行数据传输的客户IP一致,这样黑客就有可能劫持到客户和服务器之间传送的数据。根据数据传输的模式可把数据劫持分为主动数据劫持和被动数据劫持。被动数据劫持是指在FTP客户端发出PASV或PORT命令之后并且在发出数据请求之前,存在一个易受攻击的窗口。如果黑客能猜到这个端口,就能够连接并载取或替换正在发送的数据。要实现被动数据劫持就必须知道服务器上打开的临时端口号,然后很多服务器并不是随机选取端口,而是采用递增的方式,这样黑客要猜到这个端口号就不是很难了;主动数据劫持比被动数据劫持要困难很多,因为在主动传输的模式下是由客户打开临时端口来进行数据传输,而黑客是很难找到客户的IP和临时端口的。(二)相应的安全策略(1)避免跳转攻击为了避免跳转攻击,服务器最好不要打开数据链接到小于1024的TCP端口号。如果服务器收到一个TCP端口号小于1024的PORT命令,那么可以返回消息504(对这种参数命令不能实现)。但要注意这样遗留下那些不知名服务(端口号大于1023)易受攻击。一些建议(例如[AOM98]和[Pis94])提供了允许使用除了TCP以外的其他传输协议来建立数据连接的机制。当使用这些协议时,同样要注意采用类似的防范措施来保护众所周知的服务。另外,跳转攻击一般需要攻击者首先上载一个报文到FTP服务器然后再下载到准备攻击的服务端口上。使用适当的文件保护措施就可以阻止这种情况发生。然而攻击者也可能通过从远程FTP服务器发送一些能破坏某些服务的数据来攻击它。禁止使用PORT命令也是避免跳转攻击的一种方法。大多数文件传输可以仅通过PASV命令来实现。但这样做的缺点就是丧失了使用代理FTP的能力,当然代理FTP并不是在所有场合都需要的。(2)受限制的访问一些FTP服务器希望有基于网络地址的访问控制。例如,服务器可能希望限制来自某些地点的对某些文件的访问(例如为了某些文件不被传送到组织以外)。在这种情况下,服务器在发送受限制的文件之前应该首先确保远程主机的网络地址在本组织的范围内,不管是控制连接还是数据连接。通过检查这两个连接,服务器就被保护避免了这种情况:控制连接用一台可信任的主机连接而数据连接不是。同样的,客户也应该在接受监听模式下的开放端口连接后检察远程主机的IP地址,以确保连接是由所期望的服务器建立的。(3)保护密码为了减少通过FTP服务器进行强力密码猜测攻击的风险,建议服务器限制尝试发送正确的密码的次数。在几次尝试(3~5次)后,服务器应该结束和该客户的控制连接。在结束控制连接以前,服务器必须给客户端发送一个返回码421(“服务不可用,关闭控制连接”)。另外,服务器在相应无效的“PASS”命令之前应暂停几秒来消减强力攻击的有效性。若可能的话,目标操作系统提供的机制可以用来完成上述建议。攻击者可能通过与服务器建立多个、并行的控制连接破坏上述的机制。为了搏击多个并行控制连接的使用,服务器可以限制控制连接的最大数目,或探查会话中的可疑行为并在以后拒绝该站点的连接请求。然而上述两种措施又引入了“服务否决”攻击,攻击者可以故意的禁止有效用户的访问。标准FTP在明文文本中使用“PASS”命令发送密码。建议FTP客户端和服务器端使用备用的鉴别机制,这种鉴别机制不会遭受窃听。比如,IETF公共鉴别技术工作组开发的机制。(4)私密性保护在FTP标准中中,所有在网络上被传送的数据和控制信息(包括密码)都未被加密。为了保障FTP传输数据的私密性,应尽可能使用强壮的加密系统。(5)保护用户名当“USER”命令中的用户名被拒绝时,在FTP标准中[PR85]中定义了相应的返回码530。而当用户名是有效的但却需要密码,FTP将使用返回码331。为了避免恶意的客户利用USER操作返回的码确定一个用户名是否有效,建议服务器对USER命令始终返回331,然后拒绝对无效用户名合并用户名和密码。四.总结在传统的FTP通讯和传输过程中可以看出,FTP协议提供了一种简单实用的网络文件传输方法,对通讯双方也没有可靠的认证措施,同时还存在着明文信息传输的弱点。虽然近年来出现了很多种FTP的替代服务,例如基于S
本文标题:FTP协议分析和安全研究
链接地址:https://www.777doc.com/doc-4382625 .html