1.简介
文件传输协议规范(FTP)[PR85]提供了一种允许客户端建立FTP控制连接并在两台
FTP服务器间传输文件的机制。这种“代理FTP”机制可以用来减少网络的流量,客户端命
令一台服务器传输文件给另一台服务器,而不是从第一台服务器传输文件给客户端,然后从
客户端再传输给第二台服务器。当客户端连接到网络的速度特别慢时,这是非常有用的。但
同时,代理FTP还带来了一个安全问题——“跳转攻击(bounce attack)”[CERT97:27]。除
了“跳转攻击”,FTP服务器还可以被攻击者通过强力来猜测密码。
本文档并不考虑当FTP和一些强壮的安全协议(比如IP安全)联合使用的情况。虽然
这些安全关注并不在本文档的考虑范围内,但是它们也应该被写成文档。
本文给FTP服务器的实现者和系统管理员提供了一些信息,如下所示。第二章描述了
FTP“跳转攻击”。第三章提供了减少“跳转攻击”的建议。第四章给基于网络地址限制访
问的服务器提供了建议。第五章提供了限制客户端强力“猜测密码”的建议。接着,第六章
简单的讨论了改善保密性的机制。第七章给出了阻止猜测用户身份的机制。第八章讨论了端
口盗用。最后,第九章讨论了其它跟软件漏洞有关而跟协议本身无关的FTP安全问题。
2.跳转攻击(Bounce Attack)
RFC959[PR85]中规定的FTP规范提供了一种攻击知名网络服务器的一种方法,并且使
攻击者很难被跟踪。攻击者发送一个FTP"PORT"命令给目标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服务器然后再下
载到准备攻击的服务端口上。使用适当的文件保护措施就可以阻止这种情况发生。然而攻击
者也可能通过从远程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]中定义
了一个这样的机制。
7.保护用户名
当“USER”命令中的用户名被拒绝时,在FTP标准中[PR85]中定义了相应的返回码530。
而当用户名是有效的但却需要密码,FTP将使用返回码331。为了避免恶意的客户利用USER
操作返回的码确定一个用户名是否有效,建议服务器对USER命令始终返回331,然后拒绝
对无效用户名合并用户名和密码。
8.端口盗用
许多操作系统以递增的顺序动态的分配端口号。通过合法的传输,攻击者能够观察当前
由服务器端分配的端口号,并“猜”出下一个即将使用的端口号。攻击者可以与这个端口建
立连接,然后就剥夺了下一个合法用户进行传输的能力。或者,攻击者可以盗取给合法用户
的文件。另外,攻击者还可能在从授权用户发出的数据流中插入伪造的文件。通过使FTP
客户和服务器随机的给数据连接分配端口号,或者要求操作系统随机分配端口号,或者使用
与系统无关的机制都可以减少端口盗用的发生。
9.基于软件的安全问题
本文档的重点是和协议相关的安全问题。另外还有一些成文的FTP安全问题是由于不
完善的FTP实现造成的。虽然这种类型的问题的细节超出本文档的范围,还是有必要指出
以下那些过去曾被误用,今后的实现应该慎重考虑的FTP特性。
? 匿名FTP
匿名FTP服务使客户端用最少的证明连接到FTP服务器分享公共文件。如果这样的用
户能够读系统上所有的文件或者能建立文件,那么问题就产生了。[CERT92:09] [CERT93:06]
? 执行远程命令
FTP扩展命令"SITE EXEC"允许客户端执行服务器上任意的命令。这种特性显然需要非
常小心的实现。已经有几个成文的例子说明攻击者利用FTP“SITE EXEC”命令可以破坏服
务器的安全性。[CERT94:08] [CERT95:16]
? 调试代码
前面的一些跟FTP有关危及安全的问题是由于置入了调试特性的软件造成的。
[CERT88:01]
本文建议有这些功能的FTP服务器的实现者在发布软件之前参阅所有的CERT有关这
些问题的攻击以及类似机制的忠告。
10.结论
使用以上建议可以减少和FTP服务器有关的安全问题的发生,而不用删除其功能。
硬件维护1、储存设备的扩充
当资源不断扩展的时候,服务器就需要更多的内存和硬盘容量来储存这些资源。所以,内存和硬盘的扩充是很常见的。增加内存前需要认定与服务器原有的内存的兼容性,最好是同一品牌的规格的内存。如果是服务器专用的ECC内存,则必须选用相同的内存,普通的SDRAM内存与ECC内存在同一台服务器上使用很可能会引起统严重出错。在增加硬盘以前,需要认定服务器是否有空余的硬盘支架、硬盘接口和电源接口,还有主板是否支持这种容量的硬盘。尤其需要注意,防止买来了设备却无法使用。
2、设备的卸载和更换
卸载和更换设备时的问题不大,需要注意的是有许多品牌服务器机箱的设计比较特殊,需要特殊的工具或机关才能打开,在卸机箱盖的时候,需要仔细看说明书,不要强行拆卸。另外,必须在完全断电、服务器接地良好的情况下进行,即使是支持热插拔的设备也是如此,以防止静电对设备造成损坏。
3、除尘
尘土是服务器最大的杀手,因此需要定期给服务器除尘。对于服务器来说,灰尘甚至是致命的。除尘方法与普通PC除尘方法相同,尤其要注意的是电源的除尘。
软件维护
1、操作系统的维护
操作系统是服务器运行的软件基础,其重要性不言自明。多数服务器操作系统使用Windows NT或Windows 2000 Server作为操作系统,维护起来还是比较容易的。
在Windows NT或Windows 2000 Server打开事件查看器,在系统日志、安全日志和应用程序日志中查看有没有特别异常的记录。现在网上的黑客越来越多了,因此需要到微软的网站上下载最新的Service Pack(升级服务包)安装上,将安全漏洞及时补上。
2、网络服务的维护
网络服务有很多,如WWW服务、DNS服务、DHCP服务、SMTP服务、FTP服务等,随着服务器提供的服务越来越多,系统也容易混乱,此时可能需要重新设定各个服务的参数,使之正常运行。
3、数据库服务
数据库经过长期的运行,需要调整数据库性能,使之进入最优化状态。数据库中的数据是最重要的,这些数据库如果丢失,损失是巨大的,因此需要定期来备份数据库,以防万一。
4、用户数据
经过频繁使用,服务器可能存放了大量的数据。这些数据是非常宝贵的资源,所以需要加以整理,并刻成光盘永久保存起来,即使服务器有故障,也能恢复数据。
不可能在一篇文章中谈遍电脑安全问题,毕竟,市面上的已有许多这方面的书籍,不过,我倒是可以告诉你七个维护服务器安全的技巧。
技巧一:从基本做起
从基本做起是最保险的方式。你必须将服务器上含有机密数据的区域通通转换成NTFS格式;同理,防毒程序也必须按时更新。建议同时在服务器和桌面电脑上安装防毒软件。这些软件还应该设定成每天自动下载最新的病毒定义文件。另外,Exchange Server(邮件服务器)也应该安装防毒软件,这类软件可扫描所有寄进来的电子邮件,寻找被病毒感染的附件,若发现病毒,邮件马上会被隔离,减低使用者被感染的机会。
另一个保护网络的好方法是依员工上班时间来限定使用者登录网络的权限。例如,上白天班的员工不该有权限在三更半夜登录网络。
最后,存取网络上的任何数据皆须通过密码登录。强迫大家在设定密码时,必须混用大小写字母、数字和特殊字符。在Windows NT Server Resource Kit里就有这样的工具软件。你还应该设定定期更新密码,且密码长度不得少于八个字符。若你已经做了这些措施,但还是担心密码不安全,你可以试试从网络下载一些黑客工具,然后测试一下这些密码到底有多安全。
技巧二:保护备份
大多数人都没有意识到,备份本身就是一个巨大的安全漏洞,怎么说呢?试想,大多数的备份工作多在晚上10点或11点开始,依数据多寡,备份完成后大概也是夜半时分了。现在,想像一下,现在是凌晨四点,备份工作已经结束。有心人士正好可趁此时偷走备份磁盘,并在自己家中或是你竞争对手办公室里的服务器上恢复。不过,你可以阻止这种事情发生。首先,你可利用密码保护你的磁盘,若你的备份程序支持加密功能,你还可以将数据进行加密。其次,你可以将备份完成的时间定在你早上进办公室的时间,这样的话,即使有人半夜想溜进来偷走磁盘的话也无法了,因为磁盘正在使用中;如果窃贼强行把磁盘拿走,他一样无法读取那些损毁的数据。
技巧三:使用RAS的回拨功能
Windows NT最酷的功能之一就是支持服务器远端存取(RAS),不幸的是,RAS服务器对黑客来说实在太方便了,他们只需要一个电话号码、一点耐心,然后就能通过RAS进入主机。不过你可以采取一些方法来保护RAS服务器的安全。
你所采用的技术主要端赖于远端存取者的工作方式。如果远端用户经常是从家里或是固定的地方上网,建议你使用回拨功能,它允许远端用户登录后即挂断,然后RAS服务器会拨出预设的电话号码接通用户,因为此一电话号码已经预先在程序中了,黑客也就没有机会指定服务器回拨的号码了。
另一个办法是限定远端用户只能存取单一服务器。你可以将用户经常使用到的数据复制到RAS服务器的一个特殊共用点上,再将远端用户的登录限制在一台服务器上,而非整个网络。如此一来,即使黑客入侵主机,他们也只能在单一机器上作怪,间接达到减少破坏的程度。
最后还有一个技巧就是在RAS服务器上使用“另类”网络协议。很都以TCP/IP协议当作RAS协议。利用TCP/IP协议本身的性质与接受程度,如此选择相当合理,但是RAS还支持IPX/SPX和NetBEUI协议,如果你使用NetBEUI当作RAS协议,黑客若一时不察铁定会被搞得晕头转向。
技巧四:考虑工作站的安全问题
在服务器安全的文章里提及工作站安全感觉似乎不太搭边,但是,工作站正是进入服务器的大门,加强工作站的安全能够提高整体网络的安全性。对于初学者,建议在所有工作站上使用Windows 2000。Windows 2000是一个非常安全的操作系统,如果你没有Windows 2000,那至少使用Windows NT。如此你便能将工作站锁定,若没有权限,一般人将很难取得网络配置信息。
另一个技巧是限制使用者只能从特定工作站登录。还有一招是将工作站当作简易型的终端机(dumb terminal)或者说,智慧型的简易终端机。换言之,工作站上不会存有任何数据或软件,当你将电脑当作dumb terminal使用时,服务器必须执行Windows NT 终端服务程序,而且所有应用程序都只在服务器上运作,工作站只能被动接收并显示数据而已。这意味着工作站上只有安装最少的Windows版本,和一份微软Terminal Server Client。这种方法应该是最安全的网络设计方案。
技巧五:执行最新修补程序
微软内部有一组人力专门检查并修补安全漏洞,这些修补程序(补丁)有时会被收集成service pack(服务包)发布。服务包通常有两种不同版本:一个任何人都可以使用的40位的版本,另一个是只能在美国和加拿大发行的128位版本。128位的版本使用128位的加密算法,比40位的版本要安全得多。
一个服务包有时得等上好几个月才发行一次,但要是有严重点的漏洞被发现,你当然希望立即进行修补,不想苦等姗姗来迟的服务包。好在你并不需要等待,微软会定期将重要的修补程序发布在它的FTP站上,这些最新修补程序都尚未收录到最新一版的服务包里,我建议你经常去看看最新修补程序,记住,修补程序一定要按时间顺序来使用,若使用错乱的话,可能导致一些文件的版本错误,也可能造成Windows当机。
技巧六:颁布严格的安全政策
另一个提高安全性的方式就是制定一强有力的安全策略,确保每一个人都了解,并强制执行。若你使用Windows 2000 Server,你可以将部分权限授权给特定代理人,而无须将全部的网管权利交出。即使你核定代理人某些权限,你依然可县制其权限大小,例如无法开设新的使用者帐号,或改变权限等。
技巧七:防火墙,检查,再检查
最后一个技巧是仔细检查防火墙的设置。防火墙是网络规划中很重要的一部份,因为它能使公司电脑不受外界恶意破坏。
首先,不要公布非必要的IP地址。你至少要有一个对外的IP地址,所有的网络通讯都必须经由此地址。如果你还有DNS注册的Web服务器或是电子邮件服务器,这些IP地址也要穿过防火墙对外公布。但是,工作站和其他服务器的IP地址则必须隐藏。
你还可以查看所有的通讯端口,确定不常用的已经全数关闭。例如,TCP/IP port 80是用于HTTP流量,因此不能堵掉这个端口,也许port 81应该永远都用不着吧,所以就应该关掉。你可以在网络上查到每个端口的详细用途。
服务器安全问题是个大议题,你总不希望重要数据遭病毒/黑客损毁,或被人偷走做为不利你的用途,本文介绍了7个重要的安全检查关卡,你不妨试试看。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)