FTP 虚拟用户登录

一、概述

VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP,FTP三种认证模式:匿名用户、本地用户、虚拟用户,在建立vsftpd用户时,我们一般是在linux下建立普通用户useradd的方式来访问ftp,但有时我们只想提供ftp服务,而避免用户用ftp的帐号去登录linux,采用一般的方式只能是限制该用户的访问权限,但还是避免不了用户登录进linux系统,所以比较好的方法是用vsftpd的虚拟用户(virtual users)。 每个虚拟用户也可以被赋予不同的访问权限,通过用户的权限控制参数进行指定。

二、安装vsftpd服务,创建用户数据库文件

  1. yum -y install vsftpd
  2. cd /etc/vsftpd/
  3. vim vuser.txt
  4. private
    personal
    public
    123456
  5. 虚拟用户帐号的存储方式:创建专门一个文件存放用户密码,但是该文件需要用hash格式。所以需要用下面的这条命令:
  6. db_load -T -t hash -f vuser.txt vuser.db
  7. chmod 600 vusers.db 为了安全,可删除vuser.txt并修改.db文件的权限

三、创建系统普通用户(禁止登录),和FTP访问根目录

  • 创建用户,指定家目录
  1. useradd -d /var/ftp/ftproot -s /sbin/nologin vuser
  2. chown -R vuser.vuser /var/ftp/ftproot

四,创建PAM模块配置文件

  1. mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
  2. vimdiff /usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/vsftpd.pam /etc/pam.d/vsftpd

 

  • vi /etc/pam.d/vsftpd, 内容如下:
  1. auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser   //和用户数据库文件名称一致,不需要.db后缀
  2. account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

五、配置Vsftp的配置文件vsftpd.conf  

anonymous_enable=NO
local_enable=YES
write_enable=NO
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
connect_from_port_20=YES
chown_uploads=NO
xferlog_std_format=YES
async_abor_enable=YES
ftpd_banner=Welcome to blah FTP service.
chroot_local_user=YES
chroot_list_enable=YES
allow_writeable_chroot=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
listen_ipv6=NO

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
  1. anonymous_enable=NO      // 不允许匿名访问
  2. local_enable=YES        // 允许本地用户登录FTP服务器
  3. write_enable=NO        // 本地用户可以读写
  4. local_umask=022        // 默认掩码为022,默认创建的文件权限为755
  5. anon_upload_enable=NO        // 允许匿名用户上传文件,基于安全因素考虑,默认vsftpd是注释此项
  6. anon_mkdir_write_enable=NO        // 是否允许匿名用户创建目录,基于安全因素考虑,默认vsftpd是注释此项
  7. dirmessage_enable=YES        // 如果目录存在.message隐藏文件时,当进入此目录时,会显示.message里面的内容
  8. xferlog_enable=YES        // 默认记录上传、下载的日志文件,是否开启此功能
  9. xferlog_file=/var/log/xferlog        // vsftpd的日志存放位置
  10. connect_from_port_20=YES        // 从端口20连接,默认状态下,20端口为数据传输端口
  11. #chown_uploads=NO        
  12. #chown_username=whoever        // 此两选项必须同时出现,含义为,允许新上传文件的拥有者为whoever,默认这两行被注释到得。
  13. xferlog_std_format=YES        // 使用标准格式上传/下载
  14. #data_connection_timeout=120        // 传输延时时间,当时间超过120秒后,会自动断开,默认是注释掉。
  15. #nopriv_user=ftpsecure        // 使用特殊用户ftpsecure,这里可以把ftpsecure账户作为一般访问用户,所有连接FTP服务器的用户都具有ftpsecure用户名,基于安全因素考虑,可以在/etc/passwd中将ftpsecure的用户shell设置为/sbin/nologin(禁止登陆操作系统)
  16. async_abor_enable=YES        // 取消下载后客户端不挂起,一般不需要设置。
  17. #ascii_upload_enable=YES        
  18. #ascii_download_enable=YES        // 是否启用ASCII方式传送文件,一般我们不需要这个格式
  19. ftpd_banner=Welcome to blah FTP service.        // 登陆FTP服务器,所提示的信息,默认注释掉
  20. #deny_email_enable=YES
  21. #banned_email_file=/etc/vsftpd/banned_emails        // 若是启用以上两个选项,则可以在/etc/vsftpd/banned_emails中建立黑名单
  22. chroot_local_user=YES        
  23. chroot_list_enable=YES
  24. chroot_list_file=/etc/vsftpd/chroot_list        // 当登陆FTP服务器时,被列在chroot_list文件中的用户,不可以访问FTP根目录以外的目录。
  25. allow_writeable_chroot=YES        
  26. #ls_recurse_enable=YES        // 是否可以使用ls -R 命令,默认是注释掉
  27. listen=YES        // 当此项为YES时,vsftpd运行于stand-alone模式下
  28. listen_ipv6=NO        // 监听IPv6
  29. pam_service_name=vsftpd        // pam认证文件名
  30. userlist_enable=YES        //当此项设置为YES时,启用配置文件/etc/vsftpd.user_list.此时有两种情况:1.若没有userlist_deny=NO,则/etc/vsftpd/user_list中的用户不可以访问FTP服务器 2.若有userlist_deny=NO,则仅接受/etc/vsftpd.user_list中的用户登陆请求,同时此用户也不可以存在/etc/vsftpd/ftpusers文件中。
  31. tcp_wrappers=YES        // 支持TCP Wrappers

 

  • 补充:(未出现在vsftpd.conf配置文件中的常用参数)
  1. guest_enable=YES        //设定启用虚拟用户功能
  2. guest_username=vuser        //指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了,通过映射到手动创建的普通用户vuser
  3. user_config_dir=/etc/vsftpd/vsftpd_user_conf        //设定虚拟用户个人vsftpd服务文件存放路径。存放虚拟用户个性的FTP服务文件(配置文件名=虚拟用户名)
  4. virtual_use_local_privs=YES        // 虚拟用户和本地用户有相同的权限

 

六、在指定目录/etc/vsftpd/vsftpd_user_conf下配置子账号FTP权限

  • cat private        // 虚拟用户具有写权限(上传、下载、删除、重命名)
  1. local_root=/var/ftp/ftproot/
  2. write_enable=YES
  3. anon_umask=022
  4. anon_world_readable_only=YES      
  5. anon_upload_enable=YES       
  6. anon_mkdir_write_enable=YES
  7. anon_other_write_enable=YES

 

  • cat public
  1. local_root=/var/ftp/ftproot/
  2. write_enable=NO
  3. anon_umask=022
  4. anon_world_readable_only=NO
  5. anon_upload_enable=YES
  6. anon_mkdir_write_enable=NO
  7. anon_other_write_enable=NO

七、重启服务进行登录确认

  1. systemctl restart vsftpd.service

你可能感兴趣的:(System)