FTP服務器原理(轉)
阿新 • • 發佈:2018-12-10
使用 原理 轉換 磁盤容量 bubuko 啟動 不同等級 註意 進行 本文轉自https://www.cnblogs.com/Aiapple/p/5955736.html 感謝作者
21.1 FTP服務器原理
使用明碼傳輸方式,且有相當多的安全危機歷史。因此一般使用功能較少的vsftpd這個軟件。 21.1.1 FTP功能簡介 有以下功能
使用明碼傳輸方式,且有相當多的安全危機歷史。因此一般使用功能較少的vsftpd這個軟件。 21.1.1 FTP功能簡介 有以下功能
- 文檔傳輸與管理
- 不同等級的用戶身份:user,guest,anonymous
- 命令記錄與登錄文件記錄
- 限制用戶活動的目錄:(change root,簡稱 chroot)
- 即將登錄用戶的家目錄變成根目錄
21.1.2 FTP的運作流程與使用用的端口號 FTP的傳輸使用的是TCP封包協議。 FTP服務器使用了兩個聯機,分別是:
- 命令信道
- 數據流通道(ftp-data)
![技術分享圖片](http://image.bubuko.com/info/201812/20181210003831892223.png)
- 建立命令通道的聯機
- 客戶端會隨機取一個大於 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 (默認為 port 21)
- 數據傳輸的 ftp-data (默認為 port 20)
![技術分享圖片](http://image.bubuko.com/info/201812/20181210003832148092.png)
服務器主動連到 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)聯機模式
- 主動式,是指 服務器主動聯機客戶端。那被動式,就是客戶端聯機服務器。這裏都是指的數據傳輸聯機。
![技術分享圖片](http://image.bubuko.com/info/201812/20181210003832226220.png)
- 用戶與服務器建立命令信道
- 客戶端發出 PASV 的聯機要求
- 發出聯機要求,病等待服務器的回應
- FTP 服務器啟動數據端口口,並通知客戶端聯機
- 這個端口號碼不是主動式的port 20 ,而是隨機的。
- 告知客戶端這個 port PASV;
- 客戶端隨機取用大於 1024 的端口號進行連接
- 開放實體用戶的情況 (Real user)
- 系統默認並沒有針對實體用戶來進行『限制』的,所以他可以針對整個文件系統進行任何他所具有權限的工作。
- 限制用戶能力: chroot 與 /sbin/nologin 等
- 訪客身份(Guest)
- 訪客身份的限制
- 上傳下載檔案數目與磁盤容量限制,聯機時間,可用指令。
- 如chmod等就不要允許使用
- 匿名登錄使用者(anonymous)
- 幾乎不要給指令
- 限制文件傳輸的數量,盡量不給上傳數據的權限
- 限制匿名者同時登錄的最大聯機數量。
FTP服務器原理(轉)