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

金钱(警告)

状态: 被贬值

如果您目前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议升级或迁移到支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已於 2017 年 4 月 28 日到達終止期 (EOL) 並不再收到安全性修補或更新。

相反,请参阅: 此指南可能仍然有用作为参考,但可能不会在其他Ubuntu版本上工作. 如果可用,我们强烈建议使用为您正在使用的Ubuntu版本编写的指南。

介绍


警告:FTP本质上是不安全的! 考虑 使用SFTP而不是FTP

FTP,或文件传输协议,是过去在本地和远程计算机之间传输文件的一种流行的方式。

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

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

安装 vsftpd


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

1sudo apt-get install vsftpd

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

配置基本 vsftpd 功能


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

1sudo nano /etc/vsftpd.conf

禁用用户匿名登录的功能,通过查找匿名_允许参数并将其更改为NO:

anonymous_enable=NO

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

1local_enable=YES

为了使用户能够对文件系统进行更改,我们还会删除writ_enable参数:

1write_enable=YES

此外,不要评论chroot_local_user选项,以限制用户到自己的主目录:

1chroot_local_user=YES

保存并关闭文件。

创建一个FTP用户


由于 vsftpd 以安全的方式保护其 chroot 监狱,因此,chroot 不得属于用户,也不得可编写。

创建用户如下:

1sudo adduser ftpuser

指定密码,并通过其他提示按下ENTER。现在,给 ftpuser 主目录的根所有权:

1sudo chown root:root /home/ftpuser

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

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

现在,我们应该能够登录(不安全)作为ftpuser,并将文件上传到文件目录。

使用 vsftpd 配置 SSL


我们需要创建一些SSL证书用于vsftpd,我们可以用以下命令做到这一点:

1sudo 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 配置文件:

1sudo nano /etc/vsftpd.conf

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

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

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

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

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

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

1ssl_enable=YES
2allow_anon_ssl=NO
3force_local_data_ssl=YES
4force_local_logins_ssl=YES

之后,我们将服务器配置为使用TLS,这实际上是SSL的继任者,并偏好:

1ssl_tlsv1=YES
2ssl_sslv2=NO
3ssl_sslv3=NO

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

1require_ssl_reuse=NO
2ssl_ciphers=HIGH

保存并关闭文件。

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

1sudo service vsftpd restart

如何使用FileZilla连接到服务器


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

在配置面板中,你应该看到左边的按钮打开网站管理器

FileZilla Open Site Manager

点击显示的窗口界面右下角的新网站:

FileZilla New Site

填写 IP 地址,在加密下载菜单中,选择要求明确的 FTP 通过 TLS

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

FileZilla Server Configuration

在接口的底部点击连接,您将被要求提供您的用户密码:

FileZilla user password

您将被要求接受 TLS 证书:

FileZilla Server Certificate

您现在应该通过 TLS/SSL 加密连接到您的服务器。

结论


此设置改善了 FTP 的安全性,但在建立连接时仍然存在不安全性。如果有可能的话,最好为此类操作切换到 SFTP。

By Justin Ellingwood
Published At
Categories with 技术
comments powered by Disqus