[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接

原址:Setting Up a Secure FTP Server using SSL/TLS on Ubuntu

在本教程中,我们将介绍如何在 Ubuntu 16.04 / 16.10 中使用 SSL / TLS 加密 FTP(本文中,我们将使用 VsFTP,一个号称非常安全的 FTP 软件)

在完成本指南中的所有步骤之后,我们将进一步去了解在FTP服务器中启用加密服务的基本原理,以确保能安全的传输数据。

必备条件:

      必须在Ubuntu中已经安装并配置完FTP服务器

请确保本文中的所有命令都将以root或sudo特权帐户运行。

Step 1:在 Ubuntu 上为 FTP 生成 SSL / TLS 证书

1.我们将首先在 /etc/ssl/ 下创建一个子目录(如果这个目录不存在),以存储SSL / TLS证书和密钥文件:

$ sudo mkdir  /etc/ssl/private

2.现在,我们通过运行下面的命令在单个文件中生成证书和密钥。

$ sudo openssl req -x509 -nodes -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem -days 365 -newkey rsa:2048

上述命令将提示您回答以下问题,请输入自己特定的值。

Country Name (2 letter code) [XX]:IN

State or Province Name (full name) []:Lower Parel

Locality Name (eg, city) [Default City]:Mumbai

Organization Name (eg, company) [Default Company Ltd]:TecMint.com

Organizational Unit Name (eg, section) []:Linux and Open Source

Common Name (eg, your name or your server's hostname) []:tecmint

Email Address []:[email protected]

Step 2:在 Ubuntu 上配置 VsFTP 使用 SSL / TLS

3.在进行任何 VsFTP 配置之前,对于启用了UFW防火墙的用户,必须打开端口990和40000-50000,以允许在VSFTPD配置文件中分别设置TLS连接和被动端口的端口范围:

sudo ufw allow 990/tcp

sudo ufw allow 40000:50000/tcp

sudo ufw status

4.现在,打开VSFTPD配置文件并在其中定义SSL详细信息:

sudo vi /etc/vsftpd/vsftpd.conf

OR

sudo nano /etc/vsftpd/vsftpd.conf

然后,添加或找到选项 ssl_enable 并将其值设置为 YES 以激活 SSL 的使用,因为 TLS 比 SSL 更安全,因此通过启用 ssl_tlsv1 选项,我们将限制 VSFTPD 使用 TLS:

ssl_enable=YES

ssl_tlsv1=YES

ssl_sslv2=NO

ssl_sslv3=NO

5.接下来,使用 # 字符注释掉下面的行,如下所示:

#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem

#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

6.现在,我们还必须防止匿名用户使用SSL,然后强制所有非匿名登录使用安全的SSL连接进行数据传输,并在登录期间发送密码:

allow_anon_ssl=NO

force_local_data_ssl=YES

force_local_logins_ssl=YES

7.此外,我们可以使用以下选项在FTP服务器中添加更多的安全功能。使用option_ssl_reuse = YES选项,所有SSL数据连接都需要展示SSL会话重用;证明他们知道与控制频道相同的主机密码。所以我们应该禁用它。

require_ssl_reuse=NO

另外,我们可以通过设置 ssl_ciphers 选项来设置SSL密码等级。这将有助于阻挡试图强制使用特定密码的攻击。

ssl_ciphers=HIGH

8.然后,我们来定义被动端口的端口范围(最小和最大端口)。

pasv_min_port=40000

pasv_max_port=50000

9.我们可以使用debug_ssl选项启用SSL调试,将 openSSL 连接记录到VSFTPD日志文件中:

debug_ssl=YES

最后保存并关闭文件。然后重启 VSFTPD 服务:

systemctl restart vsftpd

Step 3:在Ubuntu上验证FTP使用SSL / TLS连接

10.执行上述所有配置后,通过从命令行使用FTP来测试VSFTPD是否正在使用SSL / TLS连接。

在下面的输出,有一个错误消息,VSFTPD 只允许用户(非匿名)从支持加密服务的安全客户端登录。

ftp 192.168.56.10

Connected to 192.168.56.10  (192.168.56.10).

220 Welcome to TecMint.com FTP service.

Name (192.168.56.10:root) : ravi

530 Non-anonymous sessions must use encryption.

Login failed.

421 Service not available, remote server has closed connection

ftp>

因为命令行不支持加密服务,从而导致了上述错误。因此,为了安全地连接到启用加密服务的FTP服务器,我们需要一个默认支持 SSL / TLS 连接的FTP客户端,例如FileZilla。

Step 4:安装 FileZilla 并安全地连接FTP

FileZilla是功能强大,广泛使用的跨平台FTP客户端,支持通过SSL / TLS等方式连接 FTP。要在Linux客户端计算机上安装FileZilla,请使用以下命令。

--------- On Debian/Ubuntu ---------

sudo apt-get install filezilla

--------- On CentOS/RHEL/Fedora ---------

yum install epel-release filezilla

--------- On Fedora 22+ ---------

sudo dnf install filezilla

12.安装完成后,打开它并转到File => Sites Manager或按 Ctrl + S 以打开下面的站点管理器界面。

[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接_第1张图片
Filezilla 站点管理界面

13.现在,添加主机/站点名称和IP地址,定义要使用的协议,加密和登录类型,如下面的屏幕截图(使用适用于您的实际情况的值):

Host:192.168.56.10

Protocol:FTP – File Transfer Protocol

Encryption:Require explicit FTP over           # 推荐值

Logon Type:Ask for password                      # 推荐值

User:username


[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接_第2张图片
在Filezilla上配置新的FTP站点

14.然后点击从上面的“Connect”,输入密码,然后验证用于SSL / TLS连接的证书,然后单击“确定”再次连接到FTP服务器:


[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接_第3张图片
验证FTP SSL证书

15.现在,您应该已经通过TLS连接成功登录到了FTP服务器,可以从下面的界面查看连接状态以获取更多信息。


[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接_第4张图片
连接到Ubuntu FTP服务器

16.最后,我们将文件从本地机器传输到FTP服务器的文件夹中,看看FileZilla界面的下端,查看有关文件传输的报告。


[翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接_第5张图片
使用Filezilla安全的传输文件到 FTP

全部教程如上!永远记住,安装FTP服务器而不启用加密服务具有一定的安全隐患。正如我们在本教程中所述,您可以在 Ubuntu 16.04 / 16.10中配置FTP服务器以使用SSL / TLS来实现安全连接。

你可能感兴趣的:([翻译]在 Ubuntu 中使用 SSL/TLS 加密 FTP 连接)