vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服務器不支持的特征。比如:
非常高的安全性需求
帶寬限制良好的可伸縮性創建虛擬用戶的可能性IPv6支持中等偏上的性能分配虛擬 IP 的可能性高速vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務器設計開發的最開始的時候,高安全性就是一個目標。
一個例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是為程序(這里就是 vsftpd 了)單獨指定一個新的目錄,它也就不能訪問那個目錄之外的程序和文件了 --- 所以這也稱為“被鎖上的”。一個可能被潛在的攻擊者破壞的 FTP 服務器將被從系統的其他部分獨立開來,從而避免了更大的損失。
由于有了如此多的特性,其中 FTP 服務的安全性應該是最重要的,vsftpd 比其他 FTP 服務器更加優越。WU-FTPD http://www.wu-ftpd.org/ 在這里可以被視作一個反面的例子,因為它在過去的幾年中出現了太多的安全缺陷。
附錄1:什么是FTP
FTP Transfer Protocol 件傳輸協議的縮寫,在RFC 959中具體說明。FTP會話時包含了兩個通道,一個叫控制通道,一個叫數據通道。
控制通道:控制通道是和FTP服務器進行溝通的通道,連接FTP,發送FTP指令都是通過控制通道來完成的。
數據通道:數據通道是和FTP服務器進行文件傳輸或者列表的通道。
FTP協議中,控制連接均有客戶端發起,而數據連接有兩種工作方式:PORT方式和PASV方式
PORT模式(主動方式)
FTP 客戶端首先和FTP Server的TCP 21端口建立連接,通過這個通道發送命令,客戶端需要接收數據的時候在這個通道上發送PORT命令。 PORT命令包含了客戶端用什么端口(一個大于1024的端口)接收數據。在傳送數據的時候,服務器端通過自己的TCP 20端口發送數據。 FTP server必須和客戶端建立一個新的連接用來傳送數據。
PASV模式(被動方式)
在建立控制通道的時候和PORT模式類似,當客戶端通過這個通道發送PASV 命令的時候,FTP server打開一個位于1024和5000之間的隨機端口并且通知客戶端在這個端口上傳送數據的請求,然后FTP server 將通過這個端口進行數據的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接傳送數據。
如果從C/S模型這個角度來說,PORT對于服務器來說是OUTBOUND,而PASV模式對于服務器是INBOUND,這一點請特別注意,尤其是在使用防火墻的企業里,這一點非常關鍵,如果設置錯了,那么客戶將無法連接。
附錄2:FTP用戶管理解說
FTP服務器對用戶的管理,在默認的情況下是根據 /etc/passwd及/etc/group 來進行的,所以我們一定要了解Linux系統用戶和用戶組的管理,用戶和用戶組的管理是一切應用的的基礎,有的弟兄不想去了解基礎的東西,就想一步成架好各種服務器,事實證明這種學習方法是最不明智的;雖然在您可能在幾分鐘啟動了ftp服務器,但遇到問題時,您不一定能知道是哪里出錯;所以基礎還是極為重要的;推薦文章: 《Linux 用戶(user)和用戶組(group)管理概述》
匿名ftp 用戶的理解
當我們訪問各大FTP上訪問時,可能我們不去想我們以什么身份登錄的,如果他的FTP允許匿名登錄的話;比如我們在瀏覽器上打入;
ftp://mirrors.kernel.org
或
ftp://ftp:ftp@mirrors.kernel.org
我們會發現上面的兩行最終都能訪問,而且顯示的結果也完全一樣,最終都跳到 ftp://mirrors.kernel.org 地址;那我們訪問這個FTP時,是不是有用戶和密碼呢?是的,也是需要在的,只是在服務器端允許匿名訪問,而匿名訪問的用戶名和密碼都是ftp,只是我們因為匿名訪問,沒有感覺到他有用戶名和密碼罷了。第二個地址就是以ftp用戶,密碼也是ftp來訪問 ftp://mirrors.kernel.org;
新聞熱點
疑難解答