介绍
警告: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连接,因为它的跨平台支持。
在配置面板中,您应该看到最左边的按钮以打开“站点管理器”。 点击这里:
单击出现的窗口界面右下角的“新站点”:
命名新配置。 填写IP地址。 在“加密”下拉菜单中,选择“需要通过TLS的显式FTP”。
对于“登录类型”,选择“请求密码”。 填写在“用户”字段中创建的ftp用户:
单击界面底部的“连接”。 系统将要求您输入用户的密码:
然后,系统会要求您接受TLS证书:
您现在应该使用TLS / SSL加密连接到您的服务器。
结论
此设置可提高FTP的安全性,但在建立连接时仍然存在不安全问题。 如果可能,最好切换到这些类型的操作的SFTP。 但是,如果你决定使用FTP,你应该确保尽可能使用TLS / SSL。