了解 SFTP 与 FTPS 与 FTP

FTP 或文件传输协议是可用于各种用例的最流行的数据传输方法之一。

FTP 有不同的可用安全变体,称为 FTPS 和 SFTP,它们在工作方式上包含了一些微妙和不那么微妙的差异。 这些差异与数据交换方式、通信安全级别和类型以及防火墙注意事项有关。

了解这些协议的工作原理以及这些流行传输机制之间的差异可以帮助您选择最适合您需求的协议。

FTP

FTP 是最初在 RFC 114 下提出的具有数十年历史的文件传输协议。后来演变为 RFC 959,这是当今使用的标准。

FTP 在两个通道上工作以交换信息:一个用于命令,另一个用于数据。 这需要两个端口才能使 FTP 工作——命令通道和数据通道。

命令通道在端口 21 上工作,该端口接受来自客户端的连接并处理命令的传递。 命令通道在整个 FTP 会话期间保持打开状态,直到客户端发送 QUIT 命令或服务器由于不活动或任何其他可能的原因而强制断开连接。

数据通道使用在服务器(被动模式)或客户端(主动模式)上侦听的按需临时端口。 该通道负责以目录列表和文件传输的形式在服务器和客户端之间共享实际数据。

与命令通道不同,数据通道仅在文件传输期间保持打开状态,一旦完成,数据通道就会关闭。 对于多个文件或目录列表的并发传输,需要多个数据通道端口。

FTP 本质上是一种不安全的协议,因为命令和数据通道都以未加密的形式传输信息,这很容易被任何使用中间人攻击的人拦截。

如前所述,FTP 需要在服务器端的端口 21/tcp 上为命令通道建立一个入站连接。 为文件传输和目录列表定义了被动端口范围,并允许入站连接。 此定义过程可能因使用的 FTP 服务器而异。 有关详细信息,请参阅其文档。 在客户端,应允许端口 21/tcp 上的出站连接以及服务器上定义的被动端口范围。

FTP 中的身份验证

FTP 身份验证信息在初始连接建立期间通过命令通道传递。 FTP 可以使用用户名和密码进行身份验证,也可以匿名以允许任何人登录和访问服务器。

主动和被动 FTP 模式

FTP 使用主动或被动模式来建立连接。

在主动模式下,用户从 FTP 客户端上的随机端口连接到服务器上的 FTP 端口 21/tcp 并发送 PORT 命令,指定服务器应连接的客户端端口。 此端口将用于数据通道。

然后服务器从端口 20/tcp 连接到之前由客户端使用 PORT 命令指定的客户端端口。 然后,此数据通道用于服务器和客户端之间的文件传输。

  如何加入 Zoom 会议:使用密码登录

在被动模式下,客户端从 FTP 客户端的一个随机端口连接到服务器上的 21/tcp 端口,并发送 PASV 命令。 然后服务器回复一个随机端口,该端口应该用于数据通道。 然后客户端使用另一个随机端口连接到前面步骤中服务器回复的端口。 然后,此数据通道连接用于服务器和客户端之间的文件传输。

因此,在主动模式下,初始连接请求由客户端发起,而数据通道连接请求由服务器发起。

另一方面,在被动模式下,初始连接请求和后续数据通道请求都是由客户端向服务器发起的。 由于入站/出站连接类型的方向,这种细微的差异有时会影响防火墙允许/阻止传统 FTP 请求的方式。

FTPS

即使您愿意承担与 FTP 相关的风险以及未加密的数据传输和中间人攻击,行业要求也迫使您使用更安全的替代方案,如 FTPS 和 SFTP,它们相对更安全。

1990 年,随着安全形势的变化,Netscape 创建了 SSL 或安全套接字层 (SSL,现在称为 TLS) 协议来保护网络上的通信。 SSL 应用于 FTP,它成为 FTPS 或文件传输协议安全。 FTPS 或 FTP/S 通常在端口 990/tcp 上运行,但也可以在端口 21/tcp 上看到。 同样,对于数据通道,端口 989/tcp 是用于 FTPS 的公共端口。 如果命令端口是 21/tcp,那么它的数据端口应该是 20/tcp。

与 FTP 一样,FTPS 使用两个通道进行通信:命令通道和数据通道。 数据通道可以使用 FTPS 加密,或者命令和数据通道都可以加密以提高安全性。

与 FTP 一样,FTPS 也为命令和数据通道使用多个端口。 因此,端口 21/tcp 用于初始连接和认证信息传输。 稍后,将需要不同的端口来为来自客户端的每个文件传输或目录列表请求设置数据通道。 因此,与 FTP 一样,它需要在您的防火墙中允许一系列端口。

FTPS 中的身份验证

FTPS 的身份验证使用用户名和密码以及服务器证书进行加密。 当 FTPS 客户端连接到服务器时,它会检查服务器的证书是否受信任以继续进行连接。 可以从客户端和服务器请求此证书。

SFTP

与 FTP 和 FTPS 不同,SFTP(SSH 文件传输协议)是建立在 SSH(或 Secure Shell)上的完全不同的协议。 默认情况下,SFTP 在端口 22/tcp 上工作,与 SSH 相同,尽管它可以配置为使用服务器上的自定义空闲端口。

  如何修复 Epson 打印机上的 0x97 错误

SFTP 是一种安全的 FTP 协议,它在底层使用 SSH 来发送和接收文件。 SSH 完全加密,SFTP 是一种通过网络传输文件的强大且安全的方法。

SFTP 与 FTP 和 FTPS 不同,它使用单个通信通道来传输命令和数据流量,所有这些都以加密形式与初始身份验证一起传递。

SFTP 中的身份验证

SFTP 中的身份验证可以通过简单的用户名和密码完成,但与 FTP 不同的是,所有信息(包括身份验证详细信息)都通过网络加密传递。

SFTP 还支持使用 SSH 密钥对、私钥和公钥组合进行身份验证,其中客户端为指定用户提供私钥,服务器应具有相应的公钥才能成功进行身份验证。 它比使用用户名/密码组合更安全。 如果在 SFTP 服务器上配置了这两种方法,则可以使用密码和 SSH 密钥对同一用户进行身份验证。

概括

本文总结了不同流行的文件传输协议(即 FTP、FTPS 和 SFTP)的基本特性,并重点介绍了这些协议之间的细微和主要区别。 它涵盖了防火墙中设置工作 FTP/FTPS/SFTP 服务器所需允许的端口,同时还强调了切换到更安全的协议(如 FTPS 和 SFTP)的必要性。

当我在这里说 FTP 时,我指的是本文中讨论的任何协议。 FTP 的原因已有数十年的历史,甚至更新的安全版本有时也被称为 FTP,而不是日常使用的指定名称。

您可能也有兴趣了解最好的 FTP 服务器软件和 FTP/SFTP 客户端。