vsftp 常用配置(匿名/系统用户/虚拟用户)


vsftp(Very Secure FTP)服务是一款FTP软件,它安全、高效、稳定,在企业中很常用。

一、vsftp安装

1.1 安装vsftp

yum install vsftp* -y

vsftp 常用配置(匿名/系统用户/虚拟用户)

1.2 查看/etc/vsftpd/vsftp.conf配置文件

   #拒绝匿名用户登录
   anonymous_enable=NO
   #启用本地系统用户访问
   local_enable=YES
   #本地用户写权限
   write_enable=YES
   #本地用户上传文件的权限为-rw-r--r-- (最高权限666-022=644
   local_umask=022
   #是否显示目录说明文件(需要自己创建.message)
   dirmessage_enable=YES
   #记录使用者上传下载信息,保存路径:/var/log/vsftpd.log
   xferlog_enable=YES
   #数据传输使用20端口
   connect_from_port_20=YES
   #以xferlog格式写入日志
   xferlog_std_format=YES
   #YES为standalone启动  NO为通过Xinetd管理
   listen=NO
   #启用ipv6监听
   listen_ipv6=YES
   #通过/etc/pam.d/vsftpd进行认证
   pam_service_name=vsftpd
   #禁止/etc/vsftpd中的user_list和ftpusers用户访问(黑名单)
   userlist_enable=YES
   #通过/etc/host.allow、host.deny中的IP进行访问控制
   tcp_wrappers=YES

vsftp 常用配置(匿名/系统用户/虚拟用户)

1.3 启动vsftp,并通过windows访问

systemctl restart vsftpd.service

vsftp 常用配置(匿名/系统用户/虚拟用户)

二、匿名用户配置

2.1 在上面配置文件中加入以下代码

# 匿名用户登陆的username
ftp_username=ftp
# 是否允许匿名用户创建目录
anon_mkdir_write_enable=YES
# 是否允许匿名用户对文件增、删、改
anon_other_write_enable=YES
# 是否允许匿名用户上传文件
anon_upload_enable=YES

2.2 赋予匿名用户ftp权限访问pub文件夹,重启vsftpd

chown -R ftp /var/ftp/pub

chmod 755 /var/ftp/pub

systemctl restart vsftpd.service

2.3 匿名访问测试

vsftp 常用配置(匿名/系统用户/虚拟用户)

​ 测试可以正常写入数据,OK

三、系统用户配置(财务部caiwubu 研发部yanfabu 市场部shichangbu)分别访问自己的目录

3.1 创建系统用户(测试)

   useradd caiwubu
   useradd yanfabu
   useradd shichangbu
   echo "666666" | passwd --stdin caiwubu
   echo "666666" | passwd --stdin shichangbu
   echo "666666" | passwd --stdin yanfabu

vsftp 常用配置(匿名/系统用户/虚拟用户)

3.2 修改/etc/vsftpd/vsftpd.conf配置文件

   #拒绝匿名用户登录
   anonymous_enable=NO
   #启用本地系统用户访问
   local_enable=YES
   #本地用户写权限
   write_enable=YES
   #本地用户上传文件的权限为-rw-r--r-- (最高权限666-022=644
   local_umask=022
   #是否显示目录说明文件(需要自己创建.message)
   dirmessage_enable=YES
   #记录使用者上传下载信息,保存路径:/var/log/vsftpd.log
   xferlog_enable=YES
   #数据传输使用20端口
   connect_from_port_20=YES
   #以xferlog格式写入日志
   xferlog_std_format=YES
   #YES为standalone启动  NO为通过Xinetd管理
   listen=NO
   #启用ipv6监听
   listen_ipv6=YES
   #通过/etc/pam.d/vsftpd进行认证
   pam_service_name=vsftpd
   #禁止/etc/vsftpd中的user_list和ftpusers用户访问(黑名单)
   userlist_enable=YES
   #通过/etc/host.allow、host.deny中的IP进行访问控制
   tcp_wrappers=YES

vsftp 常用配置(匿名/系统用户/虚拟用户)

3.3 访问测试

vsftp 常用配置(匿名/系统用户/虚拟用户)

登录进去,创建test文件夹,在/home/caiwubu下可以正常显示

vsftp 常用配置(匿名/系统用户/虚拟用户)

四、虚拟用户访问

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

4.1 创建虚拟用户列表

vim /etc/vsftpd/virtusers_list

   # 第一行账号  第二行密码  以此类推
   caiwubu
   666666
   yanfabu
   666666

4.2 生成虚拟用户数据文件

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

   #设定PAM验证文件,并指定对虚拟用户数据库文件进行读取
   chmod 700 /etc/vsftpd/virtusers.db

4.3 配置pam验证文件

vim /etc/pam.d/vsftpd 在行首插入如下,其他的注释

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

vsftp 常用配置(匿名/系统用户/虚拟用户)

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

useradd -s /sbin/nologin ftpuser

4.5 配置虚拟用户配置文件

mkdir -p /etc/vsftpd/vsftpd_user_conf/

vim /etc/vsftpd/vsftpd_user_conf/caiwubu

   # 财务部用户登录的根目录 
   local_root=/home/ftpuser/caiwubu
   write_enable=YES
   anon_world_readable_only=NO
   anon_upload_enable=YES
   anon_mkdir_write_enable=YES
   anon_other_write_enable=YES

vim /etc/vsftpd/vsftpd_user_conf/yanfabu

   # yanfabu用户登录的根目录 
   local_root=/home/ftpuser/yanfabu
   write_enable=YES
   anon_world_readable_only=NO
   anon_upload_enable=YES
   anon_mkdir_write_enable=YES
   anon_other_write_enable=YES

创建 虚拟用户登录的根目录

mkdir -p /home/ftpuser/{caiwubu,yanfanbu}

chown -R ftpuser:ftpuser /home/ftpuser

4.6 配置vim /etc/vsftpd/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
   listen=NO
   listen_ipv6=YES
   pam_service_name=vsftpd
   userlist_enable=YES
   tcp_wrappers=YES
   # ---------virtusers config--------------------
   # 启用pam认证
   pam_service_name=vsftpd
   # 启用虚拟用户
   guest_enable=YES
   # 虚拟用户映射系统用户ftpuser
   guest_username=ftpuser
   # 虚拟用户与本地用户权限相同
   virtual_use_local_privs=YES
   # 虚拟用户配置文件目录
   user_config_dir=/etc/vsftpd/vsftpd_user_conf
   # -----------(可选)访问权限控制----------------
   # 将用户目录限制为根目录(看不到家目录的其他目录)
   allow_writeable_chroot=YES
   # 是否禁止本地用户切换到家目录上级目录,绑定家目录为用户的根目录
   chroot_local_user=NO
   # 是否启用chroot列表文件,写入文件中的用户将锁定家目录
   chroot_list_enable=NO
   # 指定用户列表文件的文件路径
   chroot_list_file=/etc/vsftpd/chroot_list

   # ------------(可选) 被动模式-------------------
   # 启用被动模式
   pasv_enable=YES
   # 端口范围
   pasv_min_port=30000
   pasv_max_port=31000
   # Connect_from_port_20=NO 需要修改上面的此项   

4.7 重启vsftp的服务,使用windows打开测试

systemctl restart vsftpd.service

vsftp 常用配置(匿名/系统用户/虚拟用户)

vsftp 常用配置(匿名/系统用户/虚拟用户)

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

vsftp 常用配置(匿名/系统用户/虚拟用户)

例如 提示anon_world_readable_onlybool值错误,打开配置文件vim /etc/vsftpd/vsftpd_user_conf/caiwubu

vsftp 常用配置(匿名/系统用户/虚拟用户)
发现该bool值后面有空格,删除后可以正常访问

vsftp 常用配置(匿名/系统用户/虚拟用户)

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

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

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

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

vsftp 常用配置(匿名/系统用户/虚拟用户)

连接只能看到自己的家目录文件。

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

vim /etc/vsftpd/chroot_list

   # 用户名称
   yanfabu

vim /etc/vsftpd/vsftpd.conf

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

vsftp 常用配置(匿名/系统用户/虚拟用户)
测试完,研发部可以访问其他目录