在本教程中我们将介绍如何使用 Ubuntu 16.04 / 16.10 中的 SSL / TLS 保护 FTP 服务器FTPS。
如果你想为基于 CentOS 的发行版安装一个安全的 FTP 服务器你可以阅读 – 在 CentOS 上使用 SSL / TLS 保护 FTP 服务器。
在遵循本指南中的各个步骤之后我们将了解在 FTP 服务器中启用加密服务的基本原理以确保安全的数据传输至关重要。
要求
在我们进行下一步之前确保本文中的所有命令都将以root身份或者 sudo 特权账号运行。
第一步在 Ubuntu 上为 FTP 生成 SSL/TLS 证书
1、我们将首先在
/etc/ssl/
下创建一个子目录来存储 SSL/TLS 证书和密钥文件如果它不存在的话这样做$ sudo mkdir /etc/ssl/private2、 现在我们在一个单一文件中生成证书和密钥运行下面的命令
$ 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]:INState or Province Name (full name) []:Lower ParelLocality Name (eg, city) [Default City]:MumbaiOrganization Name (eg, company) [Default Company Ltd]:TecMint.comOrganizational Unit Name (eg, section) []:Linux and Open SourceCommon Name (eg, your name or your server's hostname) []:tecmintEmail Address []:admin@tecmint.com第二步在 Ubuntu 上配置 vsftpd 来使用 SSL/TLS
3、在我们进行 vsftpd 配置之前对于那些已启用 UFW 防火墙的用户你们必须打开端口
990
和40000
-50000
来在 vsftpd 配置文件中分别启用 TLS 连接端口和被动端口的端口范围$ sudo ufw allow 990/tcp$ sudo ufw allow 40000:50000/tcp$ sudo ufw status4、现在打开 vsftpd 配置文件并定义 SSL 详细信息
$ sudo vi /etc/vsftpd/vsftpd.conf或$ sudo nano /etc/vsftpd/vsftpd.conf然后添加或找到选项
ssl_enable
并将它的值设置为YES
来激活使用 SSL 同样因为 TLS 比 SSL 更安全我们将通过启用ssl_tlsv1
选项限制 vsftpd 只使用 TLSssl_enable=YESssl_tlsv1=YESssl_sslv2=NOssl_sslv3=NO5、 接下来使用
字符注释掉下面的行如下所示
#rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem#rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key然后添加以下行以定义 SSL 证书和密钥文件的位置LCTT 译注或径直修改也可
rsa_cert_file=/etc/ssl/private/vsftpd.pemrsa_private_key_file=/etc/ssl/private/vsftpd.pem6、现在我们也可以阻止匿名用户使用 SSL 登录并且迫使所有的非匿名登录使用安全的 SSL 链接来传输数据和在登录期间发送密码
allow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YES7、此外我们可以使用以下选项在 FTP 服务器中添加更多的安全功能 。对于选项
require_ssl_reuse=YES
它表示所有的 SSL 数据链接都需重用已经建立的 SSL 会话需要证明客户端拥有 FTP 控制通道的主密钥但是一些客户端不支持它如果没有客户端问题出于安全原因不应该关闭默认开启。LCTT 译注原文此处理解有误译者修改。require_ssl_reuse=NO此外我们可以通过
ssl_ciphers
选项来设置 vsftpd 允许使用那些加密算法。 这将有助于挫败攻击者使用那些已经发现缺陷的加密算法的尝试ssl_ciphers=HIGH8、 然后我们定义被动端口的端口范围最小和最大端口。
pasv_min_port=40000pasv_max_port=500009、 要启用 SSL 调试把 openSSL 连接诊断记录到 vsftpd 日志文件中我们可以使用
debug_ssl
选项debug_ssl=YES最后保存配置文件并且关闭它。然后重启 vsftpd 服务
$ systemctl restart vsftpd第三步在 Ubuntu 上使用 SSL / TLS 连接验证 FTP
10、 执行所有上述配置后通过尝试在命令行中使用 FTP 来测试 vsftpd 是否现在使用了 SSL / TLS 连接如下所示。
从下面的输出来看这里有一个错误的信息告诉我们 vsftpd 仅允许用户非匿名用户从支持加密服务的安全客户端登录。
$ ftp 192.168.56.10Connected to 192.168.56.10 (192.168.56.10).220 Welcome to TecMint.com FTP service.Name (192.168.56.10:root) : ravi530 Non-anonymous sessions must use encryption.Login failed.421 Service not available, remote server has closed connectionftp>该命令不支持加密服务从而导致了上述错误。因此要安全连接到启用了加密服务的 FTP 服务器我们需要一个默认支持 SSL/TLS 连接的 FTP 客户端例如 FileZilla。
第四步在客户端上安装FileZillaStep来安全地连接FTP
11、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 filezilla12、 一旦安装完成打开它然后点击File=>Sites Manager或者按Ctrl+S来获取下面的Site Manager。
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: 用户名
在 Filezilla 上配置新的 FTP 站点
14、 然后从上面的界面单击连接以输入密码然后验证用于 SSL / TLS 连接的证书并再次单击确定以连接到 FTP 服务器
验证 FTP 的 SSL 证书
15、现在你应该通过 TLS 连接成功地登录到了 FTP 服务器检查连接状态部分来获取有关下面接口的更多信息。
连接 Ubuntu 的 FTP 服务器
16、 最后让我们在文件夹中从本地的机器传送文件到 FTP 服务器, 查看 FileZilla 界面的下端来查看有关文件传输的报告。
使用 Filezilla 安全的传输 FTP 文件
就这样 始终记住安装 FTP 服务器而不启用加密服务具有某些安全隐患。 正如我们在本教程中解释的您可以在 Ubuntu 16.04 / 16.10 中配置 FTP 服务器使用 SSL / TLS 连接来实现安全性。
如果你在 FTP 服务器上设置 SSL/TLS 遇到任何问题请使用以下评论表单来分享您对本教程/主题的问题或想法。
作者简介
Aaron Kili 是 Linux 和 F.O.S.S 爱好者即将成为 Linux SysAdmin 和网络开发人员目前是 TecMint 的内容创作者他喜欢在电脑上工作并坚信分享知识。
编译自http://www.tecmint.com/secure-ftp-server-using-ssl-tls-on-ubuntu/作者 Aaron Kili
原创LCTT https://linux.cn/article-8295-1.html译者 woniu
共同学习,写下你的评论
评论加载中...
作者其他优质文章