vsftp 虚拟用户配置[测试通过]

        系统用户访问可以解决匿名用户带来的安全问题,但是系统用户一般可以用于登录linux系统,存在安全隐患,故可以使用多个虚拟用户映射一个服务器系统用户,对外只暴露虚拟用户,该虚拟用户不能登录linux系统,并且可以设置相应的权限来保障系统安全。


1、安装Vsftpd虚拟用户需用到的软件及认证模块:

yum  install  pam*  libdb-utils  libdb*  --skip-broken  -y

2、创建虚拟用户列表

vim /etc/vsftpd/ftpusers.txt
#第一行账号  第二行密码  以此类推
longtao01
passwd123
longtao2
passwd123

3、生成Vsftpd虚拟用户数据库认证文件,设置权限600:

#db_load 将virtusers中的密码加密,并生成vsftpd_login.db给系统使用,ftpusers.txt文件可删除
db_load  -T  -t  hash  -f  /etc/vsftpd/ftpusers.txt  /etc/vsftpd/vsftpd_login.db
chmod  600  /etc/vsftpd/vsftpd_login.db

4、配置PAM认证文件,/etc/pam.d/vsftpd 加入如下两行,其他行全部注释

vim /etc/pam.d/vsftpd
auth      required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
account   required        pam_userdb.so   db=/etc/vsftpd/vsftpd_login
#db=后面的文件要与步骤二中的一致

aHR0cHM6Ly9zNC41MWN0by5jb20vaW1hZ2VzL2Jsb2cvMjAyMDA3LzEwL2EzZDEwOGUzNDNlMDBhZGE1MjExZWU0NjMyYTYzMTM5LnBuZw.png

5、新建一个系统用户(不需要设置密码,不需要登录系统)

useradd   -s  /sbin/nologin    ftpuser

6、配置虚拟用户配置文件

mkdir -p /etc/vsftpd/vsftpd_user_conf/

#创建longtao01私有的虚拟目录,代码如下:
vim /etc/vsftpd/vsftpd_user_conf/longtao01
local_root=/home/ftpuser/longtao01
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#创建longtao02私有的虚拟目录,代码如下:
vim /etc/vsftpd/vsftpd_user_conf/longtao02
#longtao02虚拟用户配置文件路径;
local_root=/home/ftpuser/longtao02
#允许登陆用户有写权限
write_enable=YES
#允许匿名用户下载,然后读取文件;
anon_world_readable_only=YES
#允许匿名用户上传文件权限,只有在write_enable=YES时该参数才生效;
anon_upload_enable=YES
#允许匿名用户创建目录,只有在write_enable=YES时该参数才生效;
anon_mkdir_write_enable=YES
#允许匿名用户其他权限,例如删除、重命名等。
anon_other_write_enable=YES

7、创建虚拟用户各自虚拟目录并设置权限

mkdir -p /home/ftpuser/{longtao01,longtao02}
chown -R ftpuser:ftpuser /home/ftpuser

8、配置vsftpd.conf文件

vim /etc/vsftpd/vsftpd.conf

完整vsftpd.conf配置文件代码如下:

#拒绝匿名用户登录
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
# --------------(可选)访问权限控制-------------------
# 是否禁止本地用户切换到家目录上级目录,绑定家目录为用户的根目录
chroot_local_user=YES
# 是否启用chroot列表文件,写入文件中的用户将锁定家目录
chroot_list_enable=YES
# 指定不受目录限制的用户列表文件的路径,当chroot_list_enable=YES才需要配置用户列表文件的路径
chroot_list_file=/etc/vsftpd/chroot_list
# 将用户目录限制为根目录(看不到家目录里的其他用户目录)
allow_writeable_chroot=YES
#---------------------------------------------------------
listen=NO
listen_ipv6=YES
userlist_enable=YES
#pam_service_name=vsftpd 位置下移
tcp_wrappers=YES
#-----------------config virtual user FTP(必要配置)-----------------
#虚拟用户启用pam认证;
pam_service_name=vsftpd
#启用虚拟用户
guest_enable=YES
#映射虚拟用户至系统用户ftpuser
guest_username=ftpuser
#设置虚拟用户配置文件所在的目录
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#虚拟用户使用与本地用户相同的权限
virtual_use_local_privs=YES
#---------------------------------------------------------
# ----------------(可选) 被动模式-------------------------
# 启用被动模式
pasv_enable=YES
# 端口范围
pasv_min_port=30000
pasv_max_port=31000
#需要修改上面的此项为 Connect_from_port_20=NO
#---------------------------------------------------------

9、重启服务,测试虚拟用户

systemctl restart vsftpd

注意:如果输入账号密码打不开,使用linux系统ftp连接过去,会提示报错信息

强调:/etc/vsftpd/vsftpd.conf配置文件参数行末尾不要有空格。

10、(可选)实际生产中需要对虚拟用户进行访问控制

限制虚拟用户访问其他目录

在vim /etc/vsftpd/vsftpd.conf配置中添加如下

# 将用户目录限制为根目录(看不到家目录的其他目录)
allow_writeable_chroot=YES
# 是否禁止本地用户切换到家目录上级目录,绑定家目录为用户的根目录
chroot_local_user=YES

测试效果:连接只能看到自己的家目录文件。

如果只需要个别用户可以访问其他目录,需要创建chroot_list文件

假设用户longtao02可以访问其他用户

vim /etc/vsftpd/chroot_list
# 用户名称
longtao02

vim /etc/vsftpd/vsftpd.conf

# 指定用户列表文件的文件路径
chroot_list_file=/etc/vsftpd/chroot_list
# chroot_list_file文件中的用户可以切换到其他目录
chroot_local_user=YES
chroot_list_enable=YES

版权声明:
作者:WaterBear
链接:https://l-t.top/1736.html
来源:雷霆运维
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>