如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 服务器进行安全文件传输

在一开始的设计中,FTP(文件传输协议)就是不安全的,意味着它不会加密两台机器之间传输的数据以及用户的凭据。这使得数据和服务器安全面临很大威胁。

在这篇文章中,我们会介绍在 CentOS/RHEL 7 以及 Fedora 中如何在 FTP 服务器中手动启用数据加密服务;我们会介绍使用 SSL/TLS 证书保护 VSFTPD(Very Secure FTP Daemon)服务的各个步骤。

前提条件:

在我们开始之前,要注意本文中所有命令都以 root 用户运行,否则,如果现在你不是使用 root 用户控制服务器,你可以使用 sudo 命令 去获取 root 权限。

第一步:生成 SSL/TLS 证书和密钥

1、 我们首先要在 /etc/ssl 目录下创建用于保存 SSL/TLS 证书和密钥文件的子目录:


  1. # mkdir /etc/ssl/private

2、 然后运行下面的命令为 vsftpd 创建证书和密钥并保存到一个文件中,下面会解析使用的每个选项。

  1. req - 是 X.509 Certificate Signing Request (CSR,证书签名请求)管理的一个命令。
  2. x509 - X.509 证书数据管理。
  3. days - 定义证书的有效日期。
  4. newkey - 指定证书密钥处理器。
  5. rsa:2048 - RSA 密钥处理器,会生成一个 2048 位的密钥。
  6. keyout - 设置密钥存储文件。
  7. out - 设置证书存储文件,注意证书和密钥都保存在一个相同的文件:/etc/ssl/private/vsftpd.pem。

  1. # 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

第二步:配置 VSFTPD 使用 SSL/TLS

3、 在我们进行任何 VSFTPD 配置之前,首先开放 990 和 40000-50000 端口,以便在 VSFTPD 配置文件中分别定义 TLS 连接的端口和被动端口的端口范围:


  1. # firewall-cmd --zone=public --permanent --add-port=990/tcp
  2. # firewall-cmd --zone=public --permanent --add-port=40000-50000/tcp
  3. # firewall-cmd --reload

4、 现在,打开 VSFTPD 配置文件并在文件中指定 SSL 的详细信息:


  1. # vi /etc/vsftpd/vsftpd.conf

找到 ssl_enable 选项把它的值设置为 YES 激活使用 SSL,另外,由于 TSL 比 SSL 更安全,我们会使用ssl_tlsv1_2 选项让 VSFTPD 使用更严格的 TLS:


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

5、 然后,添加下面的行来定义 SSL 证书和密钥文件的位置:


  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 会话;这样它们会知道控制通道的主密码。

因此,我们需要把它关闭。


  1. require_ssl_reuse=NO

另外,我们还要用 ssl_ciphers 选项选择 VSFTPD 允许用于加密 SSL 连接的 SSL 算法。这可以极大地限制那些尝试发现使用存在缺陷的特定算法的攻击者:


  1. ssl_ciphers=HIGH

8、 现在,设置被动端口的端口范围(最小和最大端口)。


  1. pasv_min_port=40000
  2. pasv_max_port=50000

9、 选择性启用 debug_ssl 选项以允许 SSL 调试,这意味着 OpenSSL 连接诊断会被记录到 VSFTPD 日志文件:


  1. debug_ssl=YES

保存所有更改并关闭文件。然后让我们重启 VSFTPD 服务:


  1. # systemctl restart vsftpd

第三步:用 SSL/TLS 连接测试 FTP 服务器

10、 完成上面的所有配置之后,像下面这样通过在命令行中尝试使用 FTP 测试 VSFTPD 是否使用 SSL/TLS 连接:


  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 安全连接

从上面的截图中,我们可以看到这里有个错误提示我们 VSFTPD 只允许用户从支持加密服务的客户端登录。

命令行并不会提供加密服务因此产生了这个错误。因此,为了安全地连接到服务器,我们需要一个支持 SSL/TLS 连接的 FTP 客户端,例如 FileZilla。

第四步:安装 FileZilla 以便安全地连接到 FTP 服务器

11、 FileZilla 是一个现代化、流行且重要的跨平台的 FTP 客户端,它默认支持 SSL/TLS 连接。

要在 Linux 上安装 FileZilla,可以运行下面的命令:


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

12、 当安装完成后(或者你已经安装了该软件),打开它,选择 File => Sites Manager 或者按 Ctrl + S 打开 Site Manager 界面。

点击 New Site 按钮添加一个新的站点/主机连接详细信息。

在 FileZilla 中添加新 FTP 站点

  1. 下一步,像下面这样设置主机/站点名称、添加 IP 地址、定义使用的协议、加密和登录类型(使用你自己情况的值):

  1. Host: 192.168.56.10
  2. Protocol: FTP – File Transfer Protocol
  3. Encryption: Require explicit FTP over #recommended
  4. Logon Type: Ask for password #recommended
  5. User: username

在 Filezilla 中添加 FTP 服务器详细信息

14、 然后点击 Connect,再次输入密码,然后验证用于 SSL/TLS 连接的证书,再一次点击 OK 连接到 FTP 服务器:

验证 FTP SSL 证书

到了这里,我们应该使用 TLS 连接成功地登录到了 FTP 服务器,在下面的界面中检查连接状态部分获取更多信息。

通过 TLS/SSL 连接到 FTP 服务器

15、 最后,在文件目录尝试 从本地传输文件到 FTP 服务器,看 FileZilla 界面后面的部分查看文件传输相关的报告。

使用 FTP 安全地传输文件

原文发布时间为:2017-05-13

本文来自合作伙伴“Linux中国”

时间: 2024-10-26 21:44:47

如何在 CentOS 7 中使用 SSL/TLS 加固 FTP 服务器进行安全文件传输的相关文章

如何在CentOS 7中使用SSL/TLS加固FTP服务器进行安全文件传输

在一开始的设计中,FTP(文件传输协议)就是不安全的,意味着它不会加密两台机器之间传输的数据以及用户的凭据.这使得数据和服务器安全面临很大威胁. 在这篇文章中,我们会介绍在 CentOS/RHEL 7 以及 Fedora 中如何在 FTP 服务器中手动启用数据加密服务;我们会介绍使用 SSL/TLS 证书保护 VSFTPD(Very Secure FTP Daemon)服务的各个步骤. 前提条件: 你必须已经在 CentOS 7 中安装和配置 FTP 服务 . 在我们开始之前,要注意本文中所有命

在Serv-U中使用SSL证书增强FTP服务器安全性图文设置方法_FTP服务器

为了保证特殊环境下的数据安全,有时是有必要启用SSL功能的.下面笔者以Serv-U服务器为例,介绍如何启用SSL加密功能. 创建SSL证书 要想使用Serv-U的SSL功能,当然需要SSL证书的支持才行.虽然Serv-U 在安装之时就已经自动生成了一个SSL证书,但这个默认生成的SSL证书在所有的Serv-U服务器中都是一样的,非常不安全,所以我们需要手工创建一个新的SSL证书. 以Serv-U6.0汉化版为例,在"Serv-U管理员"窗口中,展开"本地服务器→设置"

完全指南:如何在CentOS 7中安装、配置和安全加固FTP服务

FTP(文件传输协议)是一种用于通过网络在服务器和客户端之间传输文件的传统并广泛使用的标准工具,特别是在不需要身份验证的情况下(允许匿名用户连接到服务器).我们必须明白,默认情况下 FTP 是不安全的,因为它不加密传输用户凭据和数据. 在本指南中,我们将介绍在 CentOS/RHEL7 和 Fedora 发行版中安装.配置和保护 FTP 服务器( VSFTPD 代表 "Very Secure FTP Daemon")的步骤. 请注意,本指南中的所有命令将以 root 身份运行,如果你不

在 Tomcat 中配置 SSL/TLS 以支持 HTTPS

本件详细介绍了如何通过几个简单步骤在 Tomcat 中配置 SSL/TLS .使用 JDK 生成自签名的证书,最终实现在应用中支持 HTTPS 协议. 生产密钥和证书 Tomcat 目前只能操作 JKS.PKCS11.PKCS12 格式的密钥存储库.JKS 是 Java 标准的"Java 密钥存储库"格式,是通过 keytool 命令行工具创建的.该工具包含在 JDK 中.PKCS12 格式一种互联网标准,可以通过 OpenSSL 和 Microsoft 的 Key-Manager 来

如何在 CentOS Linux 中配置 MariaDB 复制

如何在 CentOS Linux 中配置 MariaDB 复制 这是一个创建数据库重复版本的过程.复制过程不仅仅是复制一个数据库,同时也包括从主节点到一个从节点的更改同步.但这并不意味着从数据库就是和主数据库完全相同的副本,因为复制可以配置为只复制表结构.行或者列,这叫做局部复制.复制保证了特定的配置对象在不同的数据库之间保持一致. Mariadb 复制概念 备份 :复制可以用来进行数据库备份.例如,当你做了主->从复制.如果主节点数据丢失(比如硬盘损坏),你可以从从节点中恢复你的数据库. 扩展

如何在CentOS/RHEL中安装基于Web的监控系统 linux-dash

如何在CentOS/RHEL中安装基于Web的监控系统 linux-dash Linux-dash是一款为Linux设计的基于web的轻量级监控面板.这个程序会实时显示各种不同的系统属性,比如CPU负载.RAM使用率.磁盘使用率.网速.网络连接.RX/TX带宽.登录用户.运行的进程等等.它不会存储长期的统计.因为它没有后端数据库. 本篇文章将会向你展示如何安装和设置Linux dash,这里所使用的web服务器是Nginx. 安装 首先我们要启用EPEL 仓库. 接下来,我们需要用下面的命令安装

如何在 CentOS/RHEL 中为 Apache Tomcat 绑定 IPv4 地址

如何在 CentOS/RHEL 中为 Apache Tomcat 绑定 IPv4 地址 今天我们来学习一下如何在CentOS 7 Linux分布式系统中为Tomcat绑定IPv4. Apache Tomcat 是由Apache 软件基金会 开发的开源web服务器和servlet容器.它实现了Java Servlet,JavaServer页面(JSP),Java的统一表达式语言,以及Sun Microsystems的Java的WebSocket规范,并提供了一个运行java代码的web服务器环境.

如何在 CentOS 7 中添加新磁盘而不用重启系统

如何在 CentOS 7 中添加新磁盘而不用重启系统 对大多数系统管理员来说扩充 Linux 服务器的磁盘空间是日常的工作之一.因此这篇文章会通过使用 Linux 命令,在 CentOS 7 系统上演示一些简单的操作步骤来扩充您的磁盘空间而不需要重启您的生产服务器.关于扩充和增加新的磁盘到 Linux 系统,我们会提及多种方法和多种可行性,可按您所需选择最适用的一种. 1. 在虚拟机客户端扩充磁盘空间: 在为 Linux 系统增加磁盘卷之前,您首先需要添加一块新的物理磁盘,或在 VMware v

如何在CentOS 7中禁止IPv6

如何在CentOS 7中禁止IPv6 最近,我的一位朋友问我该如何禁止IPv6.在搜索了一番之后,我找到了下面的方案.下面就是在我的CentOS 7 迷你服务器禁止IPv6的方法. 你可以用两个方法做到这个. 方法 1 编辑文件/etc/sysctl.conf, vi /etc/sysctl.conf 添加下面的行: net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 如果你想要为特定的网卡禁止IPv