在Ubuntu 16.04中使用TLS/SSL加密保护VSFTPD服务器
在之前的教程中,我向我们展示了如何在Ubuntu 16.04 LTS服务器中使用VSFTPD设置和配置基本的FTP服务器。
如果尚未设置VSFTPD服务器,请检查以下链接。
- 在Ubuntu 16.04 LTS中安装VSFTPD服务器
默认情况下,VSFTPD是不安全的。
我们必须做一些事情以使FTP服务器位安全。
在本教程中,让我向我们展示如何使用TLS/SSL加密保护VSFTPD服务器。
准备工作
确保已经安装并配置了VSFTPD,如我在上一教程中提到的那样。
该教程的链接已在上面给出。
安装和配置后,我们需要将root所有权分配给ftp用户主目录。
记住,我在上一教程中创建了一个名为“ test”的ftp用户。
因此,让我们将根所有权分配给“测试”用户的主目录/home/test /。
为此,请运行:
sudo chown root:root /home/test/
然后,在/home/test /目录中创建一个单独的目录来存储测试用户的文件。
让我们称它为“道路”。
sudo mkdir /home/test/theitroad
然后,将测试用户的所有权分配给上面创建的目录。
sudo chown test:test /home/test/theitroad/
我们已经完成了准备工作。
我们可以上传并下载到/home/test/theitroad /目录。
但是请记住,我们还没有使FTP服务器安全。
让我们继续并使用SSL配置VSFTPD以保护我们的FTP服务器。
使用TLS/SSL连接配置VSFTPD
首先,让我们创建用于VSFTPD的必需SSL证书。
为此,请从终端运行以下命令:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
输入所需的值。
输出示例:
Generating a 1024 bit RSA private key ............++++++ ..........++++++ writing new private key to '/etc/ssl/private/vsftpd.pem' ---- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ---- Country Name (2 letter code) [AU]:IN State or Province Name (full name) [Some-State]:TN Locality Name (eg, city) []:Erode Organization Name (eg, company) [Internet Widgits Pty Ltd]:theitroad Organizational Unit Name (eg, section) []:Technical Common Name (e.g. server FQDN or YOUR name) []:ubuntuserver Email Address []:Hyman@theitroad
上面的命令将创建所需的SSL证书并将其存储在/etc/ssl/private /目录中。
这些证书的有效期最长为365天。
现在,将创建的SSL证书添加到vsftpd配置文件。
为此,请编辑vsftpd配置文件:
sudo nano /etc/vsftpd.conf
找到以下几行:
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
并且,将证书和密钥路径替换为上面创建的正确路径。
[...] rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem [...]
并且,编辑或者添加以下行以强制vsftpd服务器使用SSL和TLS加密。
ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH
修改值之后,vsftpd配置文件应如下所示:
保存并关闭文件。
最后,重新启动vsftpd服务以使更改生效。
sudo systemctl restart vsftpd
或者
sudo service vsftpd restart
使用SSL的VSFTPD配置已结束。
让我们使用FileZilla测试安全的FTP服务器。
使用FileZilla测试VSFTPD服务器
从菜单或者Unity打开FileZilla。
从FileZilla转到“文件”->“站点管理器”。
站点管理器 Screen应如下所示。
单击新站点。
在主机字段中输入FTP服务器IP地址或者主机名。
从“加密”下拉框中选择“需要通过SSL的显式FTP”。
然后,从登录类型列中选择“询问密码”选项。
然后,输入FTP用户名。
最后,单击“连接”。
在下一个 Screen中,将要求我们输入ftp用户的密码,然后单击“确定”。
检查证书值。
如果一切看起来正确,请单击“确定”继续。
答对了!现在,我们应该已通过TLS/SSL加密连接到VSFTPD服务器。
现在,我们的VSFTPD服务器已安全并可以使用。