为什么需要给FTP加上TLS加密
公司里经常要传一些客户资料或者财务报表,以前用普通FTP上传下载,总觉得不踏实。前几天运维同事提醒我,明文传输的账号密码容易被截获,建议把FTP升级成支持TLS加密的模式。这才意识到,老方法虽然方便,但风险不小。
比如在公共Wi-Fi环境下,有人用抓包工具就能看到你传输的内容。一旦用户名密码泄露,服务器可能就被盯上了。启用TLS之后,数据会自动加密,哪怕被截获也看不懂,相当于给文件传输加了层保险柜。
准备证书文件
TLS依赖数字证书来建立安全连接。你可以选择自签名证书或者购买可信CA签发的证书。测试环境用自签名就行,生产环境建议用Let's Encrypt这类免费可信证书。
生成自签名证书可以用OpenSSL命令:
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout ftpd.key -out ftpd.crt执行完会得到两个文件:ftpd.key(私钥)和ftpd.crt(公钥证书),后面配置时要用到。
ProFTPD配置TLS示例
假设你用的是ProFTPD服务,在配置文件中加入以下内容:
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/proftpd/tls.log
TLSProtocol SSLv3 TLSv1 TLSv1.1 TLSv1.2
TLSOptions NoCertRequest
TLSRSACertificateFile /etc/ssl/certs/ftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/ftpd.key
TLSVerifyClient off
TLSRequired on
</IfModule>保存后重启服务,如果日志没报错,说明配置生效了。
客户端如何连接
用户这边也不能沿用老方式。像FileZilla这样的客户端,新建站点时协议要选“FTPES - FTP over explicit TLS”,端口通常是21。输入账号密码后连接,状态栏会显示“已安全登录”,表示走的是加密通道。
手机上也有支持TLS的FTP应用,比如AndFTP,设置时勾选SSL/TLS选项即可。家里老婆想从手机同步照片到NAS,之前担心网络不安全,现在开了TLS就放心多了。
常见问题排查
刚配完发现连不上?先检查防火墙是否放行了被动模式的端口范围。可以在配置里指定:
TLSOptions ExportCertData
PasvMinPort 50000
PasvMaxPort 50100然后在防火墙开放50000-50100这段端口。另外确保证书路径正确,权限设为600,避免因读取失败导致服务启动异常。
用curl测试连接也很方便:
curl -v --tlsv1.2 --ftp-ssl ftp://your-server.com/看到SSL handshake successful说明链路正常。