主動模式和被動模式哪種模式比較安全?

主動模式和被動模式哪種模式比較安全?

我正在研究主動和被動 FTP 模式的類型,我對當前場景的一些問題有點困惑

設想: 我有 Android 裝置作為將由組織使用的客戶端,該組織非常關心其伺服器上的安全性或伺服器上的資料或其他任何東西,一個很好的例子是銀行伺服器。

現在他們可以擁有大約 1000-1500 台 Android 裝置。每個設備將獲得下載項目的列表,並且每​​個設備將逐個迭代該列表並下載該項目並為每個項目建立新連接。

現在來看看上述 FTP 用例中對安全性和裝置數量的擔憂。我有以下問題。

主動模式: 根據我的理解,我認為我應該使用主動模式,它可以解決有關在伺服器上開啟多個連接埠的組織問題,因為客戶端 Android 裝置將啟動命令和資料連線。但另一方面,伺服器能否在主動模式下管理從單一連接埠傳送或開啟資料通道以傳送 1000-1500 個裝置?不會失敗嗎?

被動模式: 如果我考慮被動模式,那麼我們必須考慮在安全性較高的組織上開啟多個連接埠的問題。在最壞的情況下,我們應該為 1000-1500 個 Android 裝置開啟多少個被動模式連接埠。上面提到了下載檔案的場景。

答案1

FTP 使用 1 個控制 TCP 連線和一個或多個資料連線。

控制連線用於在客戶端和伺服器之間傳輸有關要做什麼和正在做什麼的訊息。資料連接用於傳輸資料。本質上:客戶端在控制連接上告訴伺服器:給我該文件,伺服器將文件的位元組發送到資料連接。

由於您的問題與安全性相關,因此我將在這裡進行更深入的研究:TCP 連線是由客戶端向伺服器發送 TCP SYN 來「開啟」的。這些 SYN 通常是防火牆規則的主題。範例:允許 <ALL_IPS_IN_THE_INTERNET> 連接到連接埠 21 上的 <MY_FTP_SERVER>。

FTP主動模式是客戶端開啟控制連線並告訴伺服器伺服器應該開啟資料連接到哪個IP和PORT。

FTP被動模式是客戶端開啟控制連接,伺服器告訴客戶端客戶端應該向哪個IP和PORT開啟資料連線。

當用戶端位於 NAT 路由器後方且在多個用戶端之間共用一個公用 IP 位址時,FTP 主動模式會出現問題。客戶端只知道自己的私人IP位址,即使它可以計算出路由器的公共IP並將其發送到FTP伺服器,當伺服器嘗試連接到該IP時,請求也會到達路由器,有很多客戶端後面,並且它不知道應該將SYN 轉送到哪個客戶端。

此問題的解決方案是深度資料包檢查。路由器將識別出控制連接將前往連接埠 21,因此它將查看該連接,當客戶端告訴伺服器應打開資料連接的連接埠時,路由器將為此添加一個臨時連接埠轉送來自 ftp 伺服器的套件的連接埠。當控制連線關閉時,路由器將停用連接埠轉送。

只要您不關心安全性,這就很棒而且很好 - 意思是:那很糟糕。驗證或傳輸敏感資料時始終使用加密。

加密後,路由器無法再達到控制連線峰值,因此無法在主動模式下為 ftp 用戶端建立動態連接埠轉送。

這個問題可以透過 FTP 被動模式解決,因為兩個連線都是由客戶端開啟的。

但這會產生另一個問題 - 不是針對客戶端,而是針對糟糕的伺服器防火牆管理員。由於客戶端在被動模式下連接到的連接埠有些隨機,因此產生的防火牆規則如下所示:允許 <ALL_IPS_IN_THE_INTERNET> 連接到連接埠 21 和連接埠 1024-65535 上的 <MY_FTP_SERVER>。如果您有一個不錯的ftp 伺服器守護程序,您可以配置用於資料連接的連接埠範圍,這使防火牆變得更好一點:允許<ALL_IPS_IN_THE_INTERNET> 連接到連接埠21 和連接埠20000 到21500 上的<MY_FTP_SERVER> -這樣就可以了為您提供 1500 個並發資料連線。

你可以這樣做,但我建議不要這樣做。有一個更好的 FTP 替代方案:HTTP。

  • HTTP 不使用控制和資料連接,這是一個優點,沒有真正的缺點。
  • HTTP 受到安全設備/防火牆/Web 應用程式防火牆/...的良好支援 - 這些產品甚至可以中間人其客戶端 SSL 連接並在 HTTPS 上執行內容過濾
  • 大多數 HTTP 伺服器都可以設定為伺服器目錄清單。
  • 所有 HTTP 伺服器都支援下載,其中大多數甚至可以恢復。
  • HTTP 用戶端程式庫已在 Android 和 iPhone 裝置上可用

所以我會像這樣實作客戶端:

  1. 取得配置為列出所有可供下載的檔案的 URL 的目錄列表
  2. 下載文件

HTTP 甚至支援上傳和失敗上傳復原。

我希望我能在這裡成功推銷 HTTP,因為 FTP 是邪惡的!

編輯:我添加了一個連結到一個很好的帖子,顯示 vsftpd 的 PASV 模式行為中的最大連接數:https://serverfault.com/questions/563582/connections-number-of-vsftp-in-passive-mode

相關內容