RFC2577FTPSecurityConsiderationsFTP安全考虑1组织:中国互动出版网()RFC文档中文翻译计划()E-mail:ouyang@china-pub.com译者:yeeman(yeemanyi.man@263.net)译文发布时间:2001-6-15版权:本中文翻译文档版权归中国互动出版网所有。可以用于非商业用途自由转载,但必须保留本文档的翻译及版权信息。NetworkWorkingGroupM.AllmanRequestforComments:2577NASAGlenn/SterlingSoftwareCategory:InformationalS.OstermannOhioUniversityMay1999FTP安全考虑(RFC2577FTPSecurityConsiderations)本备忘录的状态本备忘录给Internet社会提供了一些信息,但不指定任何一种Internet标准。发布本备忘录不受限制。版权声明Copyright(C)TheInternetSociety(1999).AllRightsReserved.摘要本文是对文件传输协议(FTP)的说明,它包含了一些用来缓解网络安全问题的机制。本FTP规范允许客户端命令一台服务器传输文件到第三方机器。这种“三方”机制,我们称它为“代理FTP”,带来了一个著名的安全问题。本FTP规范还允许无数次的尝试输入用户密码,这带来了强力“密码猜测”攻击。本文档给系统管理员和那些实现FTP服务器的人提供了一些建议来减少跟FTP有关的安全问题。1.简介.....................................................................................................................................22.跳转攻击(BounceAttack)..............................................................................................23.避免跳转攻击.....................................................................................................................24.受限制的访问.....................................................................................................................35.保护密码.............................................................................................................................36.私密性.................................................................................................................................37.保护用户名.........................................................................................................................48.端口盗用.............................................................................................................................49.基于软件的安全问题.........................................................................................................410.结论...................................................................................................................................411.安全考虑...........................................................................................................................5RFC2577FTPSecurityConsiderationsFTP安全考虑21.简介文件传输协议规范(FTP)[PR85]提供了一种允许客户端建立FTP控制连接并在两台FTP服务器间传输文件的机制。这种“代理FTP”机制可以用来减少网络的流量,客户端命令一台服务器传输文件给另一台服务器,而不是从第一台服务器传输文件给客户端,然后从客户端再传输给第二台服务器。当客户端连接到网络的速度特别慢时,这是非常有用的。但同时,代理FTP还带来了一个安全问题——“跳转攻击(bounceattack)”[CERT97:27]。除了“跳转攻击”,FTP服务器还可以被攻击者通过强力来猜测密码。本文档并不考虑当FTP和一些强壮的安全协议(比如IP安全)联合使用的情况。虽然这些安全关注并不在本文档的考虑范围内,但是它们也应该被写成文档。本文给FTP服务器的实现者和系统管理员提供了一些信息,如下所示。第二章描述了FTP“跳转攻击”。第三章提供了减少“跳转攻击”的建议。第四章给基于网络地址限制访问的服务器提供了建议。第五章提供了限制客户端强力“猜测密码”的建议。接着,第六章简单的讨论了改善保密性的机制。第七章给出了阻止猜测用户身份的机制。第八章讨论了端口盗用。最后,第九章讨论了其它跟软件漏洞有关而跟协议本身无关的FTP安全问题。2.跳转攻击(BounceAttack)RFC959[PR85]中规定的FTP规范提供了一种攻击知名网络服务器的一种方法,并且使攻击者很难被跟踪。攻击者发送一个FTPPORT”命令给目标FTP服务器,其中包含该主机的网络地址和被攻击的服务的端口号。这样,客户端就能命令FTP服务器发一个文件给被攻击的服务。这个文件可能包括根被攻击的服务有关的命令(如SMTP,NNTP等)。由于是命令第三方去连接到一种服务,而不是直接连接,就使得跟踪攻击者变得困难,并且还避开了基于网络地址的访问限制。例如,客户端上载包含SMTP命令的报文到FTP服务器。然后,使用正确的PORT命令,客户端命令服务器打开一个连接给第三方机器的SMTP端口。最后,客户端命令服务器传输刚才上载的包含SMTP命令的报文给第三方机器。这就使得客户端不建立任何直接的连接而在第三方机器上伪造邮件,并且很难跟踪到这个攻击者。3.避免跳转攻击原来的FTP规范[PR85]假定使用TCP进行数据链接,TCP端口号从0到1023时报留给一些众所周知的服务的,比如邮件,网络新闻和FTP控制链接。FTP规范对数据链接没有限制TCP端口号。因此,使用代理FTP,客户端就可以命令服务器去攻击任何机器上众所周知的服务。为了避免跳转攻击,服务器最好不要打开数据链接到小于1024的TCP端口号。如果服务器收到一个TCP端口号小于1024的PORT命令,那么可以返回消息504(对这种参数命令不能实现)。但要注意这样遗留下那些不知名服务(端口号大于1023)易受攻击。一些建议(例如[AOM98]和[Pis94])提供了允许使用除了TCP以外的其他传输协议来建立数据连接的机制。当使用这些协议时,同样要注意采用类似的防范措施来保护众所周知的服务。另外,我们注意到跳转攻击一般需要攻击者首先上载一个报文到FTP服务器然后再下RFC2577FTPSecurityConsiderationsFTP安全考虑3载到准备攻击的服务端口上。使用适当的文件保护措施就可以阻止这种情况发生。然而攻击者也可能通过从远程FTP服务器发送一些能破坏某些服务的数据来攻击它。禁止使用PORT命令也是避免跳转攻击的一种方法。大多数文件传输可以仅通过PASV命令来实现。但这样做的缺点就是丧失了使用代理FTP的能力,当然代理FTP并不是在所有场合都需要的。4.受限制的访问一些FTP服务器希望有基于网络地址的访问控制。例如,服务器可能希望限制来自某些地点的对某些文件的访问(例如为了某些文件不被传送到组织以外)。在这种情况下,服务器在发送受限制的文件之前应该首先确保远程主机的网络地址在本组织的范围内,不管是控制连接还是数据连接。通过检查这两个连接,服务器就被保护避免了这种情况:控制连接用一台可信任的主机连接而数据连接不是。同样的,客户也应该在接受监听模式下的开放端口连接后检察远程主机的IP地址,以确保连接是由所期望的服务器建立的。注意,基于网络地址的受限访问留下了FTP服务器易受“地址盗用(spoof)”攻击。在spoof攻击中,攻击机器可以冒用在组织内的机器的网络地址,从而将文件下载到在组织之外的未授权的机器上。只要可能,就应该使用安全鉴别机制,比如在[HL97]中列出的安全鉴别机制。5.保护密码为了减少通过FTP服务器进行强力密码猜测攻击的风险,建议服务器限制尝试发送正确的密码的次数。在几次尝试(3~5次)后,服务器应该结束和该客户的控制连接。在结束控制连接以前,服务器必须给客户端发送一个返回码421(“服务不可用,关闭控制连接”[PR85])。另外,服务器在相应无效的“PASS”命令之前应暂停几秒来消减强力攻击的有效性。若可能的话,目标操作系统提供的机制可以用来完成上述建议。攻击者可能通过与服务器建立多个、并行的控制连接破坏上述的机制。为了搏击多个并行控制连接的使用,服务器可以限制控制连接的最大数目,或探查会话中的可疑行为并在以后拒绝该站点的连接请求。然而上述两种措施又引入了“服务否决”攻击,攻击者可以故意的禁止有效用户的访问。标准FTP[PR85]在明文文本中使用“PASS”命令发送密码。建议FTP客户端和服务器端使用备用的鉴别机制,这种鉴别机制不会遭受窃听。比如,IETF公共鉴别技术工作组开发的机制[HL97]。6.私密性在FTP标准中[PR85]中,所有在网络上被传送的数据和控制信息(包括密码)都未被加密。为了保障FTP传输数据的私密性,应尽可能使用强壮的加密系统。在[HL97]中定义了一个这样的机制。RFC2577FTPSecurityConsiderationsFTP安全考虑47.保护用户名当“USER”命令中的用户名被拒绝时,在FTP标准中[PR85]中定义了相应的返回码530。而当用户名是有效的但却需要密码,FTP将使用返回码331。为了避免恶意的客户利用USER操作返回的码确定一个用户名是否有效,建议服务器对USER命令始终返回331,然后拒绝对无效用户名合并用户名和密码。8.端口盗用许多操作系统以递增的顺序动态的分配端口号。通过合法的传输,攻击者能够观察当前由服务器端分配的端口号,并“猜”出下一个即将使用的端口号。攻击者可以与这个端口建立连接,然后就剥夺了下一个合法用户进行传输的能力。或者,攻击者可以盗取给合法用户的文件。另外,攻击者还可能在从授权用户发出的数据流中插入伪造的文件。通过使FTP客户和服务器随机的给数据连接分配端口号,或者要求操作系统随机分配端口