理解SFTP与FTPS与FTP之间的区别

FTP或文件传输协议是最常用的数据传输方法之一,适用于各种用途。

FTP有不同的安全变体,称为FTPS和SFTP,它们在工作方式上有一些微妙的差异和一些不太明显的差异。这些差异与数据交换的方式、通信中的安全级别和类型以及相关的链接问题有关。

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

FTP

FTP是几十年前提出的文件传输协议,最初是在链接_1中提出的。后来演变为当前使用的标准协议(链接_2)。

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命令指定的端口。此数据通道然后用于服务器和客户端之间的文件传输。

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

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

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

FTPS

即使你愿意承担FTP的非加密数据传输和中间人攻击所带来的风险,行业要求您使用更安全的替代方案,如FTPS和SFTP,它们相对更安全。

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

与FTP类似,FTPS使用两个通道进行通信:命令通道和数据通道。数据通道可以使用FTPS进行加密,或者为了更安全起见,可以同时加密命令和数据通道。

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

FTPS中的身份验证

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

SFTP

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

SFTP是一个安全的FTP协议,它在SSH下发送和接收文件。由于SSH完全加密,SFTP是通过网络传输文件的一种强大而安全的方法。

SFTP与FTP和FTPS不同,使用单个通信通道传输命令和数据流量,其中所有信息都以encrypted的形式传递,并包括初始身份验证。

SFTP中的身份验证

SFTP的身份验证可以通过简单的用户名和密码进行,但与FTP不同,所有信息,包括身份验证详细信息,都通过网络加密传输。

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

摘要

本文总结了不同流行文件传输协议(FTP、FTPS和SFTP)的基本特性,并突出了这些协议之间的细微和重大差异。它介绍了在防火墙中需要允许的端口,以建立一个工作的FTP/FTPS/SFTP服务器,并强调了切换到更安全的协议(如FTPS和SFTP)的必要性。

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

你可能也会对了解最好的FTP Server SoftwareFTP/SFTP Clients感兴趣。

类似文章