FTP
FTP端口指南:端口20和21上的文件传输
了解 FTP 控制和数据连接的工作原理、为什么被动端口范围很重要,以及为什么 SFTP 或 FTPS 通常对于新文件传输工作流程更安全。
- 默认端口
- 20/21
- 协议
- TCP
- 主要用途
- 遗留文件传输
FTP 端口是什么?
FTP(即文件传输协议)是用于上传和下载文件的传统协议。 FTP 通常使用 TCP 端口 21 进行控制连接。在主动FTP中,TCP端口20可用于来自服务器的数据;在被动 FTP 中,服务器打开配置的被动数据端口范围。
21端口为FTP控制端口
客户端连接到 TCP 21 进行身份验证、列出目录、请求上传、请求下载以及协商如何打开数据连接。
数据端口取决于主动或被动模式
FTP 比现代协议更难通过防火墙,因为文件数据通常通过与命令不同的连接进行传输。
FTP 的工作原理
FTP 将命令与文件数据分开。客户端通过 TCP 21 连接到服务器、登录并发送列表、检索、存储、重命名或删除等命令。然后文件列表和传输使用单独的数据连接。
这种设计在较旧的网络中有意义,但它会给 NAT、防火墙和云安全组带来问题。端口检查器可以显示端口 21 是否可达,但成功的文件传输还取决于允许的数据通道。
主动 FTP 与被动 FTP
在主动 FTP 中,客户端连接到服务器的控制端口,然后服务器打开返回到客户端的数据连接。通过 NAT 或严格的客户端防火墙,反向连接通常会失败。
在被动 FTP 中,客户端同时打开到服务器的控制连接和数据连接。被动模式对于面向互联网的 FTP 更为常见,但服务器必须发布定义的被动端口范围,并且防火墙必须允许该范围。
FTP 与 FTPS 与 SFTP
普通 FTP 不会加密用户名、密码、命令或文件内容。 FTPS 在 FTP 上添加了 TLS,但仍然保留了 FTP 控制和数据通道模型。 SFTP 不同:它通过 SSH 运行,通常在 TCP 22 上,并且不使用 FTP 端口。
对于新部署,SFTP 通常更易于防火墙和操作。为了实现合作伙伴兼容性,可能需要 FTPS。普通 FTP 应仅限于隔离的遗留工作流程或在可能的情况下进行替换。
FTP 何时应打开
仅当旧合作伙伴、设备、应用程序或工作流程无法使用 SFTP、FTPS、HTTPS 上传、对象存储或托管文件传输服务时,才打开 FTP。常见示例包括较旧的 EDI 源、扫描仪、嵌入式设备和供应商集成。
避免使用公共匿名 FTP,除非它是有意提供公共文件并且具有严格的上传控制。暴露在互联网上的可写 FTP 经常被滥用于恶意软件暂存、数据盗窃和存储滥用。
打开 FTP 之前
在允许 FTP 之前,请决定服务器是否使用主动模式、被动模式或同时使用这两种模式。定义被动端口范围、外部 IP 地址、用户隔离模型、chroot 或监狱行为、日志记录、配额以及是否需要 TLS。
针对端口 21 的 TCP 检查仅确认控制路径。测试来自网络外部的真实上传和下载,因为被动范围、NAT、TLS 检查和文件系统权限仍然可能会中断传输。
如何在 Windows、Linux 和云服务器上启用 FTP
在Windows Server 上,IIS FTP 可以提供FTP 或FTPS。如果服务器位于 NAT 之后,请配置用户隔离、TLS 策略、被动端口范围、防火墙规则和外部 IP 设置。
在 Linux 上,vsftpd、ProFTPD 和 Pure-FTPd 等服务器很常见。配置本地用户或虚拟用户、chroot 行为、被动端口范围、TLS 证书(如果使用 FTPS)以及 TCP 21 和数据端口的主机防火墙规则。
在云服务器上,尽可能仅允许所需的源。在云安全组和主机防火墙中打开 TCP 21 和被动范围。如果您无法定义一个狭窄的被动范围,FTP 将难以彻底确保安全。
- 控制路径:客户端必须到达 TCP 21。
- 数据路径:被动FTP需要服务器端被动端口范围;主动 FTP 可能需要服务器到客户端连接。
- 身份层:使用命名帐户、最小权限、chroot 或用户隔离以及强凭据。
- 迁移层:记录保留 FTP 的原因并计划迁移到 SFTP、FTPS、HTTPS 上传或托管传输。
如何测试FTP端口
从外部端口检查 TCP 21 开始。如果控制端口打开,请使用来自网络外部的真实 FTP 客户端进行测试。根据需要确认登录、目录列表、上传、下载、重命名和删除行为。
如果登录正常,但目录列表或传输挂起,请检查被动模式设置、被动端口范围、外部 IP 通告、NAT、云安全组和 TLS 设置。许多 FTP 故障是数据通道故障,而不是端口 21 故障。
FTP常见故障处理案例
如果端口 21 被关闭,则 FTP 服务可能会停止、绑定到专用接口、被主机防火墙阻止或被云安全组拒绝。如果端口 21 已打开但传输失败,则首先要检查被动端口或 NAT。
如果身份验证失败,请检查用户名格式、密码策略、帐户锁定、chroot 权限、文件系统所有权、TLS 要求和服务器日志。如果只有部分客户端失败,请比较主动模式与被动模式以及客户端是否位于限制性 NAT 后面。
FTP 安全检查表
避免使用普通 FTP 来获取凭据或私人文件。尽可能使用 FTPS 或 SFTP、禁用匿名上传、限制源 IP、隔离用户、设置配额并保留详细的传输日志。
如果 FTP 必须保持公开,请修补服务器、限制被动端口、监控失败的登录和上传量、扫描上传的文件并删除过时的帐户。将 FTP 视为具有所有者和迁移计划的遗留例外。
常见问题
FTP 使用哪些端口?
FTP 使用 TCP 端口 21 进行控制连接。主动 FTP 可以使用 TCP 20 进行服务器端数据连接,而被动 FTP 使用配置的服务器端被动端口范围。
FTP 安全吗?
普通 FTP 不安全,因为它不加密凭据或文件内容。使用 SFTP 或 FTPS 进行敏感传输。
为什么 FTP 端口 21 打开但传输失败?
当数据连接被阻止时,控制连接可以工作。检查被动模式、被动端口范围、NAT、外部 IP 设置、防火墙和 TLS 策略。
SFTP 与 FTP 相同吗?
否。SFTP 是一种通过 SSH 运行的不同协议,通常在 TCP 22 上。FTP 使用端口 21 和单独的数据连接。