zoukankan      html  css  js  c++  java
  • Centos7 vsftpd虚拟用户权限控制(vsftpd虚拟用户限制IP访问)

    实验目标:(新增限制虚拟机用户登陆的IP)

    实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制。具体权限控制列表如下:

    用户名权限说明
    admin 管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名。
    upload 不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;
    download 只能下载,不能进行其他操作。

    以上三个虚拟用户均不允许登录系统,并且使用ftp时会被锁定在指定目录内不可进入系统其他目录。

    1、安装vsftpd,Berkeley Database(db4)

    yum install vsftpd db4-utils db4 -y

    2、在/etc/vsftpd/vsftpd.conf加入或者更改以下配置语句:

    anonymous_enable=NO                    #(当然你也可以设成YES,同时允许匿名用户登陆)
    local_enable=YES                       #(必须置YES,因为虚拟用户是映射到virtual这个本地用户来访问的) 
    guest_enable=YES #启用虚拟机用户 guest_username
    =virtual #(第6步中创建,将虚拟用户映射为本地virtual用户) pam_service_name=vsftpd #(第3步中创建,指定PAM配置文件,文件已经在/etc/pam.d/存在) user_config_dir=/etc/vsftpd/user_conf #(第8,9步中创建,指定不同虚拟用户配置文件的存放路径)

    整体配置如下,备份原配置,新建vsftpd.conf,加入下面配置

    [root@jws-ftp var]# cat /etc/vsftpd/vsftpd.conf
    # Example config file /etc/vsftpd/vsftpd.conf
    anonymous_enable=NO
    local_enable=YES
    write_enable=NO
    anon_upload_enable=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    connect_from_port_20=YES
    xferlog_file=/var/log/vsftpd.log
    xferlog_enable=YES
    chroot_local_user=YES
    listen=YES
    pam_service_name=vsftpd
    guest_enable=YES
    guest_username=virtual
    user_config_dir=/etc/vsftpd/user_conf
    ftpd_banner=Welcome to FTP service
    allow_writeable_chroot=YES
    max_clients=300
    max_per_ip=10
    [root@jws-ftp var]#

    3、在/etc/pam.d/中修改文件vsftpd, 对比修改内容:

    auth required pam_userdb.so db=/etc/vsftpd/vu_list     
    account required pam_userdb.so db=/etc/vsftpd/vu_list
    #(/etc/vsftpd/vu_list 在第4,5步中创建,用户账号密码数据库文件)

    #把原本的内容注释掉,用上面的两行代替,不然本地使用xftp无法连接,修改完后,vsftpd文件内容如下

    [root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
    #%PAM-1.0
    #session optional pam_keyinit.so force revoke
    #auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    #auth required pam_shells.so
    #auth include password-auth
    #account include password-auth
    #session required pam_loginuid.so
    #session include password-auth
    session required pam_loginuid.so
    auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list
    account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vu_list

    4、建立用户列表/etc/vsftpd/vu_list.txt 内容如下:

    upload       #(帐号)
    123456       #(用户密码) 
    download     #(帐号) 
    123456       #(用户密码) 
    admin        #(帐号) 
    123456       #(用户密码)
    #注意:不要有空行,一行账号 一行密码;奇数行为帐号,偶数行为密码

    实际配置如下:

    [root@jws-ftp ftp]# cat /etc/vsftpd/vu_list.txt
    upload
    123456
    download
    123456
    admin
    123456
    [root@jws-ftp ftp]#

    5、建立访问者数据文件(如果没有可以安装:yum install db4-utils)

    [root@localhost vsftpd] db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
    #修改db文件的权限,以免被非法用户修改 
    [root@localhost vsftpd] chmod 600 /etc/vsftpd/vu_list.db

    6、建立本地虚拟用户:

    useradd -d /var/ftp -s /sbin/nologin virtual

    7、在/var/ftp/创建目录并改变其属性和它的属主:

    chown virtual /var/ftp
    chmod 775 /var/ftp

    8、创建ftp用户配制文件目录:/etc/vsftpd/user_conf:

    mkdir /etc/vsftpd/user_conf

    9、在/etc/vsftpd/user_conf目录中创建以用户名命名的配置文件upload、download、admin

    “download”文件内容如下:(记得去掉斜杠内容)

    local_root=/var/ftp            \(也可以设置成其它,但要注意virtual用户对此目录的权限)
    anon_world_readable_only=NO    \(使download用户的能下载,也只能下载;写成YES,将不能列出文件和目录)

    实际配置如下:

    [root@jws-ftp var]# cat /etc/vsftpd/user_conf/download
    local_root=/var/ftp
    anon_world_readable_only=NO

    “admin”文件内容如下:(记得去掉斜杠内容)

    local_root=/var/ftp
    anon_world_readable_only=NO
    write_enable=YES               \(写权限)
    anon_mkdir_write_enable=YES    \(新建目录权限)
    anon_upload_enable=YES         \(上传权限)
    anon_other_write_enable=YES    \(删除/重命名的权限)

    实际配置如下:

    [root@jws-ftp vsftpd]# cat user_conf/admin
    local_root=/var/ftp
    anon_world_readable_only=NO
    write_enable=YES
    anon_mkdir_write_enable=YES
    anon_upload_enable=YES
    anon_other_write_enable=YES
    allow_writeable_chroot=YES
    [root@jws-ftp vsftpd]#

     “upload”文件内容如下:

    local_root=/var/ftp
    anon_world_readable_only=NO
    anon_umask=022               \(此配置用于web页面,由于web页面的特殊性,故单独设置上传文件权限为755,此掩码值可根据具体情况更改)
    write_enable=YES             \(写权限)
    anon_mkdir_write_enable=YES  \(新建目录权限)
    anon_upload_enable=YES       \(上传权限)
    anon_other_write_enable=YES  \(删除/重命名的权限)

    实际配置如下:

    [root@jws-ftp vsftpd]# cat user_conf/upload
    local_root=/var/ftp
    write_enable=YES
    anon_upload_enable=YES
    anon_mkdir_write_enable=YES
    anon_world_readable_only=NO
    download_enable=NO
    [root@jws-ftp vsftpd]#

     10、最后,重新启动VSFTPD

    systemctl restart vsftpd

    遇到的问题

    1、启动报错

    未创建chroot_list,可以创建一个空文件

    2、登陆报错

    从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

     要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列项:

    allow_writeable_chroot=YES

    该需求刚做没多久,开发的小伙伴又出难题,这次需要控制某虚拟机用户只能从固定的IP段去登录FTP,目前查资料没有看到这届网友有可以直接控制虚拟用户的登陆IP的方法,只能通过笨办法,通过创建和虚拟用户同名的本地账号(禁止SSH登陆)来通过PAM模块做到虚拟用户的IP限制,说白了就是限制本地用户登录的IP从而达到限制虚拟用户的目的

    PAM详解请参考:https://www.cnblogs.com/kevingrace/p/8671964.html

    1)上面我们已经搭建好通过虚拟用户访问vsftpd,现在我们在/etc/pam.d/中修改文件vsftpd

    [root@jws-ftp vsftpd]# cat /etc/pam.d/vsftpd
    #%PAM-1.0
    #session    optional     pam_keyinit.so    force revoke
    #auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
    #auth       required    pam_shells.so
    #auth       include     password-auth
    #account    include     password-auth
    #session    required     pam_loginuid.so
    #session    include     password-auth
    #session required        pam_loginuid.so
    auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
    account    required     pam_access.so            #加入该行
    account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
    [root@jws-ftp vsftpd]#

    2)修改/etc/security/access.conf配置文件,在文件底部添加下面的一行:

    [root@jws-ftp vsftpd]# vim /etc/security/access.conf
    - : admin : ALL EXCEPT 10.153.59.188 10.153.49.7   #用户admin只能从10.153.59.188和10.153.49.7这两个IP访问FTP服务
    - : download : 10.153.60.188 #download用户不允许从10.153.60.188这个IP访问FTP服务

    3)创建admin用户和download用户
    [root@jws-ftp vsftpd]# useradd -s /sbin/nologin admin
    [root@jws-ftp vsftpd]# passwd admin
    [root@jws-ftp vsftpd]# useradd -s /sbin/nologin download
    [root@jws-ftp vsftpd]# passwd download

    4)重启VSFTP服务
    [root@jws-ftp vsftpd]# systemctl restart vsftpd

    搭建VSFTP请参考(本地用户方式):https://www.cnblogs.com/yizhipanghu/p/12857964.html

  • 相关阅读:
    学习17 表单提交按钮标签
    学习16 下拉列表标签
    学习15 单选框/多选框标签
    学习14 多行文本输入标签
    学习13 文本/密码输入框的标签
    学习12 互动表单的标签
    学习10 table表格制作标签
    学习9 <span>可为部分文本设置样式属性
    金融行业网络架构与技术探讨
    二叉树
  • 原文地址:https://www.cnblogs.com/yizhipanghu/p/14101219.html
Copyright © 2011-2022 走看看