作者:孙杭华(盐城师范学院)                                          
E-mail: sunhanghua@126.com
如何实现安全的FTP服务<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

FTP 是一种文件传输协议。有时我们把他形象地叫做文件交流集中地FTP文件服务器的主要用途就是提供文件存储的空间,让用户可以上传或下载所需要的文件。在企业中,往往会给客户提供一个特定的FTP空间,以方便跟客户进行一些大型文件的交流。同时,FTP还可以作为企业文件的备份服务器,如数据库在FTP服务器上实现异地备份等。

可见,FTP服务器在企业中的应用是非常广泛的。真是因为其功能如此的强大,所以,很多***、病毒也开始关注他了。他们企图通过FTP服务器为跳板,作为他们传播***、病毒的源头。同时,由于FTP服务器上存储着企业不少有价值的内容。在经济利益的诱惑下,FTP服务器也就成为了别人***的对象。所以,FTP服务器的安全性工作也逐渐显得重要。

FTP 服务器首先是基于操作系统而运作的,因而操作系统本身的安全性就决定了FTP服务器安全性的级别。虽然Windows一样可以架设FTP服务器,但由于其本身的安全性就不强,易受***,最好采用像Unix或者是Linux 这样的安全性比较高的操作系统来架构FTP服务器。下面我就基于LinuxRed Hat 9.0)操作系统平台上用Vsftpd软件架构的FTP服务器,来谈谈如何实现安全的FTP服务。

一、控制访问FTP服务器的用户

在考虑FTP服务器安全性工作的时候,第一步要考虑的就是访问FTP服务器的用户。在Vsftpd服务器软件中,默认提供了三类用户。不同的用户对应着不同的权限与操作方式。一类是Real用户:这类用户在FTP服务上拥有最大的权限。当这类用户登录FTP服务器的时候,其默认的主目录就是其用户命名的目录。但是,其还可以变更到其他目录中去。如系统的主目录等等。一类是Guest用户:在FTP服务器中,我们往往会给不同的部门或某个特定的用户设置一个应用空间。但是,这个用户有个特点,就是其只能够访问自己的主目录。服务器通过这种方式来保障FTP服务上其他文件的安全性。这类用户,在Vsftpd软件中就叫做Guest用户。一类是Anonymous(匿名)用户:这也是我们通常所说的匿名访问。这类用户是指在FTP服务器中没有指定用户,但是其仍然可以进行匿名访问某些公开的资源。

在组建FTP服务器的时候,我们就需要根据用户的类型,对用户进行归类。默认情况下,Vsftpd服务器会把建立的所有用户都归属为Real用户。但是,这往往不符合企业安全的需要。因为这类用户不仅可以访问自己的主目录,而且,还可以访问其他用户的目录。这就给其他用户所在的空间带来一定的安全隐患。所以,企业要根据实际情况,修改用户所在的类别。

修改方法:

第一步:修改/etc/Vsftpd/vsftpd.conf文件。

默认情况下,只启用了RealAnonymous两类用户。若我们需要启用Guest类用户的时候,就需要把这个选项启用。修改/etc/Vsftpd/vsftpd.conf文件,把其中的“chroot_list_enable=YES”这项前面的注释符号去掉。去掉之后,系统就会自动启用Real类型的帐户。

第二步:修改/etc/vsftpd.conf文件。

若要把某个FTP服务器的用户归属为Guest用户,则就需要在这个文件中添加用户。通常情况下,FTP服务器上没有这个文件,需要用户手工创建。利用VI命令创建这个文件之后,就可以把已经建立的FTP用户加入到这个文件中。他们登录到FTP服务器后,只能够访问自己的主目录,而不能够更改主目录。

第三步:重新启动FTP服务器。

按照上述步骤配置完成后,需要重新启动FTP服务器,其配置才能够生效。我们可以重新启动服务器,也可以直接利用Restart命令来重新启动FTP服务。

在对用户尽心分类的时候,我有几个善意的提醒。一是尽量采用Guest类型的用户,而减少Real类型的用户。一般我们在建立FTP用户的时候,用户只需要访问自己的主目录下的文件即可。当给某个用户的权限过大时,会对其他用户文件的安全产生威胁。二是尽量不要采用匿名用户。因为他们在没有授权的情况下,就可以访问FTP服务器。虽然其访问的资源受到一定的限制,但是,仍然具有危险性。故在没有特殊需要的情况下,最好把匿名用户禁用掉。

二、禁止访问FTP服务器的账户

一是某些系统账户。如ROOT账户。这个账户默认情况下是Linux系统的管理员用户,其对系统具有最高的操作与管理权限。如果用这些帐号进行登陆的话,则用户不但可以访问Linux系统的所有资源,而且还好可以进行系统配置。这对于FTP服务器来说,显然危害很大。所以,往往不允许用户以Root等系统用户身份登陆到FTP服务器上来。

二是一些临时账户。有时候我们出于临时需要,为开一些临时账户。这些账户用完之后,一般就加入到了黑名单。等到下次需要再次用到的时候再启用他。在vstftpd服务器中,要把某些用户加入到黑名单,也非常的简单。在Vsftpd软件中,有一个/etc/vsftpd.user_lise配置文件。这个文件就是用来指定哪些账户不能够登陆到这个服务器。我们利用vi命令查看这个文件,通常情况下,一些系统账户已经加入到了这个黑名单中。FTP服务器管理员要及时的把一些临时的或者不再使用的帐户加入到这个黑名单中。从而才可以保证未经授权的账户访问FTP服务器。在配置后,往往不需要重新启动FTP服务,配置就会生效。

不过,一般情况下,不会影响当前会话。也就是说,管理员在管理FTP服务器的时候,发现有一个非法账户登陆到了FTP服务器。此时,管理员马上把这个账户拉入黑名单。但是,因为这个账户已经连接到FTP服务器上,所以,其当前的会话不会受到影响。若要及时地把该账户禁用掉的话,就需要在设置好黑名单后,手工的关掉当前的会话。

对于一些以后不再需要使用的帐户时,管理员不需要把他加入黑名单,而是直接删除用户为好。同时,在删除用户的时候,要记得把用户对应的主目录也一并删除。不然主目录越来越多,会增加管理员管理的工作量。在黑名单中,只保留那些将来可能利用的账户或者不是用作FTP服务器登陆的账户。这不但可以减少服务器管理的工作量,而且,还可以提高FTP服务器的安全性。

三、控制访问FTP服务器的权限

在系统默认配置下,匿名类型的用户只可以下载文件,而不能够上传文件。虽然这不是我们推荐的配置,但是,有时候出于一些特殊的需要,确实要开启这个功能。如笔者以前在企业中,利用这个功能实现了对用户终端文件进行备份的功能。为了设置的方便,就在FTP服务器上开启了匿名访问,并且允许匿名访问账户网某个特定的文件夹中上传某个文件。

若要让匿名用户上传文件,则首先要建立一个目录,并且把这个目录指定为匿名用户具有更新的权限。以后匿名用户需要上传文件的时候,只能向这个文件夹中传,而不能向他用户的文件夹中上传文件。

文件目录设置好之后,再修改/etc/vsftpd/vsftpd.conf配置文件。把这个文件下的有关匿名账户的功能启用。默认情况下,跟匿名账户相关的功能,如更新、增加目录等功能都是被注释掉的。管理员需要把这个注释符号去掉,匿名账户才能向特定的账户中上传文件。

我再次重申一遍,一般情况下,是不建议用户开启匿名账户的文件上传功能。因为很难保证使用匿名账户的用户上传的文件中不含有一些破坏性的程序,如病毒或者***等等。有时候,虽然开启了这个功能,但是往往会在IP上进行限制。如只允许企业内部IP可以进行匿名访问并上传文件,其他IP则不行。这样的话,可以防止外部用户未经授权匿名访问企业的FTP服务器。若用户具有合法的账户,就可以在外网中登陆到FTP服务器上。

总之,在FTP服务器安全管理上,主要关注三个方面的问题。一是未经授权的用户不能访问FTP服务器;二是不允许系统账户访问FTP服务器;三是控制访问FTP服务器用户的权限。如果能够灵活地采用如上的方法,则一定可以提高FTP服务器的安全性。