在Ubuntu上使用SSL / TLS设置安全FTP服务器

在本教程中,我们将介绍如何在Ubuntu 16.04 / 16.10中使用SSL / TLS保护FTP服务器,并在Linux客户端计算机上配置Filezilla FTP客户端。

在本教程中,我们将介绍如何保护FTP服务器(VSFTPD代表“ 非常安全的FTP守护进程 ”)在Ubuntu 16.04 / 16.10使用SSL / TLS。 如果你正在寻找设置为CentOS基于分布的安全的FTP服务器,你可以阅读- 安全的FTP服务器上的CentOS使用SSL / TLS 在遵循本指南中的各个步骤之后,我们将了解在FTP服务器中启用加密服务的基本原理,以确保安全的数据传输至关重要。

要求

  1. 您必须安装和配置在Ubuntu FTP服务器
在我们进一步转移,确保本文中的所有命令将被作为root运行或sudo的特权帐户

第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]:HowToing.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:howtoing
Email Address []:admin@howtoing.com

第2步:配置VSFTPD在Ubuntu上使用SSL / TLS

3.在我们进行任何配置VSFTPD,为那些谁拥有启用UFW防火墙 ,你需要打开99040000-50000允许TLS连接和被动端口vsftpd的配置文件中分别设置的端口范围的端口:
$ 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更加安全,我们将限制VSFTPD使用TLS来代替,通过启用ssl_tlsv1选项:
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
然后,添加以下行以定义SSL证书和密钥文件的位置:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
6.现在,我们还必须防止匿名用户使用SSL,那么强制所有的非匿名登录使用进行数据传输安全的SSL连接和登录过程中发送的密码:
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
7.此外,我们可以使用下面的选项在FTP服务器添加更多的安全功能。 使用选项require_ssl_reuse=YES ,要求所有的SSL数据连接呈现SSL会话重用;证明他们知道与控制信道相同的主秘密。所以,我们应该禁用它。
require_ssl_reuse=NO
此外,我们可以设置VSFTPD将允许用于加密的SSL连接的SSL加密算法ssl_ciphers选项。这将有助于挫败攻击者的任何努力,试图强制一个特定的密码,他们可能发现的漏洞:
ssl_ciphers=HIGH
8.然后,让我们定义的被动端口的端口范围(最小和最大端口)。
pasv_min_port=40000
pasv_max_port=50000
9.要启用SSL调试,这意味着OpenSSL的连接诊断记录到VSFTPD日志文件中,我们可以使用debug_ssl选项:
debug_ssl=YES
最后保存文件并关闭它。然后重新启动VSFTPD服务:
$ systemctl restart vsftpd

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

10.如果VSFTPD现在使用的SSL / TLS连接,试图执行所有上述配置,测试后使用FTP命令行下面。 从下面的输出,有一个错误消息告诉我们VSFTPD只能允许用户(非匿名)从支持加密服务的安全客户端登录。
$ ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to HowToing.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连接,如FileZilla中一个FTP客户端。

第4步:在客户端上安装FileZilla以安全地连接FTP

FileZilla是一个功能强大,应用广泛的跨平台的FTP客户端,支持FTP通过SSL / TLS等。要在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.一旦安装完成后,打开它,并转到文件=>站点管理器或(按Ctrl + S)来获得下面的站点管理器界面。
Filezilla站点管理器

Filezilla站点管理器

13.现在,定义主机/站点名称,添加IP地址,确定要使用的协议,加密和登录类型,如下面的屏幕截图(适用于您的情况使用价值): 点击新网站按钮来配置一个新的网站/主机连接。
Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password	        #recommended 
User: username
在Filezilla上配置新的FTP站点

在Filezilla上配置新的FTP站点

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

验证FTP SSL证书

15.现在,你应该已经成功登录到通过TLS连接FTP服务器,检查连接状态部分从下面的界面的详细信息。
连接到Ubuntu FTP服务器

连接到Ubuntu FTP服务器

16.最后,让我们从本地机器传输文件到FTP SEVER中的文件夹,看看在FileZilla的接口的低端,查看有关文件传输报告。
使用Filezilla进行安全FTP文件传输

使用Filezilla进行安全FTP文件传输

就这样!始终记住,安装FTP服务器而不启用加密服务具有某些安全隐患。正如我们在本教程中解释的,您可以配置FTP服务器使用SSL / TLS连接来实现Ubuntu 16.04 / 16.10中的安全性。 如果您在FTP服务器上设置SSL / TLS时遇到任何问题,请使用以下注释表单来分享您对本教程/主题的问题或想法。