如何在Ubuntu上配置FTP SSL加密
导读:在 Ubuntu 上配置 FTP SSL 加密(以 vsftpd 为例) 一 准备与安装 安装 vsftpd 与 OpenSSL:sudo apt update && sudo apt install vsftpd ope...
在 Ubuntu 上配置 FTP SSL 加密(以 vsftpd 为例)
一 准备与安装
- 安装 vsftpd 与 OpenSSL:sudo apt update & & sudo apt install vsftpd openssl
- 备份原始配置:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
- 建议的基本访问配置(按需调整):
- anonymous_enable=NO
- local_enable=YES
- write_enable=YES
- chroot_local_user=YES(将本地用户限制在其家目录,更安全)
二 生成或获取 SSL 证书
- 自签名证书(测试/内网可用):
- 生成命令:sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
- 说明:将证书与私钥放在同一文件便于管理;生产环境建议使用受信任 CA 签发的证书
- 使用 Let’s Encrypt 证书(公网生产推荐):
- 获取证书:sudo apt install certbot python3-certbot-nginx
- 申请证书:sudo certbot certonly --standalone -d yourdomain.com
- 证书路径:/etc/letsencrypt/live/yourdomain.com/fullchain.pem 与 privkey.pem
三 配置 vsftpd 启用 SSL/TLS
- 编辑配置文件:sudo nano /etc/vsftpd.conf,常用关键项如下(如已有则修改,无则新增):
- 启用加密与协议
- ssl_enable=YES
- tls_enable=YES
- ssl_tlsv1=YES
- ssl_sslv2=NO
- ssl_sslv3=NO
- 证书与私钥(按你的证书路径设置)
- 自签名示例:rsa_cert_file=/etc/ssl/private/vsftpd.pem;rsa_private_key_file=/etc/ssl/private/vsftpd.pem
- Let’s Encrypt 示例:ssl_cert_file=/etc/letsencrypt/live/yourdomain.com/fullchain.pem;ssl_key_file=/etc/letsencrypt/live/yourdomain.com/privkey.pem
- 强制加密与权限
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- require_ssl_reuse=NO(部分客户端不支持 SSL 会话重用时可关闭)
- ssl_ciphers=HIGH
- 被动模式端口范围(建议固定范围以便放行防火墙)
- pasv_enable=YES
- pasv_min_port=40000
- pasv_max_port=50000
- 启用加密与协议
- 保存后重启服务:sudo systemctl restart vsftpd
- 说明:不同版本的 vsftpd 对证书选项命名可能略有差异(如 ssl_cert_file/ssl_key_file 与 rsa_cert_file/rsa_private_key_file 的兼容性),以实际配置项生效为准
四 防火墙与被动模式端口放行
- UFW 示例:
- 放行控制与 FTPS 端口:sudo ufw allow 21/tcp;sudo ufw allow 990/tcp
- 放行被动端口范围:sudo ufw allow 40000:50000/tcp
- firewalld 示例:
- sudo firewall-cmd --permanent --add-service=ftp
- sudo firewall-cmd --permanent --add-service=ftps
- sudo firewall-cmd --permanent --add-port=40000-50000/tcp
- sudo firewall-cmd --reload
- 云服务器还需在云平台安全组放行上述端口
五 客户端连接与验证
- 使用 FileZilla 测试:
- 协议选择:FTP - FTPS(显式 SSL,端口 990)
- 主机:服务器 IP 或域名;端口:990
- 登录:输入本地系统用户名与密码
- 首次连接若使用自签名证书,会提示证书不受信任,确认指纹后继续
- 命令行验证(如不依赖 SSL 的 ftp 命令会失败,属正常):
- lftp -u 用户名,密码 -p 990 ftps://你的域名或IP
- 日志排查:
- 查看服务日志:sudo tail -f /var/log/vsftpd.log(连接失败、握手错误、被动端口等问题均会记录)
六 可选方案 SFTP(基于 SSH,非 FTP over SSL)
- 安装与启用:sudo apt install openssh-server;sudo systemctl start ssh & & sudo systemctl enable ssh
- 防火墙放行:sudo ufw allow 22/tcp
- 客户端使用 SFTP 协议连接(端口 22),适合无需 FTP 协议特性、追求更简运维的场景
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上配置FTP SSL加密
本文地址: https://pptw.com/jishu/775942.html
