vsftp 虚拟用户配置 [深入探讨CentOS,FTP服务(vsftp)虚拟用户配置]
摘要:Vsftpd是CentOS操作系统下最常用的FTP服务器配置软件,配置FTP服务器是通过修改配置文件vsftpd.conf来实现的。该文将对FTP服务器虚拟用户配置部分进行详细叙述,通过学习读者可以在CentOS操作系统上配置安全级别更高的虚拟用户FTP服务器。
关键词:CentOS;vsftpd;FTP服务器;虚拟用户
中图分类号:TP311文献标识码:A文章编号:1009-3044(2012)20-4860-03
Vsftp(Very Secure FTP)是一种在Unix/Linux中最常用且非常安全快速稳定的FTP服务器,目前为许多大型站点所采用。一般情况下,访问FTP服务器时都需要经过验证,只有经过FTP服务器的验证,用户才能进行访问和传输文件等操作,Vsftpd提供三种验证登录方式,分别是匿名用户、本地用户、虚拟用户:
①匿名用户(anonymous):在默认情况下,系统只提供匿名用户访问。
②本地用户(local user):又称为真实账号,本身就是系统用户,它是以真实的用户名和口令进行登录,以/etc/passwd中的用户名进行验证,本地用户既可以登录FTP服务器,又可以登录系统使用其他系统资源,对系统安全有极大的威胁,所以应尽量避免用户使用本地账号访问FTP服务器。
③虚拟用户(guest)形式:Vsftpd虚拟用户与系统账号(passwd/shadow)是分离的,采用单独的用户名/口令方式进行保存,通过这样的处理来提高系统的安全。Vsftpd用户验证采用PAM方式,由于用户名/口令被单独保存,因此实际验证时Vsftpd需要用一个本地用户的身份读取数据库文件来完成验证,通常由guest_username选项指定本地用户,正如同匿名用户也需要有一个本地用户ftp来映射一样。
相对于本地用户来说,虚拟用户只能访问FTP服务器所提供的资源,这大大增强了系统安全性。相对于匿名用户而言,虚拟用户需要验证用户名和密码,同时增加了对用户访问权限的可管理性。对于需要提供FTP服务,又要考虑主机安全和管理方便的系统来说,采用虚拟用户方式是最适合的。
该文就Vsftpd采用数据库文件来保存用户名/口令,详细描述虚拟用户访问配置。配置过程分为以下几大部分:虚拟用户配置、vsftpd.conf文件设置以及虚拟用户权限配置。
1虚拟用户配置
1)建立一个系统用户
useradd -d /home/virtualuser -s /sbin/nologin virtualuser通过执行命令向系统中添加用户virtualuser,作为虚拟用户在系统中的代表,负责读取虚拟用户认证数据库文件,这个用户并不是用来登录FTP的。参数-d /home/virtualuser指定用户virtualuser的根目录为/home/virtualuser。如果想要让虚拟用户登录到其他目录,修改virtualuser的根目录即可。参数-s /sbin/nologin是禁止用户virtual user在本地登陆,这样可提高系统安全。
2)创建用户密码文件login.txt,# vi /home/login.txt
Xiaochen奇数行是虚拟用户登录名
12345偶数行是口令
xiaoli
54321
3)建立数据库文件并设置文件属性
# db_load -T -t hash -f /home/login.txt /etc/vsftpd/vsftpd_login.db
# chmod 600 /etc/vsftpd/vsftpd_login.db
db_load命令生成一个hash码型的数据库文件,将用户信息文件login.txt转换为数据库vsftpd_login.db并使用hash加密。执行时如果出现提示命令不存在,可通过yum install db4 db4-utils先安装db4软件包
4)编辑PAM认证文件vi /etc/pam.d/ftp插入如下两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
2 vsftpd.conf基本设置
在vsftpd.conf配置文件中,加入以下参数:
local_enable=YES设定为NO的情况下(本地用户禁止访问)导致虚拟用户将无法访问。guest_enable=YES启用虚拟用户登录功能
guest_username= virtualuser虚拟用户登录后,其宿主用户为virtualuser
pam_service_name=ftp指定PAM认证文件/etc/pam.d/ftp
virtual_use_local_privs=NO
为了提高系统安全,我们应该首先设置FTP宿主目录/home/virtualuser属性与权限:# chown virtualuser:virtualuser /home/virtualuser设置virtualuser目录的拥有者、组。
# chmod 700 /home/virtualuser将目录/home/virtualuser的权限设为拥有者可读写执行;
当virtual_use_local_privs= YES时,虚拟用户的权限与本地用户相同,此时只需设置write_enable=YES,虚拟用户就可以和本地用户一样就拥有写权限。
默认情况下virtual_use_local_privs取值为NO,此时虚拟用户的权限与匿名用户权限相同,可参考匿名用户的配置对虚拟用户的访问权限进行配置,举例如下: