如果你正在使用FTP传输文件,有一点你应该知道:标准FTP会将你的用户名、密码和每个文件完全不加密地发送出去。同一网络上的任何人都可以用基本的数据包嗅探工具看到一切。这不是理论上的风险。文件传输漏洞已经导致了近年来最大规模的数据泄露事件。
好消息是:保护你的传输并不复杂。你只需要使用正确的协议并遵循几个最佳实践。
为什么普通FTP是个问题
FTP在1971年设计,远在互联网安全成为关注点之前。它以明文传输一切,包括登录凭据。在咖啡店Wi-Fi、被入侵的路由器,甚至有内鬼的企业网络上,你的文件和密码完全暴露。
这不仅仅是个人文件的问题。2023年,MOVEit文件传输平台的漏洞影响了3,000多个组织和约1亿用户。2024年,Finastra的SFTP平台被攻破,可能暴露了全球银行的数据。2025年,Wing FTP Server和CrushFTP的严重漏洞被实际利用。
模式很清楚:文件传输是高价值目标,使用未加密的协议使其极易被利用。
SFTP vs FTPS vs FTP:应该用哪个
SFTP(SSH文件传输协议)是大多数用户的最佳选择。它通过端口22上的单一SSH连接加密所有内容。支持基于密钥的认证(密码不会在网络上传输),其单端口架构使防火墙配置简单。如果有选择,请使用SFTP。
FTPS(FTP over TLS)在原始FTP协议上添加了SSL/TLS加密。正确配置时是安全的,但它继承了FTP的双通道架构(控制连接和数据连接分离),使防火墙规则和NAT穿越变得复杂。还需要管理SSL证书。当服务器不提供SFTP时使用FTPS。
普通FTP只应在流量不会接触互联网的隔离内部网络中使用。即便如此,也要考虑SFTP是否同样容易设置。
使用SSH密钥认证
密码可以被猜测、钓鱼或截获。SSH密钥具有密码学强度,几乎不可能被暴力破解。4096位RSA密钥或Ed25519密钥提供的安全性是任何密码都无法比拟的。
在Mac上生成密钥,打开终端运行:
ssh-keygen -t ed25519 -C "your-email@example.com"
这会在~/.ssh/中创建一对密钥。将公钥添加到服务器的authorized keys中。然后配置你的FTP客户端(或FTPull/FTPush)使用私钥代替密码。
将密钥密码保存到macOS钥匙串中,这样就不用每次都输入:
ssh-add --apple-use-keychain ~/.ssh/id_ed25519
Mac上的凭据存储
FTP凭据的存储位置很重要。有些应用将密码以明文存储在磁盘上的配置文件或plist中。如果恶意软件或未授权用户访问了你的Mac,这些凭据会立即泄露。
安全的方法是使用macOS钥匙串,它会加密凭据并用Mac的登录密码保护。FTPSuite将所有连接凭据存储在钥匙串中,而不是应用特定的文件中。这利用了Apple内置的加密和访问控制。
请注意,Mac信息窃取器(如Atomic Stealer和Banshee)会特别针对钥匙串数据。保护自己的方法:保持macOS更新,启用FileVault磁盘加密,使用强登录密码,谨慎对待来源不明的下载。
最佳实践清单
- 对任何敏感内容或通过互联网的传输,绝不使用普通FTP。
- 两者都可用时,优先选择SFTP而非FTPS。
- 尽可能使用SSH密钥认证代替密码。
- 如果使用密码,确保足够长(16个字符以上)、唯一,并存储在密码管理器或钥匙串中。
- FTPS连接仅使用TLS 1.2或1.3。禁用较旧的SSL/TLS版本。
- 验证FTPS的服务器证书。不要跳过证书验证。
- 尽可能通过IP地址限制服务器访问。
- 监控传输日志,关注异常登录时间、认证失败或意外IP地址。
- 保持软件更新。FTP服务器的零日漏洞会被迅速利用。
- 在Mac上启用FileVault加密整个磁盘,保护已下载的静态文件。
FTPSuite如何处理安全
FTPSuite(FTPull和FTPush)在设计时就考虑了这些最佳实践:
- 支持FTP、SFTP和FTPS(Explicit和Implicit)。
- 所有凭据存储在macOS钥匙串中。
- SFTP连接支持SSH密钥认证。
- 作为原生macOS应用运行,无外部依赖或后台守护进程。
文件传输的安全取决于你选择的协议和管理凭据的方式。工具已经存在。请善加利用。