核心概念澄清
关键差异对比
| 维度 | FTP(CentOS FTP Server 默认) | FTPES(Explicit FTPS) |
|---|---|---|
| 协议与端口 | 明文 FTP,控制通道默认端口 21;数据通道由主动/被动模式协商 | 基于 FTP + TLS,通常仍用端口 21 发起连接 |
| 握手与加密 | 全程不加密 | 客户端先连到 21 端口,再发送 AUTH TLS/SSL 显式升级到加密通道 |
| 兼容性 | 兼容所有传统 FTP 客户端 | 需支持显式 TLS 的客户端;不支持的客户端可退回明文或被拒绝 |
| 安全控制 | 无加密,账号口令与数据易被窃听/篡改 | 可加密命令通道与数据通道;可配置仅加密数据或两者皆加密 |
| 防火墙/NAT | 需处理主动/被动模式的数据端口,配置较繁琐 | 仍需为数据通道放行端口范围;但因握手在 21 端口完成,穿越防火墙相对更友好 |
| 典型场景 | 内网、非敏感数据、遗留系统 | 公网/跨域传输,需要加密且希望兼容传统 FTP 客户端 |
说明:FTPS 的“隐式”模式通常在端口 990 建立加密会话,要求客户端一开始就使用 TLS;而“显式/FTPES”在 21 端口上按需升级,二者都属于 FTPS 的范畴。
在 CentOS 上的配置要点
sudo yum install vsftpd opensslsudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.crtssl_enable=YESallow_anon_ssl=NOforce_local_data_ssl=YESforce_local_logins_ssl=YESssl_tlsv1=YES(可按需启用更高版本)ssl_sslv2=NO、ssl_sslv3=NOrsa_cert_file=/etc/pki/tls/certs/localhost.crtrsa_private_key_file=/etc/pki/tls/private/localhost.keyimplicit_ssl=YES 并监听 990 端口(与显式二选一或分实例部署)sudo firewall-cmd --permanent --add-service=ftp、sudo firewall-cmd --permanent --add-port=990/tcp(若启用隐式),以及为被动模式配置端口范围并放行pasv_enable=YES、pasv_min_port/pasv_max_port 并放行对应范围sudo systemctl restart vsftpd
以上为常见做法示例,生产环境请结合证书链、加密套件与合规要求调整。如何选择