了解 SFTP 與 FTPS 與 FTP
已發表: 2022-08-18FTP 或文件傳輸協議是可用於各種用例的最流行的數據傳輸方法之一。
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
命令指定的客戶端端口。 然後,此數據通道用於服務器和客戶端之間的文件傳輸。
在被動模式下,客戶端從 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 相同,儘管它可以配置為使用服務器上的自定義空閒端口。

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 客戶端。