安全技巧:保护企业FTP安全的最佳实践

虽然各种威胁在持续发展演变,但是文件传输协议(通常称为FTP)基本上还是跟几年前一样,而且还在大范围的使用。

FTP主要用来传输大文件,它就是为了这个目的设计的。FTP是一种客户端服务器(主从模式)协议,它使用控制和数据两条通道进行文件传输。控制通道用来进行身份认证,并给服务器发送命令。该协议本身不支持加密,因此,在控制通道中发送的所有流量都是直接发送的,或者说是未加密的,这是该协议的弱点之一。在企业中,FTP服务通常被用来处理那些不敏感的内容,而且跟其他敏感信息系统都是完全隔离的。人们还得保证FTP服务能够及时更新。配置错误的以及结构不合理的FTP服务可能会成为企业中重要的安全漏洞。

企业确保关键FTP安全的最佳做法是什么?FTP安全状况达到可以传输敏感数据的地步了吗,或者说有什么好的方法可以让FTP更安全?如果FTP还不够安全,不足以用来传输敏感数据,那么有哪些协议可以替代它呢?我们会在本文中回答这些问题。

FTP无处不在,这一点不可否认。就像其他广泛使用的技术一样,FTP也开始成为攻击者易于攻击的目标。这么多年来,攻击者已经有了许多使用FTP以及利用FTP漏洞的经验。有关FTP服务安全性的讨论很激烈,一般来说,人们没有就哪种方法能最好地保护FTP安全达成共识。主要是由于商业需要,才让这项服务继续存在,而没有使用其他更加安全的替代产品。对我来说,任何使用或者考虑使用FTP的企业都应该先问自己以下三个问题:

a.我们真的需要FTP吗?
b.我们怎样才能安全地设置FTP(我将会解释这个自相矛盾的情况)?
c.有没有既安全又容易使用的FTP替代产品?

第一问题很有趣。从技术上讲,答案是否定的。其实市面上有许多更加安全的其他技术,我们将在后面讨论。然而,实际的答案却是肯定的,因为FTP应用非常广泛,而且具有跨平台的支持性,大多数企业都被迫选择支持FTP。

我花了相当多的时间对过滤设备(即防火墙)上的FTP连接进行故障排除,了解到FTP的控制和数据通道设计不是很适合在数据包穿越多个不同的网络设备环境中使用。给你们举个例子,初始化一个网络代理后面的公司网络以及负载均衡环境中服务器之间的FTP会话,并不是那么简单的故障排除工作。

正如我先前提到的,FTP是一个客户端服务器协议,使用单独的控制和数据通道进行文件传输。控制通道用来进行身份认证,并给服务器发送命令。这种身份认证机制比较脆弱,因为认证信息没有经过加密就直接发送到服务器,使得这种网络传输很容易被窃听。在一般的FTP实施过程中,一些典型的安全漏洞让这个问题更加复杂化。

尽管FTP存在安全弊端,但是许多企业还是选择它进行大容量的数据传输。大多数工作站、应用程序,甚至网络过滤设备都内置了对FTP的支持。其他产品可能会更加安全,但是它们还是无法与FTP的便利性和低成本相抗衡。

让我们暂且假设FTP是唯一的选择。那么,我们可以来仔细研究几种能够让这项服务达到一定安全性的方法。我先从网络设计阶段开始,我们可以把FTP服务限制在专用虚拟局域网网段上。这一般需要从你的交换机、路由器或者防火墙设备中分出一个单独的专用网段来管理FTP服务。这种做法有多方面的目的。不仅能使你专门使用防火墙的一部分来防护这个网段,并进行渐进政策(控制源IP)控制和简化故障排除(主动/被动连接);而且会给你提供一个阻塞点(choke point),从而监视和使用网络安全设备,比如IDS或者IPS。在这种情况下,阻塞点方法可以非常方便的进行监测和预防,你能够监视利用FTP服务(比如IDS)相关漏洞而发起的攻击,或者主动拦截利用IPS对FTP服务的攻击等。

下一步,我们需要侧重于让管理FTP的服务器本身变得更为强大(尽管我在上文中提到首先要进行网络设计,但是我不建议在所有的安全强化步骤完成之后才对服务器进行处理)。我建议大家不仅仅要考虑应用最新补丁,按照因特网安全中心(CIS)的标准来设置服务器,还要考虑更多的东西。当受到攻击的时候,FTP服务往往会引起严重的附加损失。这是因为,在许多情况下,FTP服务是具有高优先级的过程(比如,作为根用户),如果被攻击者成功利用的话,攻击者会得到系统级的权限。

在服务器上隔离FTP服务,可以很大程度的防止这种漏洞利用攻击。这与基于网络的隔离有所不同,这种隔离是通过处理服务的硬件实现的。FTP隔离可以通过在虚拟环境(开源Xen系统管理程序)中运行FTP服务或者改变根目录(chroot)来实现。在改变根目录这种方法中,管理员能够在处理过程中改变磁盘根目录,这基本上限制了超出自身限制范围的操作以及访问文件系统敏感区域的能力。改变根目录可以用几种方法实现;有些例子用“/etc/ftpchroot”为特定用户确定一个chroot环境,有些则使用“ftp-chroot”登录类。这两种方法都建议FTP后台程序在ls支持下重新编译,所以没有特殊的依赖关系。

最后,目前有一种易于安全维护的FTP替代品,叫做Secure Shell(SSH)。与FTP不一样,SSH以加密的形式发送所有内容。SSH使用加密的传输服务,并且把一个文件传输代理放在最高层,避免了FTP服务普遍的安全缺陷和复杂性。为了简单起见,我认为SCP(主要是文件传输)、SFTP(运行在SSH上面的、全新的文件传输协议)和以SSH为通道的FTP会话,每种服务都使用了SSH,它们都可以作为FTP可以接受的、更加安全的替代品。在这个分类中比较奇怪的是FTPS(SSL上的FTP)。说实话,我认为FTPS作为 FTP替代品不可行,因为它与防火墙不兼容。使用更加安全的协议需要进行服务隔离,并且要采取适当的服务器安全强化步骤。

FTP另外一个有趣的替代品可能就是数字内容传输服务了,它能够提供安全的文件传输,又能简化管理。它往往是基于云的服务,其中包括文件跟踪、传输通知、流程集成工具以及可编写脚本的API等功能。虽然这些服务原本是为了数字内容的传输而设计的,但我想它们也可以为企业提供好的文件传输服务。

FTP是一个敏感的话题。有些用户喜欢它的便利性,但是总的来讲,网络和安全团队并没有被这一点所迷惑。人们能够指出FTP的多项缺点,并且指出可以替代它的解决方法。有许多方法可以与FTP共存,但如果你的企业更适合使用像SSH这样更加安全的产品,我强烈建议您用它取代FTP。