zoukankan      html  css  js  c++  java
  • vsftpd安装及虚拟用户配置

    服务器环境:CentOS Linux release 7.4   3.10.0-693.5.2.el7.x86_64

    服务器软件:vsftpd-3.0.2

    FTP工作模式:主动模式和被动模式

    主动模式

    被动模式

    vsftpd的配置文件

    /etc/vsftpd/vsftpd.conf  主配置文件

    /etc/vsftpd/ftpusers  黑名单

    /etc/vsftpd/vsftpd_conf_migrate.sh  迁移脚本

    /etc/vsftpd/user_list  用户列表,与userlist_enbale和userlist_deny选项密切相关,详见http://blog.csdn.net/bluishglc/article/details/42273197

    安装vsftpd

    # yum -y install vsftpd

    安装libdb-utils

    安装Berkeley DB工具,用于生成虚拟用户认证文件

    # yum -y install libdb-utils    #CentOS7是libdb-utils
    # yum -y install db4 db4-utils    #CentOS6是db4-utils

    宿主用户

    创建宿主用户,即guest_username,所有虚拟用户都是映射宿主用户的目录权限。

    # useradd -d /var/vsftp -s /sbin/nologin vsftp

    主配置文件

    # vi /etc/vsftpd/vsftpd.conf
    
    #关闭匿名访问
    anonymous_enable=NO
    #启用本地系统用户,包括虚拟用户
    local_enable=YES
    #允许执行FTP命令,如果禁用,将不能进行上传、下载、删除、重命名等操作
    write_enable=YES
    #本地用户umask值
    local_umask=022
    dirmessage_enable=YES
    #启用日志
    xferlog_enable=YES
    xferlog_std_format=YES
    #关闭ftp-data端口,相当于不使用主动模式
    connect_from_port_20=NO
    #限制用户不能离开FTP主目录,启用并设置例外用户清单
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    #使用ipv4进行监听
    listen=YES
    listen_ipv6=NO
    
    #pam认证文件名称,位于/etc/pam.d/
    pam_service_name=vsftpd
    #启用全局用户例外清单
    userlist_enable=YES
    #启用tcp封装
    tcp_wrappers=YES

    #虚拟用户权限是否与本地用户相同。为NO时,将与匿名用户的权限相同,在每个虚拟用户配置文件里设置匿名用户的选项等于虚拟用户的权限
    virtual_use_local_privs=NO #启用guest后,所有非匿名用户将映射到guest_username进行访问,包括本地系统用户也不能使用,并且转换成一个虚拟用户,与其他虚拟用户的配置方法一样 guest_enable
    =YES guest_username=vsftp #虚拟用户配置文件目录 user_config_dir=/etc/vsftpd/vuser_conf
    #启用pasv模式
    pasv_enable
    =YES
    pasv_min_port
    =33000
    pasv_max_port=34000

     主配置文件可参考:man vsftpd.conf或https://security.appspot.com/vsftpd/vsftpd_conf.html

    chroot_list文件

    chroot()会检查chroot_list文件

    # touch /etc/vsftpd/chroot_list

    虚拟用户列表

    奇行为用户名,偶行为密码

    # vi /etc/vsftpd/vuser
    ftpserver
    111111

    虚拟用户认证文件

    # db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
    # chmod 600 /etc/vsftpd/vuser.db

    虚拟用户认证配置

    注释掉其他本地用户认证的内容,因为启用了guest_enable后,本地用户将失效,所有非匿名用户变成虚拟用户

    # cp /etc/pam.d/vsftpd{,.bak}
    # vi /etc/pam.d/vsftpd
    auth required /lib64/security/pam_userdb.so db
    =/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

    虚拟用户配置文件

    # mkdir /etc/vsftpd/vuser_conf/
    # vi /etc/vsftpd/vuser_conf/ftpserver  #文件名与对应FTP虚拟用户一致
    local_root
    =/var/vsftp/ftpserver  #虚拟用户主目录,用户和组必须指定为宿主用户vsftp #vsftpd主配置文件中已规定虚拟用户权限与匿名用户一致,因此以下针对匿名用户的权限配置即为虚拟用户的权限 anon_umask=077 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

    虚拟用户主目录和权限

    最新版vsftpd不允许用户主目录有w权限,因此在主目录下新建一个子目录,赋予700权限。所有上传、下载、删除、重命名等操作只能在子目录中进行

    # mkdir -p /var/vsftp/ftpserver/newdir
    # chown -R vsftp.vsftp /var/vsftp
    # chmod -R 500 /var/vsftp
    # chmod -R 700 /var/vsftp/newdir

    SELINUX

    # setsebool -P ftpd_full_access on

    防火墙

    # iptables -I INPUT -p tcp --dport 21 -j ACCEPT  #FTP连接端口
    # iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT  #pasv模式下的随机端口
    # iptables-save >/etc/sysconfig/iptables  #保存防火墙配置

    重启

    # systemctl restart iptables.service
    # systemctl restart vsftpd.service
  • 相关阅读:
    tomcat的一些知识
    WebHttpBinding的流传输模式让我头大了
    实体类编程的最佳伴侣——高效的实体类复制
    MySQL导入导出CSV
    WPF下的事件延迟触发
    WCF使用Json传输的一个BUG
    WCF大文件断点下载示例
    比较DataTable和实体类
    WPF下的右键菜单隐藏
    MySql Workbench中的BUG
  • 原文地址:https://www.cnblogs.com/st-jun/p/7743255.html
Copyright © 2011-2022 走看看