在RHEL 8中使用SSL / TLS设置安全FTP文件传输

在本文中,我们将解释如何使用SSL / TLS保护FTP服务器,以便为系统之间的安全文件传输启用数据加密服务。

在上一篇文章中,我们详细介绍了如何在RHEL 8 Linux中安装和配置FTP服务器。 在本文中,我们将解释如何使用SSL / TLS保护FTP服务器,以便为系统之间的安全文件传输启用数据加密服务。

我们希望您已安装并正常运行FTP服务器。 如果没有,请使用以下指南将其安装到您的系统上。

  1. 如何在RHEL 8中安装,配置和保护FTP服务器

第1步.生成SSL / TLS证书和私钥

1.创建以下目录以存储SSL / TLS证书和密钥文件。

# mkdir -p /etc/ssl/vsftpd

2.接下来,使用以下命令生成自签名SSL / TLS证书和私钥。

# openssl req -x509 -nodes -keyout /etc/ssl/vsftpd/vsftpd.pem -out /etc/ssl/vsftpd/vsftpd.pem -days 365 -newkey rsa:2048

以下是上述命令中使用的每个标志的说明。

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

上面的命令将提示您回答以下问题,请记住使用适用于您的方案的值。

Country Name (2 letter code) [XX]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:HowToing.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:howtoing
Email Address []:[email protected]
为FTP服务器创建SSL证书

为FTP服务器创建SSL证书

第2步.配置VSFTPD以使用SSL / TLS

3.使用您喜欢的命令行编辑器打开VSFTPD配置文件以进行编辑

# vi /etc/vsftpd/vsftpd.conf

添加以下配置参数以启用SSL,然后在文件末尾选择要使用的SSL和TLS版本。

ssl_enable=YES
ssl_tlsv1_2=YES
ssl_sslv2=NO
ssl_sslv3=NO

4.接下来,添加rsa_cert_filersa_private_key_file选项以分别指定SSL证书和密钥文件的位置。

rsa_cert_file=/etc/ssl/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/ssl/vsftpd/vsftpd.pem

5.现在添加这些参数以禁用匿名连接使用SSL并强制通过SSL强制所有非匿名连接。

allow_anon_ssl=NO			# disable anonymous users from using SSL
force_local_data_ssl=YES		# force all non-anonymous logins to use a secure SSL connection for data transfer
force_local_logins_ssl=YES		# force all non-anonymous logins  to send the password over SSL

6.接下来,添加这些选项以禁用所有SSL数据连接的重用,并将SSL密码设置为HIGH以允许加密的SSL连接。

require_ssl_reuse=NO
ssl_ciphers=HIGH

7.您还必须分别使用pasv_min_portpasv_max_port参数指定vsftpd用于安全连接的被动端口的端口范围(最小和最大端口)。 此外,您还可以使用debug_ssl选项启用SSL调试以进行故障排除。

pasv_min_port=40000
pasv_max_port=50000
debug_ssl=YES

8.最后,保存文件并重新启动vsftpd服务以使上述更改生效。

# systemctl restart vsftpd

9.在安全访问FTP服务器之前执行的另一个关键任务是打开系统防火墙中的端口99040000-50000 这将允许TLS连接到vsftpd服务并分别打开VSFTPD配置文件中定义的被动端口的端口范围,如下所示。

# firewall-cmd --zone=public --permanent –add-port=990/tcp
# firewall-cmd --zone=public --permanent –add-port=40000-50000/tcp
# firewall-cmd --reload

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

10.要安全地连接到FTP服务器,您需要一个支持SSL / TLS连接的FTP客户端,例如FileZilla - 是一个支持SSL / TLS连接的开源,广泛使用的跨平台FTP,SFTP和FTPS客户端默认情况下。

使用默认包管理器在Linux中安装FileZilla ,如下所示:

$ sudo apt-get install filezilla   		#Debian/Ubuntu
# yum install epel-release filezilla		#On CentOS/RHEL
# dnf install filezilla			        #Fedora 22+
$ sudo zypper install filezilla			#openSUSE

11.安装Filezilla软件包后,在系统菜单中搜索并打开它。 要快速连接远程FTP服务器,请从主界面提供主机IP地址,用户名和用户密码。 然后单击“快速连接”。

使用Filezilla连接到FTP服务器

使用Filezilla连接到FTP服务器

12.然后,应用程序将要求您使用未知的自签名证书进行安全连接。 单击“ 确定”继续。

接受SSL证书以连接FTP

接受SSL证书以连接FTP

如果服务器上的配置正常,则连接应该成功,如以下屏幕截图所示。

连接的FTP服务器

连接的FTP服务器

13.最后,通过尝试将文件从您的计算机上传到服务器来测试FTP安全连接状态,如下一屏幕截图所示。

通过Filezilla安全地传输文件

通过Filezilla安全地传输文件

就这样! 在本文中,我们展示了如何在RHEL 8中使用SSL / TLS保护FTP服务器以进行安全文件传输。 这是我们在RHEL 8中安装,配置和保护FTP服务器的综合指南的第二部分。 要分享任何疑问或想法,请使用下面的反馈表。