使用 SSL 配置 VSFTPD

如何配置 VSFTPD 以支持 SSL 加密连接?

在本文中,我们将讨论如何配置 vsftpd 以使用 SSL 加密。 如果您还没有安装 vsftpd,您可能希望在继续之前访问这些文章之一。

如何在 CentOS 7 上安装 VSFTPD

如何在 CentOS 6 上安装 VSFTPD

如何安装VSFTPD Fedora 23

如何在 Ubuntu 15.04 上安装 VSFTPD

如何在 Ubuntu 16.04 上安装 VSFTPD

准备好? 太棒了,让我们开始吧。

  1. 为 SSL 密钥准备一个地方:
    mkdir /etc/ssl/private
  2. 为了这 example 我们将使用自签名 SSL:
    openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.key -out /etc/ssl/certs/vsftpd.crt

    注意:如果您购买了 SSL,您可以将密钥放在 /etc/ssl/private/vsftpd.key 中,将证书放在 /etc/ssl/certs/vsftpd.crt 中。

  3. 接下来,配置 vsftpd 以使用该证书。
    vim /etc/vsftpd/vsftpd.conf
  4. 在 /etc/vsftpd/vstpd.conf 的底部添加以下配置。
    ssl_enable=YES
    allow_anon_ssl=NO
    force_local_data_ssl=YES
    force_local_logins_ssl=YES
    ssl_tlsv1_1=YES
    ssl_tlsv1_2=YES
    ssl_tlsv1=NO
    ssl_sslv2=NO
    ssl_sslv3=NO
    require_ssl_reuse=YES
    ssl_ciphers=HIGH
    rsa_cert_file=/etc/ssl/certs/vsftpd.crt
    rsa_private_key_file=/etc/ssl/private/vsftpd.key
  5. 要退出输入“:wq”,将保存文件并退出程序。

SSL 设置

现在让我们来看看这些设置,看看它们做了什么。

  • 此选项启用我们对 vsftpd 的 SSL 支持。
    ssl_enable=yes
  • 防止匿名 SSL/TLS 加密登录,本质上是访客用户。
    allow_anon_ssl=NO
  • 我们将强制对您的用户名/密码和您的数据进行 SSL/TLS 加密,以确保其安全。
    force_local_data_ssl=YES
    force_local_logins_ssl=YES

    使用 TLS 1.1 和 1.2 提供的更强大、更好的加密。
    ssl_tlsv1_1=YES
    ssl_tlsv1_2=YES

  • TLS 1.0 变得比我们想要的更不安全,因此我们将禁用它。 请注意,一些较旧的 FTP 客户端与较新的 TLS 版本不兼容,可能需要将此选项设置为“YES”。
    ssl_tlsv1=NO
  • 为了保护 FTP 连接免受 BEAST 和 POODLE 漏洞的影响,我们将禁用 SSLv2 和 SSLv3。
    ssl_sslv2=NO
    ssl_sslv3=NO
  • 继续我们的安全改进,我们将通过启用以下功能来添加一些额外的保护,以防止中间人 (MITM) 攻击。 这可能与某些较旧的 FTP 客户端不兼容。 如果您遇到连接丢失,请尝试将此选项设置为“否”。
    require_ssl_reuse=YES
  • 这将要求服务器使用更强大的密码套件。
    ssl_ciphers=HIGH
  • 最后,我们的 crt 和密钥文件。
    rsa_cert_file=/etc/ssl/certs/vsftpd.crt
    rsa_private_key_file=/etc/ssl/private/vsftpd.key

最后一步

  1. 现在我们已将所有内容添加到配置文件中,我们应该能够重新启动 vsftpd 并开始上传。
    systemctl restart vsftpd
  2. 如果您使用的是 CentOS 6 或不支持 systemd 的系统,您应该可以使用以下命令重新启动 vsftpd。
    service restart vsftpd

故障排除:

如果您遇到类似于以下两个错误之一的错误,请查看本文。
500 OOPS: vsftpd: refusing to run with writable root inside chroot()

GnuTLS error -15: An unexpected TLS packet was received.

SSL 加密是保护传输到服务器的数据的主要形式之一。 现在您可以高枕无忧了,因为您在为您自己和您的用户提供安全资源方面又迈出了一步。