在 CentOS 系统上部署 FTP 服务器时,文件传输加密环节通常容易被忽略,然而它却是保障数据安全的关键。若直接使用明文 FTP,密码与文件将在网络中完全暴露,安全隐患不容忽视。vsftpd 作为一款轻量且安全性高的 FTP 服务器软件,原生支持多种加密方案。下面直接进入正题,介绍两种最实用的防护方法。
方法一:借助 SSL/TLS 实现传输加密
这是 vsftpd 原生支持的方式,通过在标准 FTP 协议之上叠加 SSL/TLS 加密层,确保通信全程加密。配置流程不复杂,按照步骤操作即可。
安装 vsftpd 并启用 SSL/TLS 支持
首先确认 vsftpd 是否已安装:
sudo yum install vsftpd然后编辑配置文件
/etc/vsftpd/vsftpd.conf,添加或修改以下参数:ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem rsa_private_key_file=/etc/pki/tls/private/vsftpd.pem接下来生成自签名证书(生产环境建议使用正规 CA 签发的证书,但用于测试或内部网络,自签名证书足够):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.pem -out /etc/pki/tls/certs/vsftpd.pem重启 vsftpd 服务
配置文件生效只需一条命令:
sudo systemctl restart vsftpd配置防火墙放行端口
别忘记允许 FTP 及 HTTPS(SSL/TLS 相关)端口通过防火墙:
sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
上述步骤完成后,客户端(如 FileZilla)连接时勾选“要求显式 FTP over TLS”即可安全传输。需要注意的是,如果客户端不支持 TLS,连接会直接失败——这种强制加密策略正是我们期望的效果。
方法二:采用 SFTP(SSH 文件传输协议)
如果你觉得 vsftpd 的 SSL 配置略显繁琐,或者不想维护一套独立的证书体系,SFTP 是另一种高效思路。它本质上是通过 SSH 协议传输文件,与传统 FTP 完全不同,但使用体验高度相似。
安装 OpenSSH 服务器
CentOS 通常已预装 SSH,若未安装,直接执行:
sudo yum install openssh-server启动并启用 SSH 服务
sudo systemctl start sshd sudo systemctl enable sshd配置防火墙放行 SSH 端口
SSH 默认端口为 22,需要允许其通过防火墙:
sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --reload使用 SFTP 客户端连接
大多数主流 FTP 客户端(如 FileZilla、WinSCP)均支持 SFTP 协议。连接时协议选择 SFTP,输入服务器 IP、用户名和密码即可。相比 vsftpd + SSL 方案,SFTP 省去了证书配置的麻烦,但前提是用户需要具备 SSH 登录权限。
两种方法的选择取决于具体使用场景。若你需要与传统的 FTP 客户端兼容,同时要求传输加密,建议采用 vsftpd + SSL 方案;如果团队更习惯 SSH 操作方式,或已有现成的 SSH 环境,SFTP 显然更加省心省力。无论选择哪一种,文件在传输过程中都不会明文暴露,安全性得到切实保障。
