• CentOS7安装vsftpd3.0.2、以及虚拟用户配置


    vsftpd(very secure ftp daemon)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,还具有很高的安全性、传输速度,以及支持虚拟用户验证。

    vsftpd 允许用户以三种认证模式登录FTP服务器。

    • 匿名开放模式:是一种最不安全的认证模式,任何人都可以无需密码验证而直接登录。
    • 本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开放模式更安全,而且配置起来也很简单。
    • 虚拟用户模式:是这三种模式中最安全的一种认证模式,它需要为FTP服务单独建立用户数据库文件,虚拟出用来进行口令验证的账户信息,而这些账户信息在服务器系统中实际上是不存在的,仅供FTP服务程序进行认证使用。这样,即使黑客破解了账户信息也无法登录服务器,从而有效降低了破坏范围和影响。

    1、yum 安装

    yum install -y vsftpd

    2、创建一个不能登录系统的用户ftpuser用于映射虚拟用户,ftp根目录

    useradd -d /home/ftpsite -s /sbin/nologin ftpuser
    chmod 550 /home/ftpsite/

    修改配置文件 /etc/vsftpd/vsftpd.conf, 先备份一份

    cd /etc/vsftpd
    cp -a vsftpd.conf vsftpd.conf.bak
    vim vsftpd.conf
    anonymous_enable=NO     #关闭匿名开放模式
    local_enable=YES        #允许本地用户模式 虚拟用户模式也要开启
    guest_enable=YES        #开启虚拟用户模式
    guest_username=ftpuser  #指定用于映射虚拟用户的系统账户
    #启用ASCII模式的传输
    ascii_upload_enable=YES ascii_download_enable=YES
    #将所有用户限定在其主目录内
    chroot_local_user=YES chroot_list_enable=NO

    #如果有用户不需要限定在主目录以下设置
    chroot_local_user=YES
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list #这个文件需要自己创建

    chroot_local_user=YES     所有用户限定在其主目录内
    chroot_list_enable=YES    启用例外
    /etc/vsftpd/chroot_list         这里的用户名都不受限制,可以切换出主目录,用户名一行填写一个

    chroot_local_user=NO       所有用户都不受限制,可以切换出主目录
    chroot_list_enable=YES    启用例外
    /etc/vsftpd/chroot_list         这里的用户名都受到限制,限定在其主目录内,用户名一行填写一个

    3、创建虚拟用户

    vim virtual_user
    test1
    test111
    test2
    test222

    创建了2个账户,test1、test2。第一行用户名,第二行密码,依此类推:

    使用 db_load 命令生成 vsftpd 的认证文件,将用户信息文件转换为数据库并使用hash加密:

    db_load -T -t hash -f virtual_user virtual_user.db
    chmod 600 virtual_user.db
    rm -f virtual_user.db

    4、建立虚拟用户所需的PAM配置文件,对虚拟用户的安全和账户权限进行验证

    vim /etc/pam.d/vsftpd.virtual
    auth       required     pam_userdb.so db=/etc/vsftpd/virtual_user #不需要填后缀
    account    required     pam_userdb.so db=/etc/vsftpd/virtual_user

    修改 /etc/vsftpd/vsftpd.conf,指定刚创建的PAM文件

    pam_service_name=vsftpd.virtual

    5、给不同虚拟用户设置不同权限,及主目录

    前面已近创建了test1、test2两个虚拟用户,分别创建主目录

    mkdir /home/ftpsite/test1
    mkdir /home/ftpsite/test2
    chown ftpuser:ftpuser /home/ftpsite/test1
    chown ftpuser:ftpuser /home/ftpsite/test2

    创建虚拟用户配置文件,及存放目录,配置文件的名称要跟之前 virtual_user.db 里用户名一致

    mkdir /etc/vsftpd/virtual_user_conf
    vim /etc/vsftpd/virtual_user_conf/test1
    local_root=/home/ftpsite/test1   #设置用户主目录
    allow_writeable_chroot=YES #2.3.5之后,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了,可以去掉写权限或加上这项
    anon_world_readable_only=NO #只要文件所有者对文件有读权限即可下载
    write_enable=YES #写入开关,是下面几个权限的前提
    anon_upload_enable=YES #上传
    anon_mkdir_write_enable=YES #创建文件夹
    anon_other_write_enable=YES #删除、覆盖、重命名

    anon_world_readable_only
    文件有三种权限,文件所有者,文件所有组,文件的其他人,这个anon_world_readable_only参数意思是,当他为YES时候,文件的其他人必须有读的权限才允许下载,单单所有者为ftpuser且有读权限是无法下载的,必须其他人也有读权限,才允许下载,这是为安全性的一方面考虑,若为NO则只要ftpuser用户对文件有读权限即可下载
    目录是一样的,当他为YES时候,目录的其他人必须有读的权限才允许读取文件列表,否则提示 failed to open directory
    https://bbs.csdn.net/topics/390083069

    用户test2

    vim /etc/vsftpd/virtual_user_conf/test2
    local_root=/home/ftpsite/test2
    allow_writeable_chroot=YES
    anon_upload_enable=YES

     修改 /etc/vsftpd/vsftpd.conf,加上虚拟用户配置目录

    user_config_dir=/etc/vsftpd/virtual_user_conf

     6、启动vsftp,添加防火墙端口

    systemctl start vsftpd
    systemctl enable vsftpd
    firewall-cmd --add-service=ftp --permanent
    firewall-cmd --reload

    7、链接测试 test1 test2 两个权限是不一样的

    Linux下配置vsftp的若干问题: https://blog.csdn.net/pandaball/article/details/54838119

  • 相关阅读:
    【Cocos2d js系列】创建一个弹出框
    Java内存模型
    linux系统-CPU上下文切换
    网络编程-套接字(socket)
    Java虚拟机组成及原理
    swarm
    docker-machine
    存储卷类型
    NOSQL数据库使用存储卷
    建立持久化的容器
  • 原文地址:https://www.cnblogs.com/kjcy8/p/9337191.html
Copyright © 2020-2023  润新知