安全的FTP服務(wù)器 vsftpd簡介
vsftpd 是一個 UNIX 類操作系統(tǒng)上運行的服務(wù)器的名字,它可以運行在諸如 Linux, BSD, Solaris, HP-UX 以及 IRIX 上面。它支持很多其他的 FTP 服務(wù)器不支持的特征。比如:
非常高的安全性需求
帶寬限制
良好的可伸縮性
創(chuàng)建虛擬用戶的可能性
IPv6支持
中等偏上的性能
分配虛擬 IP 的可能性
高速
vsftpd 的名字代表"very secure FTP daemon", 安全是它的開發(fā)者 Chris Evans 考慮的首要問題之一。在這個 FTP 服務(wù)器設(shè)計開發(fā)的最開始的時候,高安全性就是一個目標。
一個例子就是 vsftpd 是在 chroot 模式下工作的,chroot 模式就是為程序(這里就是 vsftpd 了)單獨指定一個新的目錄,它也就不能訪問那個目錄之外的程序和文件了 --- 所以這也稱為“被鎖上的”。一個可能被潛在的攻擊者破壞的 FTP 服務(wù)器將被從系統(tǒng)的其他部分獨立開來,從而避免了更大的損失。
由于有了如此多的特性,其中 FTP 服務(wù)的安全性應(yīng)該是最重要的,vsftpd 比其他 FTP 服務(wù)器更加優(yōu)越。WU-FTPD http://www.wu-ftpd.org/ 在這里可以被視作一個反面的例子,因為它在過去的幾年中出現(xiàn)了太多的安全缺陷。
附錄1:什么是FTP
FTP Transfer Protocol 件傳輸協(xié)議的縮寫,在RFC 959中具體說明。
FTP會話時包含了兩個通道,一個叫控制通道,一個叫數(shù)據(jù)通道。
控制通道:控制通道是和FTP服務(wù)器進行溝通的通道,連接FTP,發(fā)送FTP指令都是通過控制通道來完成的。
數(shù)據(jù)通道:數(shù)據(jù)通道是和FTP服務(wù)器進行文件傳輸或者列表的通道。
FTP協(xié)議中,控制連接均有客戶端發(fā)起,而數(shù)據(jù)連接有兩種工作方式:PORT方式和PASV方式
PORT模式(主動方式)
FTP 客戶端首先和FTP Server的TCP 21端口建立連接,通過這個通道發(fā)送命令,客戶端需要接收數(shù)據(jù)的時候在這個通道上發(fā)送PORT命令。 PORT命令包含了客戶端用什么端口(一個大于1024的端口)接收數(shù)據(jù)。在傳送數(shù)據(jù)的時候,服務(wù)器端通過自己的TCP 20端口發(fā)送數(shù)據(jù)。 FTP server必須和客戶端建立一個新的連接用來傳送數(shù)據(jù)。
PASV模式(被動方式)
在建立控制通道的時候和PORT模式類似,當客戶端通過這個通道發(fā)送PASV 命令的時候,F(xiàn)TP server打開一個位于1024和5000之間的隨機端口并且通知客戶端在這個端口上傳送數(shù)據(jù)的請求,然后FTP server 將通過這個端口進行數(shù)據(jù)的傳送,這個時候FTP server不再需要建立一個新的和客戶端之間的連接傳送數(shù)據(jù)。
如果從C/S模型這個角度來說,PORT對于服務(wù)器來說是OUTBOUND,而PASV模式對于服務(wù)器是INBOUND,這一點請?zhí)貏e注意,尤其是在使用防火墻的企業(yè)里,這一點非常關(guān)鍵,如果設(shè)置錯了,那么客戶將無法連接。
附錄2:FTP用戶管理解說
FTP服務(wù)器對用戶的管理,在默認的情況下是根據(jù) /etc/passwd及/etc/group 來進行的,所以我們一定要了解Linux系統(tǒng)用戶和用戶組的管理,用戶和用戶組的管理是一切應(yīng)用的的基礎(chǔ),有的弟兄不想去了解基礎(chǔ)的東西,就想一步成架好各種服務(wù)器,事實證明這種學(xué)習(xí)方法是最不明智的;雖然在您可能在幾分鐘啟動了ftp服務(wù)器,但遇到問題時,您不一定能知道是哪里出錯;所以基礎(chǔ)還是極為重要的;
推薦文章: 《Linux 用戶(user)和用戶組(group)管理概述》
匿名ftp 用戶的理解
當我們訪問各大FTP上訪問時,可能我們不去想我們以什么身份登錄的,如果他的FTP允許匿名登錄的話;比如我們在瀏覽器上打入;
ftp://mirrors.kernel.org
或
ftp://ftp:ftp@mirrors.kernel.org
我們會發(fā)現(xiàn)上面的兩行最終都能訪問,而且顯示的結(jié)果也完全一樣,最終都跳到 ftp://mirrors.kernel.org 地址;那我們訪問這個FTP時,是不是有用戶和密碼呢?是的,也是需要在的,只是在服務(wù)器端允許匿名訪問,而匿名訪問的用戶名和密碼都是ftp,只是我們因為匿名訪問,沒有感覺到他有用戶名和密碼罷了。第二個地址就是以ftp用戶,密碼也是ftp來訪問 ftp://mirrors.kernel.org;
如果我們以ftp命令連接 mirrors.kernel.org 時,我們會發(fā)現(xiàn)需要輸入用戶ftp,密碼ftp才能訪問;
在FTP服務(wù)器中,匿名用戶的用戶名和密碼都是ftp ;這個用戶可以在您的操作系統(tǒng)中的 /etc/passwd 中能找得到;可能有類似下面的一行;
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
說明:
/etc/passwd 是系統(tǒng)用戶的配置文件;/etc/group是系統(tǒng)用戶組配置文件,您可以通過 《Linux 用戶(user)和用戶組(group)管理概述》 及其相關(guān)文檔中了解一些用戶管理的一些基礎(chǔ)知識;
在ftp用戶這行中,我們看到七個字段,每個字段寫字段之間用:號分割;
ftp 是用戶名
x 是密碼字段,是隱藏的;
14 是用戶的UID字段,可以自己來設(shè)定,不要和其它用戶的UID相同,否則會造成系統(tǒng)安全問題;
50 用用戶組的GID,可以自己設(shè)定,不要和其它用戶組共用FTP的GID,否則會造成系統(tǒng)全全問題;
FTP User 是用戶說明字段;
/var/ftp 是ftp用戶的家目錄,可以自己來定義;
/sbin/nologin 這是用戶登錄SHELL ,這個也是可以定義的,/sbin/nologin 表示不能登錄系統(tǒng);系統(tǒng)虛擬帳號(也被稱為偽用戶)一般都是這么設(shè)置。比如我們把ftp用戶的/sbin/nologin 改為 /bin/bash ,這樣ftp用戶通過本地或者遠程工具ssh或telnet以真實用戶身份登錄到系統(tǒng)。這樣做對系統(tǒng)來說是不安全的;如果您認為一個用戶沒有太大的必要登錄到系統(tǒng),就可以只給他FTP帳號的權(quán)限,也就是說只給他FTP的權(quán)限,而不要把他的SHELL設(shè)置成 /bin/bash 等;
關(guān)于ftp用戶組的理解
我們查看 /etc/group 的時候,會發(fā)現(xiàn)類似這樣一條;
ftp:x:50:
/etc/group 是用戶組的管理配置文件,上面這行表示用戶組ftp,x是密碼段,50是GID;我們對照在/etc/passwd中的ftp那行得知ftp用戶是屬于ftp用戶組的,因為ftp用戶那行中的GID和ftp用戶組的GID是相同的。
匿名ftp用戶和ftp用戶組是否可以刪除
在一般情況下是不能把/etc/passwd和/etc/group 中有把ftp用戶和用戶組的行刪除的,因為FTP服務(wù)器是需要他們來對FTP用戶實現(xiàn)管理,在默認的情況下。
雖然不能刪除,但對/etc/passwd及/etc/group中的ftp用戶及ftp用戶組的一些相關(guān)的東西是能修改的;比如我們可以把ftp用戶的家目錄改掉,也可以把ftp用戶的UID改掉 ... ... 前提是你對用戶管理有所了解。系統(tǒng)用戶管理是一切應(yīng)用基礎(chǔ)之一,可能初學(xué)Linux的弟兄并不了解用戶管理的重要性,但慢慢您就會發(fā)現(xiàn)這個道理。
相關(guān)文章:
1. 阿里云云服務(wù)器Linux系統(tǒng)FTP服務(wù)器搭建設(shè)置教程2. ftp服務(wù)器PDF文件在線查看的實現(xiàn)方法3. windows server 2016搭建FTP服務(wù)器圖文教程4. vsftpd 出現(xiàn)530 and 500 錯誤問題解決辦法5. Windows10搭建ftp服務(wù)器的圖文教程6. 史上最詳細的vsftpd配置文件詳解7. Windows搭建FTP服務(wù)器詳細教程8. ftp服務(wù)器FileZilla Server詳細配置教程9. windows 7下FTP服務(wù)器構(gòu)建教程10. Linux實現(xiàn)文件上傳ftp服務(wù)器腳本代碼
