介绍
<$>[警告] 警告 :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 以使用安全连接,因为其跨平台兼容性。
在接口中,你可以点击一个图标来打开网站管理器
。它应该看起来像这个图像左边的图标:
在出现的新接口中,您应该点击左下角的新网站
按钮。
请在主机
字段中填写 IP 地址,并从协议下载菜单中选择FTP - File Transfer Protocol
。
从登录类型菜单中选择请求密码
。填写我们创建的用户
字段的 FTP 用户:
现在,你可以点击连接
在面板的底部. 你将被要求输入你的FTP用户的密码:
下一步是第一个信号,表明我们正在使用TLS连接到我们的远程服务器,我们将被要求接受正在使用的证书。
您应该能够查看您在创建证书时填写的信息,以验证您实际上正在连接到正确的位置。
接受证书以建立连接。
结论
虽然这种配置是朝着正确的方向迈进的一步,但在建立连接之前仍然会遇到安全问题. 应该避免在由于这些问题而对互联网开放的大多数设置中使用 SFTP。