1. 程式人生 > >FTP服務器原理(轉)

FTP服務器原理(轉)

使用 原理 轉換 磁盤容量 bubuko 啟動 不同等級 註意 進行

本文轉自https://www.cnblogs.com/Aiapple/p/5955736.html 感謝作者 21.1 FTP服務器原理
使用明碼傳輸方式,且有相當多的安全危機歷史。因此一般使用功能較少的vsftpd這個軟件。 21.1.1 FTP功能簡介 有以下功能
  • 文檔傳輸與管理
  • 不同等級的用戶身份:user,guest,anonymous
  • 命令記錄與登錄文件記錄
  • 限制用戶活動的目錄:(change root,簡稱 chroot)
  • 即將登錄用戶的家目錄變成根目錄

21.1.2 FTP的運作流程與使用用的端口號 FTP的傳輸使用的是TCP封包協議。 FTP服務器使用了兩個聯機,分別是:
  • 命令信道
  • 數據流通道(ftp-data)
兩個聯機通道的關系是怎麽樣的?以FTP預設的主動式(active)聯機來做說明: 主動指的是FTP服務器主動聯機客戶端,作為數據通道; 技術分享圖片 技術分享圖片

  • 建立命令通道的聯機
    • 客戶端會隨機取一個大於 1024 以上的端口 (port AA) 來與 FTP服務器端的 port 21 達成聯機, 這個過程當然TCP三次握手了!
    • 達成聯機後客戶端便可以透過這個聯機來對 FTP 服務器下達指令, 包括查詢文件名、下載、上傳等指令
  • 通知 FTP 服務器端,使用 active 且告知連接的端口號
    • 客戶端在需要數據的情況下,會告知服務器端要用什麽方式來聯機,如果是主動式 (active) 聯機時, 客戶端會先隨機啟用一個端口號 (圖21.1-1 當中的 port BB) ,且透過命令通道告知 FTP 服務器這兩個信息,並等待 FTP 服務器的聯機;
  • FTP 服務器『主動』向客戶端聯機
    • FTP 服務器由命令通道了解客戶端的需求後,會主動的由 20 這個端口號向客戶端的 port BB 聯機, 這個聯機當然也會經過TCP三次握手!此時 FTP 的客戶端與服務器端共會建立兩條聯機,分別用在命令的下達與數據的傳遞。 而預設 FTP服務器端使用的主動聯機端口號就是 port 20 !
如此一來則成功的建立起『命令』與『數據傳輸』兩個信道!不過,要註意的是,數據傳輸信道是在有數據傳輸的行為時才會建立的通道喔!並不是一開始連接到FTP 服務器就立刻建立的通道 由上可見,主動式聯機使用到的端口號:
  • 命令通道的 ftp (默認為 port 21)
  • 數據傳輸的 ftp-data (默認為 port 20)
在主動聯機的 FTP 服務器與客戶端之間具有防火墻的聯機問題 一般來說,很多的局域網絡都會使用防火墻(iptables) 的 NAT 功能,那麽在 NAT 後端的 FTP 用戶如何連接到 FTP 服務器呢? 技術分享圖片 技術分享圖片

服務器主動連到 NAT 等待轉遞至客戶端的聯機問題: 由於透過 NAT 的轉換後, FTP 服務器只能得知 NAT 的 IP 而不是客戶端的IP , 因此 FTP 服務器會以 port 20 主動的向 NAT 的 port BB 發送主動聯機的要求。 但你的 NAT 並沒有啟動 port BB 來監聽 FTP 服務器的聯機啊! 解決辦法:
  • 使用iptables所提供的FTP偵測模塊
    • ip_conntrack_ftp 及 ip_nat_ftp 等模塊主動的分析『目標是 port 21 的聯機』信息,得到port BB 的資料,
    • 此時若接受到 FTP 服務器的主動聯機,就能夠將該封包導向正確的後端主機了。
  • 客戶端選擇被動式(Passive)聯機模式
    • 主動式,是指 服務器主動聯機客戶端。那被動式,就是客戶端聯機服務器。這裏都是指的數據傳輸聯機。
21.1.3 客戶端選擇被動式聯機模式 技術分享圖片 技術分享圖片

  • 用戶與服務器建立命令信道
  • 客戶端發出 PASV 的聯機要求
    • 發出聯機要求,病等待服務器的回應
  • FTP 服務器啟動數據端口口,並通知客戶端聯機
    • 這個端口號碼不是主動式的port 20 ,而是隨機的。
    • 告知客戶端這個 port PASV;
  • 客戶端隨機取用大於 1024 的端口號進行連接
21.1.4 FTP的安全性問題與替代方案 ssh,提供較為安全的sftp-server。在上面傳輸的數據是經過加密的。 21.1.5 開放什麽身份的使用者登入
  • 開放實體用戶的情況 (Real user)
    • 系統默認並沒有針對實體用戶來進行『限制』的,所以他可以針對整個文件系統進行任何他所具有權限的工作。
    • 限制用戶能力: chroot 與 /sbin/nologin 等
  • 訪客身份(Guest)
    • 訪客身份的限制
    • 上傳下載檔案數目與磁盤容量限制,聯機時間,可用指令。
    • 如chmod等就不要允許使用
  • 匿名登錄使用者(anonymous)
    • 幾乎不要給指令
    • 限制文件傳輸的數量,盡量不給上傳數據的權限
    • 限制匿名者同時登錄的最大聯機數量。

FTP服務器原理(轉)