如何在UbuntuVPS上配置vsftpd以使用SSL/TLS

来自菜鸟教程
跳转至:导航、​搜索

状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅: 本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


介绍


警告:FTP 本质上是不安全的! Consider [[“%3Ca|how-to-use-sftp-to-securely-transfer-files-with-a-remote-server]]”>using SFTP instead of FTP.

FTP 或文件传输协议是过去在本地和远程计算机之间传输文件的一种流行方式。 该协议本质上是不安全的,因此它的使用已经失宠。

如果您仍想使用 FTP 而不是更安全的替代方案(如使用 SSH 协议来实现文件传输的 SFTP),您可以通过将 FTP 配置为使用 SSL 来保护它。

在本指南中,我们将配置 vsftpd 以在 Ubuntu 12.04 VPS 上使用 SSL 证书。

安装 vsftpd


vsftpd 服务器在 Ubuntu 的默认存储库中可用。 您可以通过键入以下内容来安装它:

sudo apt-get install vsftpd

我们的服务器上现在有了 vsftpd,但我们仍然必须配置它。

配置基本 vsftpd 功能


默认配置文件位于 /etc/vsftpd.conf。 使用root权限打开它:

sudo nano /etc/vsftpd.conf

通过查找 anonymous_enable 参数并将其更改为“NO”来禁用用户匿名登录的功能:

匿名启用=否

接下来,我们需要启用使用本地身份验证文件的用户登录,因为我们禁用了匿名访问。 取消注释这一行:

local_enable=YES

为了使用户能够对文件系统进行修改,我们也将取消注释 write_enable 参数:

write_enable=YES

此外,取消注释 chroot_local_user 选项以将用户限制在他们自己的主目录中:

chroot_local_user=YES

保存并关闭文件。

创建 FTP 用户


由于 vsftpd 保护其 chroot 监狱的方式,chroot 不得为用户所有,并且不得为可写。 因此,最好实现一个专门用于 FTP 的用户。

像这样创建用户:

sudo adduser ftpuser

分配密码并在其他提示中随意按“ENTER”。 现在,授予 ftpuser 主目录的 root 所有权:

sudo chown root:root /home/ftpuser

我们需要在这个主目录中创建一个可以上传文件的单独目录。 然后,我们需要将此目录交给我们的 FTP 用户:

sudo mkdir /home/ftpuser/files
sudo chown ftpuser:ftpuser /home/ftpuser/files

现在,我们应该能够(不安全地)以 ftpuser 身份登录并将文件上传到 files 目录。

使用 vsftpd 配置 SSL


我们需要创建一些 SSL 证书来与 vsftpd 一起使用。 我们可以使用以下命令来做到这一点:

sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

这将创建一个有效期为一年的证书。 它将被放置在 /etc/ssl/private/ 目录中,我们可以在我们的配置文件中引用该目录。

将 SSL 详细信息添加到 vsftpd 配置


再次以root权限打开vsftpd配置文件:

sudo nano /etc/vsftpd.conf

在文件的底部,您应该找到与我们刚刚创建的 SSL 证书匹配的行:

rsa_cert_file=/etc/ssl/private/vsftpd.pem

我们将在下面添加额外的 SSL 信息。

当我们创建证书时,我们将密钥文件和证书包含在一个文件中,因此我们也可以将我们的私钥行指向它:

rsa_private_key_file=/etc/ssl/private/vsftpd.pem

之后,我们将添加以下行来强制 SSL。 这将限制无法处理 TLS 的客户端,但这正是我们想要的。

ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

在此之后,我们将服务器配置为使用 TLS,它实际上是 SSL 的继承者,并且首选:

ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO

最后,我们需要添加一些额外的选项来充实我们的配置文件:

require_ssl_reuse=NO
ssl_ciphers=HIGH

保存并关闭文件。

现在,我们需要重新启动服务器以使更改生效:

sudo service vsftpd restart

如何使用 FileZilla 连接到服务器


大多数现代 FTP 客户端都可以配置为使用 SSL 和 TLS 加密。 由于 FileZilla 的跨平台支持,我们将演示如何使用它进行连接。

在配置面板中,您应该会在最左侧看到一个打开“站点管理器”的按钮。 点击这个:

在出现的窗口界面右下角点击“新建站点”:

命名新配置。 填写IP地址。 在“加密”下拉菜单下,选择“要求显式 FTP over TLS”。

对于“登录类型”,选择“询问密码”。 在“用户”字段中填写您创建的 ftp 用户:

点击界面底部的“连接”。 系统将要求您输入用户密码:

然后将要求您接受 TLS 证书:

您现在应该使用 TLS/SSL 加密与您的服务器连接。

结论


这种设置提高了 FTP 的安全性,但在建立连接时仍然存在不安全性。 如果可能,最好切换到 SFTP 进行此类操作。 但是,如果您决定使用 FTP,则应确保尽可能使用 TLS/SSL。

贾斯汀·艾林伍德