【IT168 专稿】上篇文章中(点击阅读),介绍了Vsftpd服务器的配置及其管理,本文介绍其安全策略。
vsftpd服务器的安全策略
1. 为vsftpd服务器配置SSL
在VSFTPD-2.0.1以后的版本里提供了对SSL套接层的支持,这使得vsftpd变的更加安全了。要实现ftp的安全连接有几个必须的前提是OPENSSL版本必须大于0.9.6,你可以用openssl加密你的vsftpd服务器登录及传输过程。方法是修改builddefs.h文件中的:
#undef VSF_BUILD_TCPWRAPPERS
#define VSF_BUILD_PAM
#undef VSF_BUILD_SSL
为:
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL
然后编译即可。
2. 启用tcp_wrappers进行访问控制
tcp_wrapper是这样一套基本系统,它可以用来禁止(或者显式的允许)特定的主机对某些服务的访问。简单的说,它的工作原理是这样的:inetd或xinetd运行很多的服务,其中很多都是由tcpd包装好的。换句话说,tcpd是真正运行这些服务的程序,但是xinetd不知道这些(其实它根本不关心)。tcpd根据/etc/hosts.allow和/etc/hosts.deny来判断是否允许传来的连接请求。tcp_wrapper工作原理见图5。
图5 tcp_wrapper工作原理 |
这里tcp_wrappers的应用思路是“先阻止、后放行”。因此策略是首先禁止所有主机访问FTP服务器(在/etc/hosts.deny文件中设定),然后在/etc/hosts.allow中加入允许访问的主机或IP地址列表,这是最安全的访问策略。使用这项功能需要在安装编译之前构建包含tcp_wrappers的vsftpd。可通过编辑“builddefs.h”文件,将“#undef VSF_BUILD_TCPWRAPPERS”修改为“#define VSF_BUILD_TCPWRAPPERS”,然后重新构建编译,生成可执行代码。其次,要开启在配置文件vsftpd.conf中的选项“tcp_wrappers=YES”。该功能依赖于对文件“/etc/hosts.allow”的配置。tcp_wrapper位于Vsftpd和iptables防火墙之间。如图6 。
图6 tcp_wrapper位于Vsftpd和iptables防火墙之间 |
以下是一个例子:
vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.conf
vsftpd: 192.168.1.4: DENY
其中,第一行表示如果一个客户端从192.168.1.3连接,那么vsftpd将应用“/etc/vsftpd_tcp_wrap.conf”的vsftpd配置文件给该连接。这些设置被应用在默认的vsftpd.conf之前。这一点十分有用,可用它为一些IP应用不同的访问限制(例如上传的能力);还可以指定某些IP有能力来超越连接限制(max_clients=0);或者为某些IP增减带宽限制。第二行表示拒绝192.168.1.4连接的能力。tcp_wrappers对别有用心的连接者很有用。
给连接服务的客户发送一幅警戒性横幅是掩盖运行服务的系统的好办法,同时,它也让潜在的攻击者知道系统管理员是相当警惕的。要为某服务实现 TCP 会绕程序横幅,请使用 banner 选项。 这个例子为 vsftpd 实现了一个横幅。首先,创建一个横幅文件。它可以位于系统上的任何地方,但是它的名称必须和守护进程相同。在这个例子中,该文件叫做 /etc/banners/vsftpd。该文件的内容如下所示:
220-Hello, %c
220-All activity on ftp.example.com is logged.
220-Act up and you will be banned.
%c 代符提供了各类客户信息,如用户名和主机名,或用户名和 IP 地址,从而使连接更令人生畏。要把这个横幅展示给每个进入连接,把以下行添加到 /etc/hosts.allow 文件中:
vsftpd : ALL : banners /etc/banners/