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

简介:

在本教程中,我们将介绍如何使用 Ubuntu 16.04 / 16.10 中的 SSL / TLS 保护 FTP 服务器(FTPS)。

如果你想为基于 CentOS 的发行版安装一个安全的 FTP 服务器,你可以阅读 – 在 CentOS 上使用 SSL / TLS 保护 FTP 服务器。

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

要求

你必须已经在 Ubuntu 上安装和配置好一个 FTP 服务器

在我们进行下一步之前,确保本文中的所有命令都将以root身份或者 sudo 特权账号运行。

第一步:在 Ubuntu 上为 FTP 生成 SSL/TLS 证书

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


  
  
  1. $ sudo mkdir /etc/ssl/private 

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


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

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


  
  
  1. Country Name (2 letter code) [XX]:IN 
  2. State or Province Name (full name) []:Lower Parel 
  3. Locality Name (eg, city) [Default City]:Mumbai 
  4. Organization Name (eg, company) [Default Company Ltd]:TecMint.com 
  5. Organizational Unit Name (eg, section) []:Linux and Open Source 
  6. Common Name (eg, your name or your server's hostname) []:tecmint 
  7. Email Address []:admin@tecmint.com 

第二步:在 Ubuntu 上配置 vsftpd 来使用 SSL/TLS

3、在我们进行 vsftpd 配置之前,对于那些已启用 UFW 防火墙的用户,你们必须打开端口 990 和 40000 -50000,来在 vsftpd 配置文件中分别启用 TLS 连接端口和被动端口的端口范围:


  
  
  1. $ sudo ufw allow 990/tcp 
  2. $ sudo ufw allow 40000:50000/tcp 
  3. $ sudo ufw status 

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


  
  
  1. $ sudo vi /etc/vsftpd/vsftpd.conf 
  2. 或 
  3. $ sudo nano /etc/vsftpd/vsftpd.conf 

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


  
  
  1. ssl_enable=YES 
  2. ssl_tlsv1=YES 
  3. ssl_sslv2=NO 
  4. ssl_sslv3=NO 

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


  
  
  1. #rsa_cert_file=/etc/ssl/private/ssl-cert-snakeoil.pem 
  2. #rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key 

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


  
  
  1. rsa_cert_file=/etc/ssl/private/vsftpd.pem 
  2. rsa_private_key_file=/etc/ssl/private/vsftpd.pem 

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


  
  
  1. allow_anon_ssl=NO 
  2. force_local_data_ssl=YES 
  3. force_local_logins_ssl=YES 

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


  
  
  1. require_ssl_reuse=NO 

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


  
  
  1. ssl_ciphers=HIGH 

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


  
  
  1. pasv_min_port=40000 
  2. pasv_max_port=50000 

9、 要启用 SSL 调试,把 openSSL 连接诊断记录到 vsftpd 日志文件中,我们可以使用 debug_ssl 选项:


  
  
  1. debug_ssl=YES 

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


  
  
  1. $ systemctl restart vsftpd 

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

10、 执行所有上述配置后,通过尝试在命令行中使用 FTP 来测试 vsftpd 是否现在使用了 SSL / TLS 连接,如下所示。

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


  
  
  1. $ ftp 192.168.56.10 
  2. Connected to 192.168.56.10  (192.168.56.10). 
  3. 220 Welcome to TecMint.com FTP service. 
  4. Name (192.168.56.10:root) : ravi 
  5. 530 Non-anonymous sessions must use encryption. 
  6. Login failed. 
  7. 421 Service not available, remote server has closed connection 
  8. ftp> 

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

第四步:在客户端上安装FileZillaStep来安全地连接FTP

11、FileZilla 是一个强大的,广泛使用的跨平台 FTP 客户端,支持在 SSL/TLS 上的 FTP。为了在 Linux 客户端机器上安装 FileZilla,使用下面的命令。


  
  
  1. --------- On Debian/Ubuntu --------- 
  2. $ sudo apt-get install filezilla    
  3. --------- On CentOS/RHEL/Fedora ---------  
  4. # yum install epel-release filezilla 
  5. --------- On Fedora 22+ ---------  
  6. $ sudo dnf install filezilla 

12、 一旦安装完成,打开它然后点击File=>Sites Manager或者(按Ctrl+S)来获取下面的Site Manager。

Filezilla 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 站点

在 Filezilla 上配置新的 FTP 站点

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

验证 FTP 的 SSL 证书

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

连接 Ubuntu 的 FTP 服务器

连接 Ubuntu 的 FTP 服务器

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

使用 Filezilla 安全的传输 FTP 文件

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

如果你在 FTP 服务器上设置 SSL/TLS 遇到任何问题,请使用以下评论表单来分享您对本教程/主题的问题或想法。





作者:Aaron Kili
来源:51CTO
目录
相关文章
|
4月前
|
安全 Ubuntu 应用服务中间件
Web服务器安全最佳实践
【8月更文第28天】随着互联网的发展,Web服务器成为了企业和组织的重要组成部分。然而,这也使得它们成为黑客和恶意软件的目标。为了确保数据的安全性和系统的稳定性,采取适当的安全措施至关重要。本文将探讨一系列保护Web服务器的最佳策略和技术,并提供一些实用的代码示例。
337 1
|
20天前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
25 2
|
2月前
|
SQL 安全 网络安全
守护数字资产:服务器迁移期间的安全挑战与对策
【10月更文挑战第4天】在数字化转型的浪潮中,服务器迁移成为企业不可避免的任务。然而,迁移过程中的安全挑战不容忽视。本文从安全考量的角度,探讨了服务器迁移期间可能遇到的安全问题,并提供了相应的对策和代码示例。
82 3
|
2月前
|
弹性计算 应用服务中间件 网络安全
ECS服务器使用:SSL证书安装、配置和问题定位指南
本文简要介绍了SSL证书的生成与部署方法,包括使用OpenSSL生成自签名证书和从CA获取证书的步骤,以及在Apache和Nginx服务器上的配置方法。此外,还提供了测试证书是否生效的方法和常见问题的解决策略,帮助确保证书正确安装并解决调试过程中可能遇到的问题。
179 0
|
2月前
|
域名解析 安全 网络安全
阿里云服务器WordPress环境上安装SSL证书
阿里云服务器WordPress环境上安装SSL证书
|
2月前
|
网络协议 文件存储 Windows
Windows Server 2019 FTP服务器搭建
Windows Server 2019 FTP服务器搭建
|
2月前
|
安全 网络协议 网络安全
Windows Server 2003 FTP服务器搭建
Windows Server 2003 FTP服务器搭建
|
2月前
|
弹性计算 关系型数据库 网络安全
阿里云国际版无法连接和访问Windows服务器中的FTP服务
阿里云国际版无法连接和访问Windows服务器中的FTP服务
|
4月前
|
云安全 弹性计算 安全
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
在使用云服务器的过程中,云服务器的安全问题是很多用户非常关心的问题,阿里云服务器不仅提供了一些基础防护,我们也可以选择其他的云安全类产品来确保我们云服务器的安全。本文为大家介绍一下阿里云服务器的基础安全防护有哪些,以及阿里云的一些安全防护类云产品。
阿里云服务器基础安全防护简介,云服务器基础安全防护及常见安全产品简介
|
4月前
|
安全 Ubuntu Linux
在Linux中,如何进行FTP服务器配置?
在Linux中,如何进行FTP服务器配置?