SSL/TLS(Secure Sockets Layer/Transport Layer Security)是用于加密网络通信的协议,可防止FTP传输中的数据(如用户名、密码、文件内容)被窃取或篡改。VSFTPD(Very Secure FTP Daemon)作为Linux下常用的FTP服务器,支持通过SSL/TLS实现安全传输,常见模式包括FTPS(FTP over SSL/TLS,隐式加密,端口990)和显式FTP over TLS(端口21,通过STARTTLS升级加密)。
在大多数Linux发行版中,需先安装VSFTPD和OpenSSL工具包:
sudo apt update && sudo apt install vsftpd opensslsudo yum install vsftpd openssl使用OpenSSL生成自签名证书(生产环境建议使用CA签发的证书):
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/certs/vsftpd.pem
执行后会提示输入国家、组织名称等信息,生成的证书(.crt)和私钥(.key)默认有效期为365天。
编辑VSFTPD主配置文件(路径因发行版而异,常见为/etc/vsftpd.conf或/etc/vsftpd/vsftpd.conf),添加或修改以下关键配置:
ssl_enable=YES # 启用SSL/TLS加密
allow_anon_ssl=NO # 禁止匿名用户使用SSL
force_local_data_ssl=YES # 强制本地用户数据连接(如文件上传/下载)使用SSL
force_local_logins_ssl=YES # 强制本地用户登录过程使用SSL
ssl_tlsv1=YES # 允许TLSv1协议(推荐)
ssl_sslv2=NO # 禁用不安全的SSLv2协议
ssl_sslv3=NO # 禁用不安全的SSLv3协议
rsa_cert_file=/etc/ssl/certs/vsftpd.pem # 证书文件路径
rsa_private_key_file=/etc/ssl/private/vsftpd.pem # 私钥文件路径
ssl_ciphers=HIGH # 使用高强度加密算法(如AES)
require_ssl_reuse=NO # 允许客户端重用SSL会话(提升性能)
保存配置文件后,重启服务使更改生效:
# Ubuntu/Debian
sudo systemctl restart vsftpd
# CentOS
sudo systemctl restart vsftpd
需允许FTP及SSL相关端口通过防火墙:
40000-50000(用于数据传输,需根据实际情况调整)以Ubuntu的ufw为例:
sudo ufw allow 21/tcp
sudo ufw allow 990/tcp # 若使用FTPS隐式模式
sudo ufw allow 40000:50000/tcp # 被动模式端口范围
sudo ufw reload
CentOS使用firewalld:
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --permanent --add-port=990/tcp
sudo firewall-cmd --permanent --add-port=40000-50000/tcp
sudo firewall-cmd --reload
lftp)lftp -e 'open ftps://your_server_ip; user your_username your_password; ls; quit'
若连接成功,会显示服务器目录列表。
vsftpd.conf中启用pasv_enable=YES并设置端口范围(pasv_min_port/pasv_max_port);xferlog_enable=YES开启传输日志,便于审计文件操作。