VSFTPD——VIRTUAL_USERS

vsftpd ——Very Secure File Transfer Protocol Deamon


 1.创建虚拟用户数据库

我们使用pam_userdb来验证虚拟用户的身份。而这需要使用一个db格式的账户密码文件。

首先创建一个vsftpd_login.txt的文本文件,奇数行定义账户名,偶数行定义上一行账户的密码。

比如:

#1  user1

#2  password1

#3  user2

#4  password2

#5  user3

#6  password3

接下来安装db-util程序,借此生成数据库文件。

执行命令创建虚拟用户数据库文件:

db_load -T -t -hash -f vsftpd_login.txt /etc/vsftpd_login.db

执行完命令就生成了数据库文件/etc/vsftpd_login.db。然后我们需要将这个文件权限设置下:

chmod 600 /etc/vsftpd_login.db

虚拟用户的数据库文件就创建完成了。

 2.创建PAM文件

将文件/etc/pam.d/vsftpd备份:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak

创建/etc/pam.d/vsftpd文件并加入以下两行:

auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd_login
注1:这步设置很重要,否则会出现用户验证不通过进而无法登陆的情况。

注2:必须确保在所设置的路径下可以找到pam_userdb.so和vsftpd_login.db两个文件。

3.为虚拟用户创建文件目录

添加本地用户来映射虚拟用户:

useradd -d /home/ftpsite virtual

检查目录/home/ftpsite是否存在,若不存在,则创建。

创建文件/home/ftpsite/test.txt以便后面的测试。

4.创建配置文件

将原始配置文件/etc/vsftpd.conf备份:

cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

创建配置文件/etc/vsftpd.conf并将以下参数添加进去:

#设定不允许匿名访问

anonymous_enable=NO

#设定本地用户允许访问

local_enable=YES

#设定虚拟用户使用与匿名用户的权限

virtual_use_local_privs=YES

#设定不允许写操作,全局参数。

write_enable=NO

控制匿名用户对文件(非目录)的上传权限

anon_upload_enable=NO

#控制匿名用户对文件夹的创建权限

anon_mkdir_write_enable=NO

#控制匿名用户对文件和文件夹的删除和重命名权限

anon_other_write_enable=NO
#设定chroot监狱

chroot_local_user=YES

#开启虚拟用户

guest_enable=YES

#虚拟用户映射的用户名

guest_username=virtual

#开启单机模式

listen=YES

#开启被动模式

pasv_enable=YES

#设置被动模式最小端口

pasv_min_port=10000

#设置被动模式最大端口

pasv_max_port=10999

#从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不再具有写权限。

#若vsftpd检查发现用户著目录仍具有写权限,则报该错误。激活下面参数可解决该问题。

#用命令chmod a-w /home/user去除用户主目录的写权限也可解决该问题。

allow_writeable_chroot=YES

5.重启vsftpd服务

重新启动vsftpd以使vsftpd.conf生效:

service vsftpd restart

确认vsfptd已经启动:

service vsftpd status

 

至此,虚拟用户配置完毕,即可进入测试阶段。

 

 


2020-05-09 22:17:59

 

你可能感兴趣的:(VSFTPD——VIRTUAL_USERS)