天天看点

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

在遵循本指南中的各个步骤之后,我们将了解在 ftp 服务器中启用加密服务的基本原理,以确保安全的数据传输至关重要。

<a target="_blank"></a>

1、我们将首先在 <code>/etc/ssl/</code> 下创建一个子目录来存储 ssl/tls 证书和密钥文件,如果它不存在的话这样做:

<code>$ sudo mkdir /etc/ssl/private</code>

2、 现在我们在一个单一文件中生成证书和密钥,运行下面的命令:

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

上面的命令将提示你回答以下问题,不要忘了输入合适于你情况的值:

<code>country name (2 letter code) [xx]:in</code>

<code>state or province name (full name) []:lower parel</code>

<code>locality name (eg, city) [default city]:mumbai</code>

<code>organization name (eg, company) [default company ltd]:tecmint.com</code>

<code>organizational unit name (eg, section) []:linux and open source</code>

<code>common name (eg, your name or your server's hostname) []:tecmint</code>

<code>email address []:[email protected]</code>

<code>$ sudo ufw allow 990/tcp</code>

<code>$ sudo ufw allow 40000:50000/tcp</code>

<code>$ sudo ufw status</code>

4、现在,打开 vsftpd 配置文件并定义 ssl 详细信息:

<code>$ sudo vi /etc/vsftpd/vsftpd.conf</code>

<code>或</code>

<code>$ sudo nano /etc/vsftpd/vsftpd.conf</code>

然后,添加或找到选项 <code>ssl_enable</code>,并将它的值设置为 <code>yes</code> 来激活使用 ssl ,同样,因为 tls 比 ssl 更安全,我们将通过启用 <code>ssl_tlsv1</code> 选项限制 vsftpd 只使用 tls:

<code>ssl_enable=yes</code>

<code>ssl_tlsv1=yes</code>

<code>ssl_sslv2=no</code>

<code>ssl_sslv3=no</code>

5、 接下来,使用 <code>#</code> 字符注释掉下面的行,如下所示:

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

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

然后,添加以下行以定义 ssl 证书和密钥文件的位置(lctt 译注:或径直修改也可):

<code>rsa_cert_file=/etc/ssl/private/vsftpd.pem</code>

<code>rsa_private_key_file=/etc/ssl/private/vsftpd.pem</code>

6、现在,我们也可以阻止匿名用户使用 ssl 登录,并且迫使所有的非匿名登录使用安全的 ssl 链接来传输数据和在登录期间发送密码:

<code>allow_anon_ssl=no</code>

<code>force_local_data_ssl=yes</code>

<code>force_local_logins_ssl=yes</code>

7、此外,我们可以使用以下选项在 ftp 服务器中添加更多的安全功能 。对于选项 <code>require_ssl_reuse=yes</code>,它表示所有的 ssl 数据链接都需重用已经建立的 ssl 会话(需要证明客户端拥有 ftp 控制通道的主密钥),但是一些客户端不支持它,如果没有客户端问题,出于安全原因不应该关闭(默认开启)。(lctt 译注:原文此处理解有误,译者修改。)

<code>require_ssl_reuse=no</code>

此外,我们可以通过 <code>ssl_ciphers</code> 选项来设置 vsftpd 允许使用那些加密算法。 这将有助于挫败攻击者使用那些已经发现缺陷的加密算法的尝试:

<code>ssl_ciphers=high</code>

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

<code>pasv_min_port=40000</code>

<code>pasv_max_port=50000</code>

9、 要启用 ssl 调试,把 openssl 连接诊断记录到 vsftpd 日志文件中,我们可以使用 <code>debug_ssl</code> 选项:

<code>debug_ssl=yes</code>

最后,保存配置文件并且关闭它。然后重启 vsftpd 服务:

<code>$ systemctl restart vsftpd</code>

从下面的输出来看,这里有一个错误的信息告诉我们 vsftpd 仅允许用户(非匿名用户)从支持加密服务的安全客户端登录。

<code>$ ftp 192.168.56.10</code>

<code>connected to 192.168.56.10 (192.168.56.10).</code>

<code>220 welcome to tecmint.com ftp service.</code>

<code>name (192.168.56.10:root) : ravi</code>

<code>530 non-anonymous sessions must use encryption.</code>

<code>login failed.</code>

<code>421 service not available, remote server has closed connection</code>

<code>ftp&gt;</code>

该命令不支持加密服务从而导致了上述错误。因此,要安全连接到启用了加密服务的 ftp 服务器,我们需要一个默认支持 ssl/tls 连接的 ftp 客户端,例如 filezilla。

11、filezilla 是一个强大的,广泛使用的跨平台 ftp 客户端,支持在 ssl/tls 上的 ftp。为了在 linux 客户端机器上安装 filezilla,使用下面的命令。

<code>--------- on debian/ubuntu ---------</code>

<code>$ sudo apt-get install filezilla</code>

<code>--------- on centos/rhel/fedora ---------</code>

<code># yum install epel-release filezilla</code>

<code>--------- on fedora 22+ ---------</code>

<code>$ sudo dnf install filezilla</code>

12、 一旦安装完成,打开它然后点击file=&gt;sites manager或者(按ctrl+s)来获取下面的site manager。

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

filezilla site manager

13、 现在,定义主机/站点名字,添加 ip 地址,定义使用的协议,加密和登录类型,如下面的屏幕(使用适用于你方案的值):

点击 new site 按钮来配置一个新的站点/主机连接。

host: 192.168.56.10

protocol: ftp – file transfer protocol

encryption: require explicit ftp over #推荐

logon type: ask for password #推荐

user: 用户名

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

在 filezilla 上配置新的 ftp 站点

14、 然后从上面的界面单击连接以输入密码,然后验证用于 ssl / tls 连接的证书,并再次单击确定以连接到 ftp 服务器:

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

验证 ftp 的 ssl 证书

15、现在,你应该通过 tls 连接成功地登录到了 ftp 服务器,检查连接状态部分,来获取有关下面接口的更多信息。

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

连接 ubuntu 的 ftp 服务器

16、 最后,让我们在文件夹中从本地的机器传送文件到 ftp 服务器, 查看 filezilla 界面的下端来查看有关文件传输的报告。

在 Ubuntu 上使用 SSL/TLS 搭建一个安全的 FTP 服务器

使用 filezilla 安全的传输 ftp 文件

就这样! 始终记住,安装 ftp 服务器而不启用加密服务具有某些安全隐患。 正如我们在本教程中解释的,您可以在 ubuntu 16.04 / 16.10 中配置 ftp 服务器使用 ssl / tls 连接来实现安全性。

原文发布时间为:2017-03-12

本文来自云栖社区合作伙伴“linux中国”

继续阅读