• vsFTPD编译安装使用实用手册


    实验环境:系统 CENTOS5.5,用户 root,软件 vsftpd-2.3.4
    实验以自行编安装为基础,与通过yum方式安装存在一些差异。

    lykyl原创,转载请注明出处)


    一、编译安装
    1、获取并解压缩源码
    wget ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.3.4.tar.gz /usr/local/src/
    tar -xvzf /usr/local/src/vsftpd-2.3.4.tar.gz

    2、系统环境设置
    添加vsftpd的服务启动用户,只给最低权限且不允许登录系统
    useradd -g nobody -M -s /sbin/nologin nobody
    添加基本空目录,用于FTP用户登录后基本定位
    mkdir /usr/share/empty

    建立FTP的默认目录
    mkdir /var/ftp/
    添加FTP用户的映射本机帐号,强制设定home目录为/var/ftp,不允许登录系统
    useradd -d /var/ftp -s /sbin/nologin ftp
    设定家目录所有者以及默认权限
    chown root:root /var/ftp
    chmod go-w /var/ftp

    3、编译设置是否支持TCP WRAPPERS和SSL
    vi /usr/local/src/vsftp-d.2.3.4/builddefs.h
    /*默认值如下:*/
    #undef VSF_BUILD_TCPWRAPPERS  /*是否支持TCP WRAPPERS*/
    #define VSF_BUILD_PAM  /*是否支持自定义虚拟用户登录*/
    #undef VSF_BUILD_SSL  /*是否支持SSL传输*/
    /*支持则将对应项设为define,否则设为undef,建议全部define*/

    4、编译部署
    cd /usr/local/src/vsftp-d.2.3.4
    make
    make install
    运行后,系统会尝试进行以下操作:
    cp vsftpd /usr/local/sbin/vsftpd
    cp vsftpd.conf.5 /usr/local/man/man5
    cp vsftpd.8 /usr/local/man/man8
    如果运行中有cp报错,可以手动将这些文件cp到对应目录。
    需要注意的是,系统不会自动将vsftp.conf文件cp到/etc目录,需要手动cp或直接vi生成。

    二、虚拟用户访问设置
    1、建立虚拟用户(这里只介绍针对Berkeley DB建立虚拟用户的方法)
    A、安装DB4组合工具(Berkeley DB)
    yum install db4-utils

    B、建立虚拟用户名文本文件/tmp/logins.txt
    格式为奇数行是用户名,偶数行是对应密码,形式如下:
    username1
    password1
    username2
    password2

    C、建立虚拟用户库文件
    db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
    rm -f /tmp/logins.txt
    chmod 600 /etc/vsftpd_login.db

    D、在/var/ftp/目录下为每个虚拟用户建立FTP默认根目录。目录名与用户同名,并改变所有者为ftp,设置权限为700(此项不是必须要做,根据用户自定义设置中local_root值而定)
    mkdir /var/ftp/<username>
    chown ftp:ftp /var/ftp/<username>
    chmod 700 /var/ftp/<username>

    E、获取数据库中用户信息至文本文件
    db_dump -da /etc/vsftpd_login.db | grep " data" |sed 's/^.*data: //g' >/tmp/logins.txt
    *注意命令中的空格

    三、vsftpd设置
    1、编辑 /etc/vsftpd.conf
    ftpd_banner=CentOS.Test1 FTP
    connect_from_port_20=YES
    listen=YES
    background=YES
    max_clients=20
    max_login_fails=3
    max_per_ip=3
    pasv_min_port=50000
    pasv_max_port=54500
    #local_max_rate=200000    #视具体情况决定是否限速
    idle_session_timeout=700
    data_connection_timeout=200
    tcp_wrappers=YES
    #-------------------------------------
    guest_enable=YES
    guest_username=ftp
    local_enable=YES
    chroot_local_user=YES
    user_sub_token=$USER
    #virtual_use_local_privs=YES
    user_config_dir=/etc/vsftpd_user_conf.d
    check_shell=NO
    write_enable=NO
    anonymous_enable=NO
    anon_upload_enable=NO
    anon_world_readable_only=NO
    anon_mkdir_write_enable=NO
    anon_other_write_enable=NO
    dirlist_enable=NO
    write_enable=NO
    download_enable=NO
    userlist_enable=YES
    userlist_deny=NO
    userlist_file=/etc/vsftpd_allow_users
    #-------------------------------------
    use_localtime=YES
    chown_uploads=YES
    chown_username=ftp
    dirmessage_enable=YES
    pam_service_name=vsftp
    anon_umask=027
    local_umask=027
    #-------------------------------------
    xferlog_enable=YES
    xferlog_file=/var/log/vsftpd.log
    xferlog_std_format=YES
    #-------------------------------------
    ssl_enable=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    rsa_cert_file=/usr/share/ssl/certs/vsftpd.pem

    2、生成SSL证书

    openssl req -new -x509 -nodes -out /usr/share/ssl/certs/vsftpd.pem -keyout /usr/share/ssl/certs/vsftpd.pem

    3、配置iptables
    iptables -A INPUT -i eth0 -p tcp --dport 20:21 -j ACCEPT
    iptables -A INPUT -i eth0 -p tcp --dport 50000:54500 -j ACCEPT

    4、添加允许访问FTP的用户
    编辑/etc/vsftpd_allow_users,添加允许访问FTP的用户名,每行一个。注意,如果设定为虚拟用户及本地用户都可以访问,则允许混合添加这两类用户名,只是要注意,不能重名。

    四、vsftpd的pam模块
    1、虚拟用户认证
    vi /etc/pam.d/vsftp
    auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
    account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

    2、虚拟用户及本地用户认证
    vi /etc/pam.d/vsftp
    auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd_login
    account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd_login
    auth required /lib/security/pam_listfile.so item=user sense=allow file=/etc/vsftpd_allow_users onerr=fail
    auth required /lib/security/pam_unix.so shadow nullok
    auth required /lib/security/pam_shells.so
    account required /lib/security/pam_unix.so
    session required /lib/security/pam_unix.so

    五、用户个性化设置
    在/etc/vsftpd_user_conf.d目录下建立与用户同名的文件,在其中设置每个帐号的具体权限。以下仅列出有代表性的几个权限设置,更具体的设置请参考VSFTPD.CONF说明以及FTP协议常用命令
    1、所有权限
    local_root=/var/ftp/$USER
    write_enable=YES
    dirlist_enable=YES
    download_enable=YES
    virtual_user_local_Privs=YES
    cmds_allowed=ABOR,ACCT,ALLO,APPE,CDUP,CWD,DELE,HELP,LIST,MDTM,MODE,MKD,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,RMD,RNFR,RNTO,SITE,SIZE,SMNT,STAT,STOR,STOU,STRU,SYST,TYPE,USER

    2、只允许上传
    local_root=/var/ftp/$USER
    write_enable=YES
    dirlist_enable=YES
    virtual_user_local_Privs=YES
    cmds_allowed=ABOR,APPE,CDUP,CWD,HELP,LIST,MDTM,MODE,MKD,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,SITE,SIZE,STAT,STOR,STOU,STRU,TYPE,USER

    3、只允许下载
    local_root=/var/ftp/$USER
    write_enable=NO
    dirlist_enable=YES
    download_enable=YES
    virtual_user_local_Privs=YES
    cmds_allowed=ABOR,CDUP,CWD,HELP,LIST,MDTM,MODE,NLST,NOOP,PASS,PASV,PORT,PWD,QUIT,REIN,REST,RETR,SITE,SIZE,STAT,STRU,TYPE,USER

    六、守护服务设置
    1、超级守护进程设置
    确保/etc/vsftpd.conf中,listen=NO
    编辑 /etc/xinet.d/vsftpd,内容如下:
    service ftp
    {
            disable = no
            socket_type             = stream
            wait                    = no
            user                    = root
            server                  = /usr/local/sbin/vsftpd
            nice                    = 10
    }

    2、独立启动进程
    确保/etc/vsftpd.conf中,listen=YES,background=YES
    编辑/etc/rc.d/rc.local,在文件最后插入下列内容:
    /usr/local/sbin/vsftpd

    七、一些问题
    ?安装DB4(Berkeley DB)后,每次启动FTP都报下面的错:
    Please login with USER and PASS.
    Please login with USER and PASS.
    KERBEROS_V4 rejected as an authentication type
    !DB4安装后会创建可执行文件/usr/kerberos/bin/ftp。在未指定目录的情况下运行ftp,系统会优先执行/usr/kerberos/bin/ftp,因为认证问题会报一些警告信息。可以使用绝对路径来运行系统默认ftp程序
    # which -a ftp
    /usr/kerberos/bin/ftp
    /usr/bin/ftp

    ?vsftpd启动时报XX配置不正确
    !确保vsftpd.conf中每一项设置的值前后都不能有空格。



    ?为什么按你的手册配置后,有的文件下载、覆盖或删除会失败
    !下列条件至少要符合一条才能保证文件操作成功

    1、文件所有者是ftp(vsftpd的映射帐号,虚拟用户和本地用户登录后都会映射到此帐号)。

    2、文件的other权限为rw。

  • 相关阅读:
    这两天自己模仿写的一个Asp.Net的显示分页方法 附加实体转换和存储过程
    JavaScript 删除 ASP.NET 设置的多值 Cookie 的方法
    Http 请求处理流程
    ASP.NET实现二维码(QRCode)的创建和读取
    ASP.NET实现网站的自动升级
    ASP.NET乱码深度剖析
    ASP.net学习总结
    ASP.net MVC基础
    umeditor编辑器复制粘贴图片上传
    fckeditor编辑器复制粘贴图片上传
  • 原文地址:https://www.cnblogs.com/lykyl/p/1989709.html
Copyright © 2020-2023  润新知