深入探讨CentOS FTP服务(vsftp)虚拟用户配置
2012-04-29吴桂斌
吴桂斌
摘要: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,此时虚拟用户的权限与匿名用户权限相同,可参考匿名用户的配置对虚拟用户的访问权限进行配置,举例如下:
①控制虚拟用户不能浏览目录但仍可以对文件进行操作
anon_world_readable_only=YES
②允许虚拟用户上传文件
write_enable=YES全局性设置,打开写权限
anon_upload_enable=YES
③允许虚拟用户修改文件名和删除文件(write_enable=YES)
anon_other_write_enable=YES
④允许匿名用户创建目录(write_enable=YES)
anon_mkdir_write_enable=YES
考虑到以上选项的设置对匿名用户也同样会生效。配置时一定要慎之又慎,如果不想匿名用户趁机拥有同样的权限,配置时最好关闭匿名用户登录功能。
为了提高系统安全,我们还应将本地用户限定在自家目录中,但在默认配置中,本地用户可以切换到自家目录以外的目录进行浏览,并在权限范围内进行上传和下载,这无疑是个不安全因素。读者可以通过配置chroot相关参数,限定本地用户对其他目录的访问。将用户限制在自家目录通常有以下两种做法:
①限制所有的本地用户在自家目录
chroot_local_user=YES系统默认值为NO②限制部分本地用户在自家目录
chroot_local_user=NO默认值可以不用设置
chroot_list_enable=YES用于启用chroot_list_file配置项指定的用户列表文件
chroot_list_file=/etc/vsftpd.chroot_list用户列表文件,用于控制用户切换到其他目录接着创建/etc/vsftpd.chroot_list文件,加入禁止切换到自家目录以外的用户名,例如virtualuser。
3虚拟用户权限配置(virtual_use_local_privs=NO)
如果想让每一位虚拟用户都拥有自己个性化的配置,在主配置文件中加入:
user_config_dir=/etc/vsftpd/vsftpd_user_conf指定虚拟用户个人配置文件存放路径。
创建目录mkdir /etc/vsftpd/vsftpd_user_conf,在该目录下创建与特定虚拟用户同名的文件:
# touch xiaochen在/etc/vsftpd/vsftpd_user_conf目录中建立虚拟用户的个人配置文件xiaochen,然后在文件中就可以针对xiao chen用户进行个性化配置。
write_enable=YES可写
anon_umask=022掩码
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
通过上述的文件配置,如果完全正常的话就可以顺利登录并进行测试,但是细心的读者会发现无论哪个虚拟用户,登录以后所在的目录都是/home/virtualuser,只是每个人所拥有的权限不同而已。如果要为每个虚拟用户建立自家目录,可在虚拟用户的个人配置文件中使用local_root选项来指定虚拟用户的自家目录。我们以虚拟用户xiaochen为例进行配置,编辑/etc/vsftpd/vsftpd_user_conf/ xiaochen文件,加入local_root=/home/xiaochen同时新建xiaochen的主目录,并将目录宿主设为virtualuser:
# mkdir xiaochen
# chown virtualuser:virtualuser ./xiaochen
4结束语
为了验证虚拟用户FTP配置的正确性,以上配置在CentOS 5.5操作系统下实施,测试结果与文章所说的各方面基本符合,读者通过以上对FTP虚拟用户配置的学习,也同样可以根据用户访问需求来配置高安全级别的FTP服务器。
参考文献:
[1]万明,邢利荣,何晓龙.完美应用红帽企业版Linux[M].北京:电子工业出版社,2011.
[2]丰士昌.Fedora系统与网络服务管理完全学习手册[M].北京:科学出版社,2010.
[3]王庆伟周保英王黎编著Fedora Core6完全学习手册[M].北京:清华大学出版社,2008.