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

介绍


<$>[警告] 警告 :FTP不安全! 考虑使用SFTP而不是FTP(https://www.digitalocean.com/community/articles/how-to-use-sftp-to-secure-transfer-files-with-a-remote-server)。

FTP,或文件传输协议,是将文件传输到本地和远程服务器之间的一种方式. 虽然非常流行的和普遍的,但由于其设计中缺乏安全性,这种文件传输方法的使用已经不受欢迎。

一个非常有能力的替代方案是SFTP,如上所述. 这个协议实现了通过SSH的文件共享. 如果你必须使用FTP,你至少应该通过SSL/TLS证书保护连接。

在本指南中,我们将配置 vsftpd 以在 CentOS 6.4 VPS 上使用 TLS/SSL 证书。

安装 vsftpd


vsftpd 服务器在 CentOS 的默认存储库中可用,我们可以通过键入:

1sudo yum install vsftpd

vsftpd服务器现在安装在我们的VPS上,我们可以在下一节配置一些连接选项。

配置 vsftpd 的基本设置


在 CentOS 上,对 vsftpd 的主要配置文件保存在 /etc/vsftpd/ 目录中,称为 `vsftpd.conf。

在您的 root 特权编辑器中打开此文件:

1sudo nano /etc/vsftpd/vsftpd.conf

我们需要调整此文件中的一些基本参数,以增加安全性和建立我们的连接选项。

我们要做的第一件事是禁用匿名用户,虽然这个选项对于大型、公开面向的文件卸载(如公共软件存储库)有意义,但对于个人FTP服务器来说,这几乎从来不是一个好主意。

1anonymous_enable=NO

由于我们正在禁用匿名用户,我们需要为我们的系统提供一种方式来验证我们的用户,我们将允许本地用户,这意味着vsftpd将使用我们的Linux系统用户和身份验证来确定谁可以登录。

要启用此功能,请确保设置此选项:

1local_enable=YES

我们还将允许他们写入,以便他们可以上传材料和修改内容:

1write_enable=YES

我们还希望将我们的用户限制在各自的家庭目录中,其选项是:

1chroot_local_user=YES

这对于一个基本的(非SSL)FTP配置就足够了,我们稍后会添加SSL功能。

保存并关闭文件。

创建一个FTP用户


我们选择使用本地用户,并将其限制在其主目录中,并使用chroot环境。

使用此命令创建新用户:

1sudo adduser ftpuser

将密码分配给新用户,键入:

1sudo passwd ftpuser

CentOS 6.4 中的 vsftpd 版本较旧,因此安装的这个部分比一些新版本更容易。

使用 vsftpd 配置 SSL


取得sftpd与SSL操作的第一步是创建我们的SSL证书,我们实际上将使用TLS,这是一个协议,是SSL的继任者,更安全。

我们将在SSL目录中创建一个子目录来存储我们的文件:

1sudo mkdir /etc/ssl/private

要在单个文件中创建证书和密钥,我们可以使用以下命令:

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

最重要的是您的服务器的共同名称,这将是您将使用的 IP 地址或域名连接。

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


现在,我们需要更改我们的配置,以指向新的密钥并配置安全连接。

再次打开 vsftpd 配置文件作为 root:

1sudo nano /etc/vsftpd/vsftpd.conf

滚动到文件的底部. 我们将添加我们的SSL/TLS信息在这里。

我们实际上将两个信息组合成一个文件,所以我们会将两个选项指向同一个文件:

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

接下来,我们需要允许使用这些文件并禁用匿名用户。我们还应该强制使用SSL用于数据传输和登录流程。

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

接下来,我们将限制 TLS 连接的类型,这比 SSL 更安全,我们将通过明确允许 TLS 并拒绝使用 SSL 来做到这一点:

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

我们将在完成之前添加一些更多的配置选项:

1require_ssl_reuse=NO
2ssl_ciphers=HIGH

保存并关闭文件。

我们需要重新启动 vsftpd 以允许我们的更改:

1sudo /etc/init.d/vsftpd restart

我们还会将其配置为每次重启时自动启动:

1sudo chkconfig vsftpd on

如何使用FileZilla连接到vsftpd服务器


SSL 和 TLS 连接可用于大多数现代 FTP 客户端,我们将向您展示如何设置 FileZilla 以使用安全连接,因为其跨平台兼容性。

在接口中,你可以点击一个图标来打开网站管理器。它应该看起来像这个图像左边的图标:

FileZilla Open Site Manager

在出现的新接口中,您应该点击左下角的新网站按钮。

FileZilla New Site

请在主机字段中填写 IP 地址,并从协议下载菜单中选择FTP - File Transfer Protocol

从登录类型菜单中选择请求密码。填写我们创建的用户字段的 FTP 用户:

FileZilla Server Configuration

现在,你可以点击连接在面板的底部. 你将被要求输入你的FTP用户的密码:

FileZilla user password

下一步是第一个信号,表明我们正在使用TLS连接到我们的远程服务器,我们将被要求接受正在使用的证书。

FileZilla Server Certificate

您应该能够查看您在创建证书时填写的信息,以验证您实际上正在连接到正确的位置。

接受证书以建立连接。

结论


虽然这种配置是朝着正确的方向迈进的一步,但在建立连接之前仍然会遇到安全问题. 应该避免在由于这些问题而对互联网开放的大多数设置中使用 SFTP。

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