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”。
- 工作流程:
- 客户端首先与服务器建立一个普通的FTP控制连接(使用端口21)。
- 然后客户端通过发送AUTH TLS命令,告诉服务器需要使用TLS进行加密。
- 服务器收到请求后切换到加密模式,双方使用SSL/TLS协议加密后续的命令和数据传输。
- 特点:显式FTPS的优势在于兼容性好,服务器可以支持加密和非加密的连接,客户端决定是否要求加密通信。
隐式FTPS(Implicit FTPS)
- 定义:隐式FTPS(Implicit FTPS)是原始的FTPS实现方式,要求客户端在连接建立时就使用加密连接。
- 工作流程:
- 客户端在连接时直接使用加密连接,通过端口990(而不是普通FTP的21端口)与服务器通信。
- 由于连接从一开始就必须加密,服务器不接受任何非加密的连接。
- 特点:隐式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客户端通过这个加密通道发送文件管理命令,如列出目录、上传文件、下载文件等。
- 所有传输的数据,包括文件内容、命令和响应,都经过加密,确保数据在传输过程中不会被窃听或篡改。