1. 安装vsftpd和OpenSSL
首先确保系统已安装vsftpd(FTP服务器软件)和OpenSSL(证书生成工具)。若未安装,执行以下命令安装:
sudo yum install vsftpd openssl -y
2. 生成SSL证书和私钥
使用OpenSSL生成自签名证书(生产环境建议替换为CA颁发的证书)。执行以下命令生成有效期365天、RSA密钥长度2048位的证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/pki/tls/private/vsftpd.key -out /etc/pki/tls/certs/vsftpd.pem
执行过程中需输入国家、组织名称、域名等信息(如无域名可直接回车),生成的私钥(.key)和证书(.pem)将分别保存至指定路径。
3. 配置vsftpd启用SSL
编辑vsftpd主配置文件/etc/vsftpd/vsftpd.conf,添加或修改以下关键参数以启用SSL并强化安全性:
ssl_enable=YES # 启用SSL/TLS加密
rsa_cert_file=/etc/pki/tls/certs/vsftpd.pem # 证书文件路径
rsa_private_key_file=/etc/pki/tls/private/vsftpd.key # 私钥文件路径
force_local_data_ssl=YES # 强制数据传输使用SSL
force_local_logins_ssl=YES # 强制登录过程使用SSL
ssl_tlsv1=YES # 允许TLSv1协议(更安全)
ssl_sslv2=NO # 禁用SSLv2(不安全)
ssl_sslv3=NO # 禁用SSLv3(不安全)
allow_anon_ssl=NO # 禁止匿名用户使用SSL
userlist_enable=YES # 启用用户列表控制
userlist_deny=NO # 允许用户列表中的用户登录(需配合/etc/vsftpd/user_list使用)
保存并退出配置文件。
4. 配置防火墙放行流量
若系统启用了firewalld防火墙,需允许FTP及HTTPS(SSL)流量通过:
sudo firewall-cmd --permanent --add-service=ftp # 允许FTP服务
sudo firewall-cmd --permanent --add-service=https # 允许HTTPS(SSL)服务
sudo firewall-cmd --reload # 重新加载防火墙规则
若使用iptables,需添加对应端口规则(FTP默认21端口,SSL加密流量同理)。
5. (可选)配置SELinux(若启用)
若系统SELinux处于enforcing模式,需调整策略以允许vsftpd访问用户目录:
sudo setsebool -P ftp_home_dir on # 允许FTP访问用户家目录
sudo setsebool -P allow_ftpd_full_access on # 允许FTP完全访问(根据需求调整)
6. 重启vsftpd服务并验证状态
应用配置变更,重启vsftpd服务:
sudo systemctl restart vsftpd
检查服务运行状态,确保无报错:
sudo systemctl status vsftpd
若显示“active (running)”,则表示服务已正常启动。
7. 测试SSL加密连接
使用支持SSL的FTP客户端(如FileZilla)连接服务器:
注意事项
vsftpd.conf中添加pasv_enable=YES、pasv_min_port=1024、pasv_max_port=1048,并在防火墙中开放对应端口范围。600,证书文件设置为644),防止未授权访问:sudo chmod 600 /etc/pki/tls/private/vsftpd.keysudo chmod 644 /etc/pki/tls/certs/vsftpd.pem