美文网首页
CentOS搭建及配置VSFTPD实录

CentOS搭建及配置VSFTPD实录

作者: 三汪 | 来源:发表于2020-04-15 13:57 被阅读0次

    说明

    环境

    • 系统:CentOS 7.6 64位
    • VSFTPD:vsftpd-3.0.2-25.el7.x86_64

    其他

    • 本文由作者三汪首发于简书。
    • 本文不包含防火墙、安全组配置部分。

    步骤

    安装

    安装

    yum install -y vsftpd
    

    安装成功后查看软件版本

    rpm -qa | grep vsftpd
    

    OpenSSL自签证书

    说明

    这一步是为了给FTP over TLS提供证书。如果不配置SSL,可以跳过这一步。

    命令

    openssl req -newkey rsa:2048 -nodes -keyout /etc/vsftpd/vsftpd.key -x509 -days 365 -out /etc/vsftpd/vsftpd.pem -subj "/C=CN/ST=SC/L=CD/O=SYSIT/OU=sa/CN=sysit.cn/emailAddress=sa@sysit.cn"
    

    参数说明

    • -newkey rsa:2048:使用RSA算法生成长度2048byte的key
    • -days 365 :证书有效期365天
    • -keyout /etc/vsftpd/vsftpd.key:指定私钥文件输出
    • -out /etc/vsftpd/vsftpd.pem:指定证书文件输出

    配置vsftpd.conf

    方式一、手动配置

    命令

    vim /etc/vsftpd/vsftpd.conf
    

    内容

    # 限制匿名登录
    anonymous_enable=NO
    
    # 允许local user登录
    local_enable=YES
    
    # 禁止写操作
    write_enable=NO
    
    # 设置local user的umask
    local_umask=022
    
    # 发送目录信息
    dirmessage_enable=YES
    
    # 上传/下载日志记录(默认位置/var/log/xferlog)
    xferlog_enable=YES
    #xferlog_file=/var/log/xferlog
    xferlog_std_format=YES
    
    # 以 nobody 作为此一服务执行者的权限
    # 因为 nobody 的权限相当的低
    # 因此即使被入侵,入侵者仅能取得nobody的权限
    nopriv_user=nobody
    
    # 欢迎消息
    ftpd_banner=Hey.
    
    # 限制local user在用户主目录下
    chroot_local_user=YES
    allow_writeable_chroot=YES
    
    # 监听
    listen=NO
    listen_ipv6=YES
    
    # pam认证模块
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    
    # CONTROL PORT控制端口
    listen_port=12345
    
    # PASV模式
    pasv_enable=YES
    pasv_min_port=12346
    pasv_max_port=12356
    
    # 不要求使用20端口传输数据
    connect_from_port_20=NO
    
    # SSL
    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    force_anon_logins_ssl=YES
    force_anon_data_ssl=YES
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=NO
    require_ssl_reuse=NO
    ssl_ciphers=HIGH
    rsa_cert_file=/etc/vsftpd/vsftpd.pem
    rsa_private_key_file=/etc/vsftpd/vsftpd.key
    
    

    方式二、直接上传配置文件

    说明

    该方式要求系统已安装lrzsz。
    若lrzsz不存在,使用yum -y install lrzsz命令安装即可使用。

    命令

    rz
    mv vsftpd.conf /etc/vsftpd/vsftpd.conf
    

    配置/etc/services

    说明

    如果没有修改默认的控制端口21,可以跳过这一步。

    命令

    vi /etc/services
    

    内容

    相关行修改成

    ftp             12345/tcp
    ftp             12345/udp
    

    启动

    设置开机自启

    systemctl enable vsftpd
    

    服务操作

    systemctl start vsftpd.service # 启动服务
    systemctl restart vsftpd.service # 重启服务
    systemctl status vsftpd.service # 服务状态查看
    

    遇到的坑

    530 Login incorrect

    描述

    在确认账号密码没问题的前提下,出现530。

    原因

    在我的情况里是因为/etc/pam.d/vsftpd这个文件里的配置导致的。
    该文件中有一行内容为:auth required pam_shells.so
    这一行的含义是:仅允许用户的登录shell为/etc/shells文件内的shell命令时,才能登录。
    而我登录的用户配置的shell是/sbin/nologin
    但是/etc/shells文件中不存在该项,导致用户登录被拒绝。

    解决

    解决方式一

    执行vim /etc/shells,在这个文件里添加/sbin/nologin即可。

    解决方式二

    当然,直接把/etc/pam.d/vsftpd中的auth required pam_shells.so注释掉,绕过校验也能成功登录。
    怎么处理,各位自己权衡。

    参考

    相关文章

      网友评论

          本文标题:CentOS搭建及配置VSFTPD实录

          本文链接:https://www.haomeiwen.com/subject/arrcvhtx.html