zoukankan      html  css  js  c++  java
  • ubuntu下vsftpd虚拟用户配置

    以下实验全部在ubuntu server 14.04 X64上进行。

    业务要求:

    现在要求创建一个FTP账号user1,该账号只能登录到/www目录下,不能切换到上级目录。同时处于安全考虑还要求该账号上传的文件权限为644,即上传的文件具有可读可写权限,但是没有可执行权限。

    一:安装vsftpd

    sudo apt-get -y install vsftpd

    查看下vsftpd都安装了那些文件

    dpkg -L vsftpd |tac

    二:vsftpd配置

    1.创建用户,如下:

    sudo useradd -m -s /bin/bash ftpuser

    注意:创建的用户ftpuser现在是无法登录到系统的,因为没有给该用户设置密码。在此,我们也无需ftpuser登录到系统,这样相对来说比较安全。

    用户创建完毕后,我们来创建对应的目录并修改其所属用户,如下:

    sudo mkdir /www

    sudo chown -R ftpuser:ftpuser /www/

    有关用户相关配置结束后,我们开始设置登录vsftp的用户与密码文件login.txt。如下:

    sudo mkdir /etc/vsftpd/

    sudo vim /etc/vsftpd/login.txt

    user1

    password1

    login.txt设置完毕后,我们要使用db_load进行加密。而db_load需要db-util这个软件。所以需要我们现在安装db-util,如下:

    sudo apt-get -y install db-util

    db-util安装完毕后,现在开始使用db_load对loginx.txt进行加密。如下:

    sudo db_load -T -t hash -f /etc/vsftpd/login.txt /etc/vsftpd/login.db

    loginx.txt加密完成后,我们现在开始配置vsftpd的PAM验证。

    2. PAM验证配置

    vsftpd的PAM验证,在此我没有使用vsftpd安装时所生成的/etc/pam.d/vsftpd文件。

    创建验证文件,如下:

    sudo vim /etc/pam.d/vsftpd.virtual

    auth required pam_userdb.so db=/etc/vsftpd/login

    account required pam_userdb.so db=/etc/vsftpd/login

    vsftpd.virtual文件的内容,也可以根据OS的版本进行调整。我现在使用的是ubuntu x64,所以也可以填写为:

    auth required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login

    account required /lib/x86_64-linux-gnu/security/pam_userdb.so db=/etc/vsftpd/login

    3. vsftp权限配置

    根据业务要求vsftpd.conf配置内容如下:

    grep -vE "^#|^$" /etc/vsftpd.conf

    listen=YES

    listen_ipv6=NO

    anonymous_enable=NO

    local_enable=YES

    write_enable=YES

    local_umask=022

    dirmessage_enable=YES

    use_localtime=YES

    xferlog_enable=YES

    connect_from_port_20=YES

    xferlog_file=/var/log/vsftpd.log

    xferlog_std_format=YES

    chroot_local_user=YES

    chroot_list_enable=NO

    allow_writeable_chroot=YES

    secure_chroot_dir=/var/run/vsftpd/empty

    pam_service_name=vsftpd

    rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem

    rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

    ssl_enable=NO

    guest_enable=YES

    pam_service_name=vsftpd.virtual

    user_config_dir=/etc/vsftpd/vu

    pasv_enable=YES

    pasv_min_port=30000

    pasv_max_port=31000

     需要添加和默认合并为:

    #listen=YES
    listen_ipv6=NO
    #anonymous_enable=NO
    #local_enable=YES
    write_enable=YES
    local_umask=022
    #dirmessage_enable=YES
    #use_localtime=YES
    #xferlog_enable=YES
    #connect_from_port_20=YES
    xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES
    chroot_local_user=YES
    chroot_list_enable=NO
    allow_writeable_chroot=YES
    #secure_chroot_dir=/var/run/vsftpd/empty
    #pam_service_name=vsftpd
    #rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    #rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    ssl_enable=NO
    guest_enable=YES
    pam_service_name=vsftpd.virtual
    user_config_dir=/etc/vsftpd/vu
    pasv_enable=YES
    pasv_min_port=30000
    pasv_max_port=31000

    在以上配置文件中,有几点需要重点指出。

    local_enable=YES

    write_enable=YES

    local_umask=022

    这两项是启用系统用户的写权限。特别是write_enable=YES项一定要启用,否则vsftpd虚拟用户将无法登录vsftpd。

    为什么会是这样?因为虚拟用户依赖与系统用户。

    chroot_local_user=YES

    chroot_list_enable=NO

    allow_writeable_chroot=YES

    这三项是配置vsftpd用户禁止切换上级目录的权限。

    guest_enable=YES

    pam_service_name=vsftpd.virtual

    user_config_dir=/etc/vsftpd/vu

    这三项是启用vsftpd虚拟用以及虚拟用户账号配置目录。

    pasv_enable=YES

    pasv_min_port=30000

    pasv_max_port=31000

    这三项是启用vsftpd被动模式及相关端口。

    3.4 虚拟用户相关配置

    vsftpd配置文件修改文件后,现在开始配置虚拟用户的相关权限。如下:

    sudo mkdir /etc/vsftpd/vu

    sudo vim /etc/vsftpd/vu/user1

    guest_username=ftpuser

    local_root=/www/

    virtual_use_local_privs=YES

    anon_umask=133

    以上配置参数,其中guest_username=ftpuser表示的是设置FTP对应的系统用户为ftpuser

    local_root=/www/表示使用本地用户登录到ftp时的默认目录。

    virtual_use_local_privs=YES虚拟用户和本地用户有相同的权限。

    anon_umask表示文件上传的默认掩码。计算方式是777减去anon_umask就是上传文件的权限。在此我们设置的是133,也就是说上传后文件的权限是644。即上传的文件对所属用户来说只有读写权限,没有执行权限。

    以上全部配置完毕后,我们来重启vsftpd,如下:

    sudo service vsftpd restart

    三 IPtables配置

    在实际生产环境中,为了安全起见,我们一般是开启防火墙的。

    在ubuntu上,我们也可以使用IPtables来进行防护。

    IPtables配置如下:

    sudo iptables-save >/home/ilanni/iptables.rule

    sudo iptables-restore < /home/ilanni/iptables.rule

    sudo iptables -nL

    sudo vim /etc/network/interfaces

    pre-up iptables-restore < /home/ilanni/iptables.rule

    post-down iptables-save < /home/ilanni/iptables.rule

  • 相关阅读:
    node.js爬虫杭州房产销售及数据可视化
    webpack1.x 升级到 webpack2.x 英文文档翻译
    一机双屏和双屏通信方案总结
    Linux 利用hosts.deny 防止暴力破解ssh
    Linux 之rsyslog+LogAnalyzer 日志收集系统
    count和distinct
    排序算法 — 冒泡排序
    排序算法 — 插入排序
    排序算法 — 选择排序
    CRLF will be replaced by LF in XXX when git commit
  • 原文地址:https://www.cnblogs.com/beebe/p/4871029.html
Copyright © 2011-2022 走看看