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

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

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

前提条件:

  • 你必须已经在 CentOS 7 中安装和配置 FTP 服务 。

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

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

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

# 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。
# 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]:IN
State or Province Name (full name) []:Lower Parel
Locality Name (eg, city) [Default City]:Mumbai
Organization Name (eg, company) [Default Company Ltd]:TecMint.com
Organizational Unit Name (eg, section) []:Linux and Open Source
Common Name (eg, your name or your server's hostname) []:tecmint
Email Address []:[email protected]

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

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

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

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

# vi /etc/vsftpd/vsftpd.conf

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

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

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

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

6、 下面,我们要阻止匿名用户使用 SSL,然后强制所有非匿名用户登录使用安全的 SSL 连接进行数据传输和登录过程中的密码发送:

allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES

7、 另外,我们还可以添加下面的选项增强 FTP 服务器的安全性。当选项 require_ssl_reuse 被设置为 YES 时,要求所有 SSL 数据连接都会重用 SSL 会话;这样它们会知道控制通道的主密码。

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

require_ssl_reuse=NO

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

ssl_ciphers=HIGH

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

pasv_min_port=40000
pasv_max_port=50000

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

debug_ssl=YES

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

# systemctl restart vsftpd

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

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

# ftp 192.168.56.10
Connected to 192.168.56.10  (192.168.56.10).
220 Welcome to TecMint.com FTP service.
Name (192.168.56.10:root) : ravi
530 Non-anonymous sessions must use encryption.
Login failed.
421 Service not available, remote server has closed connection
ftp>

验证 FTP SSL 安全连接

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

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

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

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

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

--------- On CentOS/RHEL/Fedora --------- 
# yum install epel-release filezilla
--------- On Debian/Ubuntu ---------
$ sudo apt-get install  filezilla   

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

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

在 FileZilla 中添加新 FTP 站点

  1. 下一步,像下面这样设置主机/站点名称、添加 IP 地址、定义使用的协议、加密和登录类型(使用你自己情况的值):
Host:  192.168.56.10
Protocol:  FTP – File Transfer Protocol
Encryption:  Require explicit FTP over   #recommended 
Logon Type: Ask for password            #recommended 
User: username

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

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

验证 FTP SSL 证书

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

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

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

使用 FTP 安全地传输文件

就是这些。记住 FTP 默认是不安全的,除非我们像上面介绍的那样配置它使用 SSL/TLS 连接。在下面的评论框中和我们分享你关于这篇文章/主题的想法吧。



文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/222219.html<

(0)
运维的头像运维
上一篇2025-04-15 09:43
下一篇 2025-04-15 09:45

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注