vsftp有多种登录方式:包括匿名登录方式、本地系统用户登录方式和虚拟用户登录,此文将介绍第三种更为安全的登录方式——>虚拟用户登录方式。
虚拟用户特点:
1、只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。
2、可以建立多个虚拟用户,设置各自的密码,并且根据其用途设置相应的配置,能适应多种情况。
虚拟用户原理:
以本地系统用户为宿主(一般是不能登录系统的本地用户),然后通过虚拟用户和本地系统用户建立映射关系,实现虚拟用户登录FTP服务功能。
一、实验环境:
操作系统: CentOS Linux release 7.2.1511 (Core)
CPU构架:x86_64
Vsftpd版本:vsftpd-3.0.2-22.el7
二、安装准备:
2.1 关闭SELINUX:
SELINUX为Linux提供安全强化同时,也让Linux服务安装变得更复杂。未正确的为相关服务配置SELINUX,将导致服务无法正常运行。所以对于初学者来说,建议关闭SELINUX。
永久关闭(需要重启):
[root@node4 ~]#vim /etc/selinux/config SELINUX=disable
临时关闭:
[root@node4 ~]#setenforce 0
三、安装vsftpd服务:
3.1 使用安装yum安装vsftpd:
[root@node4 ~]#yum -y install vsftpd
3.2 备份vsftpd主配置文件:
[root@node4 ~]#cp /etc/vsftpd/vsftpd.conf{,.bak}
四、配置虚拟用户访问的vsftpd服务:
4.1 创建虚拟用户密码文件,奇数行为用户名,偶数行为密码:
[root@node4 ~]#vim /etc/vsftpd/vir_user
user1 password1 user2 password2
4.2 生成虚拟用户数据库:
[root@node4 ~]#yum -y install libdb-utils [root@node4 ~]#db_load -T -t hash -f /etc/vsftpd/vir_user /etc/vsftpd/vir_user.db [root@node4 ~]#chmod 700 /etc/vsftpd/vir_user.db
4.3 配置vsftpd pam验证文件:
-
修改前先备份文件
[root@node4 ~]#cp /etc/pam.d/vsftpd{,.bak}
-
将auth及account的所有配置行均注释掉,添加如下两行
[root@node4 ~]#vim /etc/pam.d/vsftpd
auth required pam_userdb.so db=/etc/vsftpd/vir_user account required pam_userdb.so db=/etc/vsftpd/vir_user
4.4 增加一个系统用户‘virftp’ ,所有虚拟用户都会映射到此用户后对文件系统进行读写操作:
[root@node4 ~]#mkdir /ftproot [root@node4 ~]#useradd -d /ftproot -s /sbin/nologin virftp [root@node4 ~]#chown -R virftp:virftp /ftproot
4.5 设置vsftpd主配置文件:
[root@node4 ~]#vim /etc/vsftpd/vsftpd.conf
#禁止匿名用户登录 anonymous_enable=NO #允许本地用户登录 local_enable=YES #启用虚拟账户 guest_enable=YES #把虚拟账户映射到系统账户virftp guest_username=virftp #使用虚拟用户验证(PAM验证) pam_service_name=vsftpd #设置存放各虚拟用户配置文件的目录(此目录下与虚拟用户名相同的文件为他的配置文件) user_config_dir=/etc/vsftpd/vsftpd_viruser #启用chroot时,虚拟用户根目录允许写入 allow_writeable_chroot=YES
4.6 配置虚拟用户各自的配置文件:
-
创建‘虚拟用户配置文件’的存放目录
[root@node4 ~]#mkdir /etc/vsftpd/vsftpd_viruser/
-
创建和配置虚拟用户各自的配置文件,文件名称是‘虚拟用户名’
[root@node4 ~]#vim /etc/vsftpd/vsftpd_viruser/user1
# 允许写入 write_enable=YES #允许浏览FTP目录和下载 anon_world_readable_only=NO # 允许虚拟用户上传文件 anon_upload_enable=YES # 允许虚拟用户创建目录 anon_mkdir_write_enable=YES # 允许虚拟用户执行其他操作(如改名、删除) anon_other_write_enable=YES # 上传文件的掩码,如022时,上传目录权限为755,文件权限为644 anon_umask=022 # 指定虚拟用户的虚拟目录(虚拟用户登录后的主目录) local_root=/ftproot/admin/
-
创建虚拟用户的根目录,要保证虚拟用户映射的系统用户,对这个根目录有读写权限
[root@node4 ~]#mkdir -p /ftproot/admin/ [root@node4 ~]#chown -R virftp.virftp /ftproot/admin/
五、测试配置结果:
5.1 重启vsftpd服务
[root@node4 ~]#systemctl restart vsftpd [root@node4 ~]#systemctl enable vsftpd
5.2 关闭防火墙或者开启‘21’端口号
[root@node4 ~]#systemctl stop firewalld 或者 [root@node4 ~]#firewall-cmd --add-port=21/tcp
5.3 利用‘FlashFXP’工具连接测试
图一:输入登录信息
图二:登录反馈结果:成功