【IT168 专稿】Vsftpd,Vsftpd中Vs的意思是“Very secure”。从名称可以看出,软件的编写者非常注重其安全性。据官方网站的数据,一台Vsftpd服务器最多可以支持1500个并发用户。24小时可以保存2.6TB数据。Vsftpd的功能和特点如下:
Vsftpd是一个安全、高速、稳定的FTP服务器。
可设定多个基于IP的虚拟FTP Server。
设定匿名FTP服务器更是十分容易。
匿名FTP的根目录不需要任何特殊的目录结构、系统程序或其他系统文件。
不执行任何外部程序,从而减少了安全隐患。
支持虚拟用户,且支持每个虚拟用户具有独立的配置。
可以设置为从xinetd启动,或者是独立FTP服务器两种运行方式。
支持PAM或xinetd / tcp_wrappers的认证方式。
支持带宽限制。
Vsftpd的最新版本为2.0.3,可到网站http://vsftpd.beasts.org/下载。
vsftpd服务器面临的安全隐患
vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、xinetd操作模式、强大的单用户设置能力及带宽限流等。在安全方面,它从原理上修补了大多数Wu-FTP、ProFTP,乃至BSD-FTP的安装缺陷,使用安全编码技术解决了缓冲溢出问题,并能有效避免“globbing”类型的拒绝服务攻击。不过vsftpd服务器作为FTP协议类型的服务仍然面临一些安全隐患,主要包括:缓冲区溢出攻击(Buffer Overflow)、数据嗅探和匿名访问缺陷以及用户口令暴力破解。
1、缓冲区溢出攻击
长期以来,缓冲区溢出已经成为计算机系统的一个问题。利用计算机缓冲区溢出漏洞进行攻击的最著名的案例是莫里斯蠕虫,发生在1988年11月。但即使其危害人所共知,缓冲区溢出仍然是现在入侵的一个重要手段。缓冲区溢出的概念:缓冲区溢出好比是将十公斤货物放进一个只能装武公斤的容器里。缓冲区溢出漏洞是一个困扰了安全专家30多年的难题。简单来说,它是由于编程机制而导致的、在软件中出现的内存错误。这样的内存错误使得黑客可以运行一段恶意代码来破坏系统正常地运行,甚至获得整个系统的控制权。
2、数据嗅探
FTP是传统的网络服务程序,在本质上是不安全的,因为它们在网络上用明文传送口令和数据,别有用心的人非常容易就可以截获这些口令和数据。而且,这些服务程序的安全验证方式也是有其弱点的,就是很容易受到“中间人”(man-in-the-middle)这种方式的攻击。所谓“中间人”的攻击方式,就是“中间人”冒充真正的服务器接收你传给服务器的数据,然后再冒充你把数据传给真正的服务器。服务器和你之间的数据传送被“中间人”转手后做了手脚之后,就会出现很严重的问题。 截获这些口令的方式主要为暴力破解。另外使用sniffer程序监视网络封包捕捉FTP开始的会话信息,便可顺手截获root密码。
3. 匿名访问缺陷
匿名访问方式在FTP服务当中被广泛的支持,但是由于匿名FTP不需要真正的身份验证,因此很容易为入侵者提供一个访问通道,配合缓冲区溢出攻击,会造成很严重的后果。
例如,Linux下第一个病毒:Ramen蠕虫就是利用匿名访问和缓冲区溢出攻击对著名的wu—ftpd服务器造成了极大的威胁。
4. 口令暴力破解
vsftpd服务面临的另外一个威胁是黑客采取暴力破解的方式获取合法用户密码而非法登录vsftpd服务器。例如在60秒钟内一个IP地址(192.168.1.23)连续20次登录服务器而且全部因为密码错误登录失败。那么这个IP地址无疑是非法或者恶意主机。它在不停猜测口令。
安装安装FTP服务器
目前几乎所有Linux发行版本都确省用vsftpd,如果在安装系统时没有选择安装FTP服务器,可以通过RHEL 4.0中的“添加/删除应用程序”工具进行安装。具体方法是:选择“主选单”—“系统设置”—“添加/删除应用程序”,在弹出的界面中选中FTP服务器,单击“更新”即可。
1.vsftpd安装启动
如果无法确认是否安装了该软件,可以使用以下命令查看:
#rpm -qa|grep vsftpd
vsftpd-1.1.3-8
启动FTP服务器,套用RHEL 4.0的预设范例直接启动Vsftpd。
# /sbin/service vsftpd start
vsftpd启动vsftpd: [确定]
2.了解Vsftpd配置文件结构
Vsftpd服务器的文件结构如表1所示。
表1 Vsftpd服务器的文件结构 |
此外,还有一些说明文档和手册文件。
3.了解vsftpd配置文件中的安全选项
Vsftpd的主配置文件/etc/vsftpd/vsftpd.conf是个文本文件。以“#”字符开始的行是注释行。每个选项设置为一行,格式为“option=value”,注意“=”号两边不能留空白符。除了这个主配置文件外,还可以给特定用户设定个人配置文件。Vsftpd包中所带的vsftpd.conf比较复杂。这里介绍一下和安全相关的设置,以使得Vsftpd更加实用。
(1)用户登录控制
① pam_service_name=vsftpd
指出Vsftpd进行PAM认证时所使用的PAM配置文件名,默认值是vsftpd,默认PAM配置文件是/etc/pam.d/vsftpd。
② /etc/vsftpd.ftpusers
Vsftpd禁止列在此文件中的用户登录FTP服务器。这个机制是在/etc/pam.d/vsftpd中默认设置的。
③ userlist_enable=YES|NO
此选项被激活后,Vsftpd将读取userlist_file参数所指定的文件中的用户列表。当列表中的用户登录FTP服务器时,该用户在提示输入密码之前就被禁止了。即该用户名输入后,Vsftpd查到该用户名在列表中,Vsftpd就直接禁止掉该用户,不会再进行询问密码等后续步聚。默认值为NO。
④ userlist_file=/etc/vsftpd.user_list
指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpd.user_list。
⑤ userlist_deny=YES|NO
决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable 选项启动后才生效。YES,默认值,禁止文件中的用户登录,同时也不向这些用户发出输入口令的提示。NO,只允许在文件中的用户登录FTP服务器。
⑥ tcp_wrappers=YES|NO
在Vsftpd中使用tcp_wrappers远程访问控制机制,默认值为YES。
(2)目录访问控制
① chroot_list_enable=YES|NO
锁定某些用户在自家目录中。即当这些用户登录后,不可以转到系统的其他目录,只能在自家目录(及其子目录)下。具体的用户在chroot_list_file参数所指定的文件中列出。默认值为NO。
② chroot_list_file=/etc/vsftpd/chroot_list
指出被锁定在自家目录中的用户的列表文件。文件格式为一行一用户。通常该文件是/etc/vsftpd/ chroot_list。此选项默认不设置。
③ chroot_local_users=YES|NO
将本地用户锁定在自家目录中。当此项被激活时,chroot_list_enable和chroot_local_users参数的作用将发生变化,chroot_list_file所指定文件中的用户将不被锁定在自家目录。本参数被激活后,可能带来安全上的冲突,特别是当用户拥有上传、shell访问等权限时。因此,只有在确实了解的情况下,才可以打开此参数。默认值为NO。
④ passwd_chroot_enable
当此选项激活时,与chroot_local_user选项配合,chroot()容器的位置可以在每个用户的基础上指定。每个用户的容器来源于/etc/passwd中每个用户的自家目录字段。默认值为NO。
(3)文件操作控制
① hide_ids=YES|NO
是否隐藏文件的所有者和组信息。YES,当用户使用“ls –al”之类的指令时,在目录列表中所有文件的拥有者和组信息都显示为ftp。默认值为NO。
② ls_recurse_enable=YES|NO
YES,允许使用“ls –R”指令。这个选项有一个小的安全风险,因为在一个大型FTP站点的根目录下使用“ls –R”会消耗大量系统资源。默认值为NO。
③ write_enable=YES|NO
控制是否允许使用任何可以修改文件系统的FTP的指令,比如STOR, DELE, RNFR, RNTO, MKD, RMD, APPE和SITE。默认值为NO,不过自带的简单配置文件中打开了该选项。
④ secure_chroot_dir=
此选项指向一个空目录,并且ftp用户对此目录无写权限。当Vsftpd不需要访问文件系统时,这个目录将被作为一个安全的容器,用户将被限制在此目录中。默认目录为/usr/share/empty。
(4)新增文件权限设定
① anon_umask=
匿名用户新增文件的umask 数值。默认值为077。
② file_open_mode=
上传档案的权限,与chmod 所使用的数值相同。如果希望上传的文件可以执行,设此值为0777。默认值为0666。
③ local_umask=
本地用户新增档案时的umask 数值。默认值为077。不过,其他大多数的FTP服务器都是使用022。如果你的用户希望的话,可以修改为022。在自带的配置文件中此项就设为了022。
通过Web浏览器管理Vsftpd服务器
因为Vsftpd可设定的功能太多了,初学者不太可能完全背下所有功能及相关的设定。CP+便是一套以GTK+发展起来的,帮助管理员在KDE、GNOME环境下通过Web方式进行设定工作。通过CP+管理员可以进行FTP账号管理、文件传输动作的实时监控,还可以直接查看系统登入成功及失败的次数,提前了解是否有人正在对系统进行攻击动作。当然也可以进行FTP服务器的服务启动、停止动作,也可以直接修改设定文件,或是决定系统重新启动的时间。几乎所有与FTP相关的功能,都能使用CP+直接进行,不必再担心看不懂配置的内容了。
1.下载安装
#Wget http://cpplus.psoft.net/cgi-bin/get_cpplus.cgi
2.系统要求
硬件:中央处理器,兼容Intel X86处理器PentiumII 400以上,64M(推荐128M)内存,150M以上硬盘空间,显示内存4M。软件:内核版本基于2.4或以上,GNOME 1.2以上,桌面分辨率至少为640×480,桌面颜色至少65 000色(16位元)。
3.安装前的准备工作
安装过程中需要编译,因此需要perl(5.0以上)和Qt(2.0以上)、GTK支持,所以要使用RPM来确认:
rpm -qa | grep perl;rpm -qa | grep qt;rpm -qa | grep gtk
4.命令行下安装软件
gunzip cpplus-3.1.1.tar.gz
tar vxf cpplus-3.1.1.tar
cd cpplus
./setup.sh
安装过程需要回答一些问题通常默认即可。如图1所示。
图1 CP+配置界面 |
5.运行软件
打开一个浏览器http://IP:100002, CP+登录界面如图2 。
图2 CP+登录界面 |
说明:请使用admin用户名称和root用户口令登录。下面通过在线注册即可进入CP+管理Vsftpd服务器的配置界面如图3 。
图3 CP+管理Vsftpd服务器的配置界面 |
这里我们主要关注安全选项,如图4所示。
图4 CP+的Vsftpd配置界面 |
CP+的Vsftpd安全选项可以部分加固Vsftpd服务器。
在下篇文章中,笔者继续介绍vsftpd服务器的安全策略,敬请关注。(点击阅读)