虚拟用户就是系统中不存在的实体用户,他只能访问服务器为其提供的ftp服务,但不能访问其它的额外资源信息,所以如果想让一些用户可以对ftp服务中的内容具有写权限,但又不允许访问系统其他资源,那我们就可以通过使用虚拟用户来提高系统的安全性。在vsftpd中,虚拟用户的认证方式是单独的口令库文件,有可插入式认证模块来完成认证,使用这种方式配置更加灵活也更加安全。具体的实现过程如下?:
1、创建虚拟用户的账号密码数据库文件:
a)我们通过创建一个文本文件来记录虚拟用户的账号密码信息,格式为,奇数行为账号,对应的偶数行为对应的账号密码(注意这里的密码就是你在登入时需要输入的内容,而非经过加密的,这里是什么,之后就要输入什么)此文件需要被编码为hash格式。
[root@centos7:~]#cd /etc/vsftpd
[root@centos7:/etc/vsftpd]#vim vusers.txt
ftp1
111111
ftp2
222222
ftp3
333333
为提高安全性给其加上权限:
[root@centos7:/etc/vsftpd]#chmod 600 vusers.txt
b)将该文本文件转换成二进制的数据库文件,这里需要借助db4工具来实现,如下:
[root@centos7:/etc/vsftpd]#yum install db4-utils -y
[root@centos7:/etc/vsftpd]#db_load -T -t hash -f vusers.txt vusers.db
更改账号密码文件的权限为600,主要是为了保证密码文件的安全性;
[root@centos7:/etc/vsftpd]#chmod 600 vusers.db
2、创建ftp根目录及虚拟用户映射的系统用户:
[root@centos7:/var/ftproot]#useradd -d /var/ftproot/ -s /sbin/nologin ftpuser //这里是将虚拟用户映射为ftpuser
centos7还需要执行以下操作:
chmod 755 /var/ftproot
为其创建一个文件夹用其上传文件用:
[root@centos7:/var/ftproot]#mkdir /var/ftprooot/upload
[root@centos7:/var/ftproot]#touch /var/ftprooot/upload/{f1,f2}
给其虚拟用户修改权限
root@centos7:/var/ftproot]#setfacl -m u:vuser:rwx /var/ftproot/upload
3、创建支持虚拟用户的PAM认证文件:
[root@centos7:/etc/vsftpd]#vim /etc/pam.d/vsftpd.db
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
4、在vsftpd的配置文件vsftpd.conf当中添加支持模块参数:
[root@centos7:/etc/vsftpd]#vim /etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
实际上现在我们刚刚创建的用户ftp1,ftp2,ftp3就可以以虚拟用户登入了
5、为个别的虚拟用户创建独立的配置文件:
1)首先要创建虚拟用户的配置文件目录:
[root@centos7:/etc/vsftpd]#mkdir /etc/vsftpd/vusers_dir
2)在vsftpd的配置文件当中开启虚拟用户及配置相关参数
[root@centos7:/etc/vsftpd]#vim /etc/vsftpd/vsftpd.conf
virtual_use_local_privs=YES //开启虚拟用户
ser_config_dir=/etc/vsftpd/vusers_dir //虚拟用户的配置目录
3)在虚拟用户的配置目录当中为个别用户创建独立的配置文件及配置相关参数:
[root@centos7:/etc/vsftpd/vusers_dir]#cd /etc/vsftpd/vusers_dir/
[root@centos7:/etc/vsftpd/vusers_dir]#touch ftp1 ftp2
[root@centos7:/etc/vsftpd/vusers_dir]#vim ftp2
anno_upload_enable=YES
anon_mkdir_enable=YES
6、重新加载vsftpd的配置:
[root@centos7:/etc/vsftpd/vusers_dir]#systemctl restart vsftpd
7、使用虚拟用户进行测试实验:
之后我们可以通过在浏览器或者是ftp客户端工具及命令来测试下虚拟用户是否可用,以及ftp1用户可以登入,并可以浏览、下载文件,但无法上传;而ftp2用户可以登入,可以浏览、下载文件,也可以上传;匿名用户或其他系统用户将不能登入;因此我们就达到了vsftpd开启使用虚拟用户,同时还达到了不同的虚拟用户拥有不同的操作权限。