Linux下FTP服务器端软件三剑客Wu-ftpd、ProFTPD和Vsftpd。
Vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它使用安全编码技术解决了缓冲溢出问题,并能有效避免“globbing”类型的拒绝服务攻击。
1.启用tcp_wrappers进行访问控制
tcp_wrapper可以用来禁止(或者显式的允许)特定的主机对某些服务的访问。它的应用思路是“先阻止、后放行”,因此,策略是首先禁止所有主机访问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”的配置。
以下是一个例子:
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对别有用心的连接者很有用。
2.修改Vsftpd服务器的默认端口
基于安全考虑,将预设的21端口改为2123。修改配置文件 /etc/vsftpd/vsftpd.conf,在文件最后增加如下内容:
listen_port=2123
ftp_data_port=2020
在实际应用中,为了增加安全性,会将FTP服务器置于防火墙之后。修改Vsftpd服务器的默认端口后要及时修改防火墙的端口设定。现在服务器FTP端口为2123,数据传输端口为2020。
#iptables -A INPUT -p tcp -m multiport --dport 2123,2020 -j ACCEPT
#iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
3.取消匿名登录
在vsftpd.conf文件中找到“anonymous_enable”选项,将其值改为“NO”:
anonymous_enable=NO
4.限制普通用户可以访问的目录
一般情况下,使用者的预设目录为/home/username。若是不希望使用者在登录后能够切换至上一层目录/home,则可通过以下设置来实现。在/etc/vsftpd/vsftpd.conf文件中找到以下三行内容:
#chroot_list_enable=YES
#(default follows)
#chroot_list_file=/etc/vsftpd.chroot_list
将一、三行前的“#”符号去除。新增一个文件/etc/vsftpd/chroot_list,文件内容是用户名称:
caog
user1
5.配置文件/etc/vsftpd/vsftpd.conf的其他安全设定
从标准端口20触发连接:
connect_from_port_20=YES
设置用户会话的空闲中断时间,连接服务器的用户在10分钟时间内没有任何动作将被断开,默认为600:
idle_session_timeout=600
设置空闲的数据连接的中断时间,数据连接空闲2分钟将被断开,默认为120秒:
data_connection_timeout=120
关闭“ls -R”命令,该命令常被用于DoS攻击,非常浪费系统资源,但“mirror”镜像工具会用到它:
ls_recurse_enable=NO
关闭ASCII模式下载,防止被用于DoS攻击,ASCII下载很消耗CPU负担:
ascii_download_enable=NO
6.使用BlockHosts对抗暴力破解
Vsftpd服务器面临的另外一个威胁是攻击者采取暴力破解的方式获取用户密码而非法登录FTP服务器。 BlockHosts软件就是利用通过分析Vsftpd日志文件帮助tcp_wrappers实现工作自动化。例如在30秒钟内一个IP地址(192.168.1.23)连续20次登录Vsftpd服务器而且全部因为密码错误登录失败,那么这个IP地址无疑是非法或者恶意主机。这时,BlockHosts会自动将该IP地址写入/etc/hosts.deny文件。BlockHosts官方网站: http://www.aczoom.com/cms/blockhosts/,最新版本为2.4.0。