如何使用vsftpd搭建FTP服务器(TLS/SSL显式加密)


    目录
  • 使用vsftpd搭建FTP服务器(TLS/SSL显式加密)
  • 安装vsftpd服务
  • 备份配置文件并进行配置
  • 重启vsftpd服务
  • 配置防火墙列外
  • 开启SELinux的ftpd_full_access布尔值为on
  • 使用WinSCP访问
  • 命令行以TLS/SSL显式加密方式访问FTP服务器
    • 安装和配置lftp
      • 1 安装lftp
      • 2 配置lftp
      • 3 命令行方式登录ftp

    使用vsftpd搭建FTP服务器(TLS/SSL显式加密)
    安装vsftpd服务
    使用vsftpd RPM安装包安装即可,如果可以访问YUM镜像源,通过dnf或者yum工具更加方便。
    
yum -y install vsftpd

    启动vsftpd、查看服务状态
    
systemctl enable vsftpd
systemctl start vsftpd
systemctl status vsftpd

    备份配置文件并进行配置
    cp /etc/vsftpd/vsftpd.conf{,_bak} 
    ~]# grep -E -v '^#|^$' /etc/vsftpd/vsftpd.conf 
    
    -- 默认放开的配置
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    -- 启用 chroot,限制本地用户到其主目录,不配置allow_writeable_chroot,会报OOP:chroot()失败错误。
    chroot_local_user=YES
    allow_writeable_chroot=YES
    -- 可配可不配,用于放开哪些用户可以不用chroot
    chroot_list_enable=YES
    chroot_list_file=/etc/vsftpd/chroot_list
    -- 配置启用TLS/SSL显式加密
    # 启用 SSL 功能
    ssl_enable=YES  
    force_local_logins_ssl=YES
    # 指定服务器的 RSA 证书文件
    rsa_cert_file=/etc/ssl/certs/vsftpd.pem
    rsa_private_key_file=/etc/ssl/private/vsftpd.pem
    # 允许使用 SSL/TLS 协议的最低版本(可选,根据需要设置)
    ssl_tlsv1=YES
    ssl_sslv2=NO
    ssl_sslv3=YES
    # 指定允许的加密套件(可选,根据需要设置)
    ssl_ciphers=HIGH
    # 指定显式加密场景下,动态数据连接监听端口范围(默认范围比较大)。
    注:这里只需要配置范围,不需要开启被动模式(无需配置:pasv_enable=Yes)
    pasv_min_port=30000
    pasv_max_port=30999
    
    重启vsftpd服务
    
systemctl restart vsftpd

    配置防火墙列外
    如果不将动态数据连接监听端口范围放开访问会一直卡在获取目录列表上(vsftpd 读取目录列表失败)。
    
firewall-cmd --add-port 21/tcp --permanent
firewall-cmd --add-port 30000-30999/tcp --permanent
firewall-cmd --reload

    开启SELinux的ftpd_full_access布尔值为on
    
setsebool -P ftpd_full_access on

    或者干脆关掉SELinux。
    setenforce 0
    原因:
    本地用户访问家目录:当需要让本地用户能够通过FTP访问其家目录时,仅在vsftpd配置文件中将local_enable设置为YES可能还不够。因为SELinux默认会限制这种访问,导致用户无法正常登录或访问家目录中的文件。启用ftpd_full_access后,SELinux将允许FTP进程访问用户的家目录,从而使用户能够正常进行文件传输等操作。
    使用WinSCP访问
    
    
    如果想使用命令行访问呢?这个就比较复杂了,下面给大家补充介绍命令行以TLS/SSL显式加密方式访问FTP服务器
    命令行以TLS/SSL显式加密方式访问FTP服务器
    昨天留了一个小尾巴~~就是在命令行或者代码调用命令,以TLS/SSL显式加密方式,访问FTP服务器,上传和下载文件。
    有小伙伴可能说ftp命令不可以吗?不可以哦~~
    ftp 命令本身不支持显式加密。要实现 FTP 的显式加密,可以使用支持 FTPS(FTP over SSL/TLS)的客户端,比如 lftp。以下是使用 lftp 进行显式加密连接的步骤:
    安装和配置lftp
    1 安装lftp
    在 Debian/Ubuntu 系统上,运行以下命令安装:
    
sudo apt-get update
sudo apt-get install lftp

    在 CentOS/RHEL 系统上,运行:
    
sudo yum install lftp

    2 配置lftp
    编辑/etc/lftp.conf配置文件,将如下配置追加到文件后面:
    set ftps:initial-prot ""
    set ftp:ssl-force true
    set ftp:ssl-protect-data true
    set ssl:verify-certificate no  #轻易不要设置,除非报证书不可信,无法登录ftp。
    3 命令行方式登录ftp
    lftp -u 用户名 IP或域名
    
    附录
    1. set ftps:initial-prot ""
    作用:设置FTP连接的初始保护模式。
    解释:此设置将初始保护模式留空,表示不指定特定的保护模式,允许使用默认的保护模式。FTP客户端和服务器之间会协商确定实际使用的保护模式。
    2. set ftp:ssl-force true
    作用:强制使用SSL/TLS加密连接。
    解释:启用此设置后,客户端将只尝试通过SSL/TLS加密的方式与FTP服务器建立连接。如果服务器不支持加密连接,客户端将无法连接到服务器。这可确保数据传输的安全性,但需要服务器支持SSL/TLS以避免连接失败。
    3. set ftp:ssl-protect-data true
    作用:启用SSL/TLS加密保护数据连接。
    解释:启用此设置后,客户端会使用SSL/TLS加密保护数据传输过程,确保在文件传输过程中数据的安全性。
    4. set ssl:verify-certificate no
    作用:禁用SSL/TLS证书验证。
    解释:此设置会跳过对SSL/TLS证书的验证,允许客户端与服务器连接,即使服务器的证书无效或不可信。在某些测试环境中,当证书尚未正确配置时,这会很有用。但它使连接易受中间人攻击,因为无法验证服务器的身份
    到此这篇关于使用vsftpd搭建FTP服务器(TLS/SSL显式加密)的文章就介绍到这了,更多相关vsftpd搭建FTP服务器内容请搜索电脑手机教程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持电脑手机教程网!