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

FTP是在本地和远程计算机之间传输到文件的流行方式。尽管由于安全问题它的使用已经失去了支持,但是您可以采取一些步骤来增加此协议的安全性。在本指南中,我们将

介绍


警告:FTP本质上不安全! 考虑使用SFTP代替FTP

FTP或文件传输协议,是过去在本地和远程计算机之间传输文件的流行方式。 协议本质上是不安全的,所以它的使用已经失去了青睐。

如果您仍然希望使用FTP而不是像SFTP这样使用SSH协议实现文件传输的更安全的替代方法,则可以通过配置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”:

anonymous_enable=NO

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

local_enable=YES

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

write_enable=YES

此外,取消chroot_local_user选项来限制用户自己的主目录:

chroot_local_user=YES

保存并关闭文件。

创建FTP用户


由于vsftpd保护其chroot jail的方式,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连接,因为它的跨平台支持。

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

FileZilla打开网站管理器

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

FileZilla新网站

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

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

FileZilla服务器配置

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

FileZilla用户密码

然后,系统会要求您接受TLS证书:

FileZilla服务器证书

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

结论


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

作者:Justin Ellingwood