网站搜索

在 RHEL/CentOS 7 上使用 TLS/SSL 协议保护 ProFTPD 连接


就其本质而言,FTP 协议被设计为不安全的协议,所有数据和密码均以纯文本形式传输,这使得第三方很容易拦截所有 FTP 客户端-服务器事务,尤其是用户名和密码。身份验证过程中使用的密码。

要求

  1. 在 RHEL/CentOS 7 上安装 ProFTPD 服务器
  2. 在 RHEL/CentOS 7 中为 Proftpd 服务器启用匿名帐户

本教程将指导您如何保护和加密 CentOS/RHEL 7ProFTPd 服务器上的 FTP 通信,使用带有显式 FTPS 扩展的 TLS(传输层安全性)(将 FTPS 视为 HTTP 协议的 HTTPS)。

步骤1:创建Proftpd TLS模块配置文件

1. 正如之前有关匿名帐户的 Proftpd 教程中所讨论的,本指南还将使用相同的方法,借助 enabled_mod 和 < b>disabled_mod 目录,它将承载所有服务器的扩展功能。

因此,使用您最喜欢的文本编辑器在 disabled_mod Proftpd 路径中创建一个名为 tls.conf 的新文件,并添加以下指令。

nano /etc/proftpd/disabled_mod/tls.conf

添加以下 TLS 文件配置摘录。

<IfModule mod_tls.c>
TLSEngine                               on
TLSLog                                  /var/log/proftpd/tls.log
TLSProtocol                             SSLv23
 
TLSRSACertificateFile                   /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile                /etc/ssl/private/proftpd.key

#TLSCACertificateFile                                     /etc/ssl/certs/CA.pem
TLSOptions                      NoCertRequest EnableDiags NoSessionReuseRequired
TLSVerifyClient                         off
TLSRequired                             on
TLSRenegotiate                          required on
</IfModule>

2. 如果您使用不支持 TLS 连接的浏览器或 FTP 客户端,请注释 TLSRequired on 行,以便同时允许 TLS 和非 TLS 连接,并且避免出现以下屏幕截图中的错误消息。

步骤 2:为 TLS 创建 SSL 证书文件

3. 创建 TLS 模块配置文件后。这将在 Proftpd 上启用 FTP over TLS,您需要生成 SSL 证书和密钥,以便在 OpenSSL 包的帮助下通过 ProFTPD 服务器使用安全通信。

yum install openssl

您可以使用单个长命令来生成 SSL 证书和密钥对,但为了简化操作,您可以创建一个简单的 bash 脚本,该脚本将生成具有所需名称的 SSL 对,并为密钥文件分配正确的权限。

/usr/local/bin/ 或任何其他可执行系统路径(由 ` PATH 变量定义)上创建名为 proftpd_gen_ssl 的 bash 文件)。

nano /usr/local/bin/proftpd_gen_ssl

添加以下内容。

#!/bin/bash
echo -e "\nPlease enter a name for your SSL Certificate and Key pairs:"
read name
 openssl req -x509 -newkey rsa:1024 \
          -keyout /etc/ssl/private/$name.key -out /etc/ssl/certs/$name.crt \
          -nodes -days 365\

 chmod 0600 /etc/ssl/private/$name.key

4.创建上述文件后,为其分配执行权限,确保/etc/ssl/private目录存在并运行脚本创建SSL证书和密钥对。

chmod +x /usr/local/bin/proftpd_gen_ssl
mkdir -p /etc/ssl/private
proftpd_gen_ssl

提供 SSL 证书以及所需的不言自明的提示信息,但请注意通用名称以匹配您的主机完全限定域名 - FQDN.

步骤 3:在 ProFTPD 服务器上启用 TLS

5. 由于之前创建的 TLS 配置文件已指向正确的 SSL 证书和密钥文件,因此剩下的唯一事情就是通过创建 符号链接 来激活 TLS 模块>tls.conf 文件复制到 enabled-mod 目录并重新启动 ProFTPD 守护程序以应用更改。

ln -s /etc/proftpd/disabled_mod/tls.conf  /etc/proftpd/enabled_mod/
systemctl restart proftpd

6. 要禁用 TLS 模块,只需从 enabled_mod 目录中删除 tls.conf 符号链接并重新启动 ProFTPD 服务器以应用更改。

rm /etc/proftpd/enabled_mod/tls.conf
systemctl restart proftpd

步骤 4:打开防火墙以允许 FTP over TLS 通信

7.为了让客户端访问 ProFTPD 并在被动模式下安全传输文件,您必须打开 1024 之间的整个端口范围65534 在 RHEL/CentOS 防火墙上,使用以下命令。

firewall-cmd --add-port=1024-65534/tcp  
firewall-cmd --add-port=1024-65534/tcp --permanent
firewall-cmd --list-ports
firewall-cmd --list-services
firewall-cmd --reload

就是这样。现在您的系统已准备好接受客户端通过 TLS 进行的 FTP 通信。

第 5 步:从客户端通过 TLS 访问 ProFTPD

8. Web 浏览器通常没有对基于 TLS 协议的 FTP 的内置支持,因此所有事务都通过非加密的 FTP 进行传送。最优秀的 FTP 客户端之一是 FileZilla,它完全开源,可以在几乎所有主要操作系统上运行。

要从 FileZilla 访问基于 TLS 的 FTP,请打开站点管理器,在协议上选择FTP,并在需要显式基于 TLS 的 FTP 加密下拉菜单,将登录类型选择为正常,输入您的 FTP 凭据并点击连接进行通信与服务器。

9.如果这是您第一次连接到 ProFTPD 服务器,则会出现包含新证书的弹出窗口,选中该框,其中显示将来始终信任证书会话并点击确定接受证书并向ProFTPD服务器进行身份验证。

如果您计划使用 FileZilla 以外的其他客户端来安全访问 FTP 资源,请确保它们支持 FTP over TLS 协议。可以使用 FTPS 的 FTP 客户端的一些很好的例子是 Windows 平台的 WinSCP 和 NIX 的 gFTP 或 LFTP(命令行)。