【FTP】安全性考虑

279 阅读3分钟

FTP默认没有任何加密手段,为了提升安全性,可以采用FTPS或SFTP。FTPS通过SSL/TLS对传输通道进行加密,确保数据在传输过程中的安全性。SFTP基于SSH协议,通过加密隧道来保护数据。

FTPS

FTPS(File Transfer Protocol Secure)是一种通过加入安全层来保护传统FTP协议的数据传输安全性的增强版。它使用SSL/TLS加密层为FTP通信提供了数据加密、身份验证和数据完整性保障,解决了原始FTP协议中数据明文传输的问题。

FTPS通过引入SSL/TLS协议,提供了一种安全的数据传输方式。在FTPS中,可以将连接分为两类:显式FTPS(Explicit FTPS)和隐式FTPS(Implicit FTPS)。

显式FTPS(Explicit FTPS)

  • 定义:显式FTPS(Explicit FTPS)要求客户端明确请求服务器升级到加密连接。这种模式通常也称为“FTPES”。
  • 工作流程:
    1. 客户端首先与服务器建立一个普通的FTP控制连接(使用端口21)。
    2. 然后客户端通过发送AUTH TLS命令,告诉服务器需要使用TLS进行加密。
    3. 服务器收到请求后切换到加密模式,双方使用SSL/TLS协议加密后续的命令和数据传输。
  • 特点:显式FTPS的优势在于兼容性好,服务器可以支持加密和非加密的连接,客户端决定是否要求加密通信。

隐式FTPS(Implicit FTPS)

  • 定义:隐式FTPS(Implicit FTPS)是原始的FTPS实现方式,要求客户端在连接建立时就使用加密连接。
  • 工作流程:
    1. 客户端在连接时直接使用加密连接,通过端口990(而不是普通FTP的21端口)与服务器通信。
    2. 由于连接从一开始就必须加密,服务器不接受任何非加密的连接。
  • 特点:隐式FTPS具有更强的安全性,因为它要求所有连接都是加密的。不过,隐式FTPS的灵活性较差,因为它只能支持加密连接。

1.2  SFTP

SFTP(Secure File Transfer Protocol,安全文件传输协议)是一种基于“SSH(Secure Shell)”协议的文件传输协议,提供了加密的、可靠的数据传输方式。与传统的FTP不同,SFTP在设计上完全独立于FTP,其目的不仅仅是提供安全的文件传输,还提供了对文件管理(如重命名、删除等)的全面支持。

SFTP的工作机制与传统FTP不同。它的通信完全依赖于SSH协议,这意味着数据和命令通过加密的SSH通道传输。以下是SFTP的工作机制的详细说明:

建立加密连接

  • 连接建立:SFTP客户端首先通过TCP向服务器的SSH端口(22)发起连接。服务器与客户端通过SSH协议进行密钥交换,建立安全的通信隧道。
  • 身份认证:在SSH连接过程中,客户端需要提供凭证(通常是密码或公钥)以完成认证。认证完成后,安全通道建立,双方可以通过加密连接通信。

数据传输

  • 在加密通道建立后,SFTP客户端通过这个加密通道发送文件管理命令,如列出目录、上传文件、下载文件等。
  • 所有传输的数据,包括文件内容、命令和响应,都经过加密,确保数据在传输过程中不会被窃听或篡改。