FTP
一、FTP介紹 ?
? ?文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP),基于該協(xié)議FTP客戶端與服務(wù)端可以實現(xiàn)共享文 件、上傳文件、下載文件。 FTP 基于TCP協(xié)議生成一個虛擬的連接,主要用于控制FTP連接信息, 同時再生成一個單獨的TCP連接用于FTP數(shù)據(jù)傳輸。用戶可以通過客戶端向FTP服務(wù)器端上傳、下 載、刪除文件,F(xiàn)TP服務(wù)器端可以同時提供給多人共享使用。
二、FTP工作原理
? ?FTP 是 C/S 架構(gòu)的服務(wù),擁有一個服務(wù)器端和一個客戶端,F(xiàn)TP 底層通過 TCP 協(xié)議來作為傳輸協(xié)議,所以 FTP 協(xié)議是一種可靠的文件傳輸方式,F(xiàn)TP 提 供了兩個端口號,20 和 21 號端口,20 號是數(shù)據(jù)接口,提供數(shù)據(jù)之間的傳輸,21 號是命令接口,提供命令之間的傳輸。 ?
三、FTP 傳輸模式介紹 ?
FTP基于C/S模式,F(xiàn)TP客戶端與服務(wù)器端有兩種傳輸模式,分別是FTP主動模式、FTP被動模式, 主被動模式均是以FTP服務(wù)器端為參照。
FTP主動模式:客戶端從一個任意的端口N(N>1024)連接到FTP服務(wù)器的port 21命令端口,客 戶端開始監(jiān)聽端口N+1,并發(fā)送FTP命令“port N+1”到FTP服務(wù)器,F(xiàn)TP服務(wù)器以數(shù)據(jù)端口(20)連 接到客戶端指定的數(shù)據(jù)端口(N+1)。
FTP被動模式:客戶端從一個任意的端口N(N>1024)連接到FTP服務(wù)器的port 21命令端口,客 戶端開始監(jiān)聽端口N+1,客戶端提交 PASV命令,服務(wù)器會開啟一個任意的端口(P >1024),并 發(fā)送PORT P命令給客戶端??蛻舳税l(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來傳送數(shù)據(jù)。
企業(yè)實際環(huán)境中,如果FTP客戶端與FTP服務(wù)端均開放防火墻,F(xiàn)TP需以主動模式工作,這樣只需 要在FTP服務(wù)器端防火墻規(guī)則中,開放20、21端口即可。 ?
四、Vsftp 客戶端
FTP服務(wù)是Client/Server(簡稱C/S)模式,基于FTP協(xié)議實現(xiàn)FTP文件對外共享及傳輸?shù)能浖Q之 為FTP服務(wù)器源端,客戶端程序基于FTP協(xié)議,則稱之為FTP客戶端,F(xiàn)TP客戶端可以向FTP服務(wù)器 上傳、下載文件。
目前主流的FTP服務(wù)器端軟件包括:Vsftpd、ProFTPD、PureFTPd、Wuftpd、Server-U FTP、 FileZilla Server等軟件,其中Unix/Linux使用較為廣泛的FTP服務(wù)器端軟件為Vsftpd 。 ?
下載工具:FlashGet、Wget 等,包括大多數(shù)網(wǎng)頁瀏覽器程序,都支持通過 FTP 協(xié)議下載文件,但因不具備 FTP 上傳管理功能,通常不稱為 FTP 客戶端工具。
五、FTP狀態(tài)碼
1xx – 肯定的初步答復(fù) ,這些狀態(tài)代碼指示一項操作已經(jīng)成功開始,但客戶端希望在繼續(xù)操作新命令 前得到另一個答復(fù)。
110 重新啟動標(biāo)記答復(fù)。
120 服務(wù)已就緒,在 nnn 分鐘后開始。
125 數(shù)據(jù)連接已打開,正在開始傳輸。
150 文件狀態(tài)正常,準(zhǔn)備打開數(shù)據(jù)連接。
2xx – 肯定的完成答復(fù) 一項操作已經(jīng)成功完成客戶端可以執(zhí)行新命令。
200 命令確定。
202 未執(zhí)行命令,站點上的命令過多。
211 系統(tǒng)狀態(tài),或系統(tǒng)幫助答復(fù)。
212 目錄狀態(tài)。
213 文件狀態(tài)。
214 幫助消息。
215 NAME 系統(tǒng)類型,其中,NAME 是 Assigned Numbers 文檔中所列的正 式系統(tǒng)名稱。
220 服務(wù)就緒,可以執(zhí)行新用戶的請求。
221 服務(wù)關(guān)閉控制連接。如果適當(dāng),請注銷。
225 數(shù)據(jù)連接打開,沒有進(jìn)行中的傳輸。
226 關(guān)閉數(shù)據(jù)連接。請求的文件操作已成功(例如,傳輸文件或放棄文件)。
227 進(jìn)入被動模式 (h1,h2,h3,h4,p1,p2)。
230 用戶已登錄,繼續(xù)進(jìn)行。
250 請求的文件操作正確,已完成。
257 已創(chuàng)建“PATHNAME”。
3xx – 肯定的中間答復(fù) 該命令已成功,但服務(wù)器需要更多來自客戶端的信息以完成對請求的處理。
331 用戶名正確,需要密碼。
332 需要登錄帳戶。
350 請求的文件操作正在等待進(jìn)一步的信息。
4xx – 瞬態(tài)否定的完成答復(fù) 該命令不成功,但錯誤是暫時的。如果客戶端重試命令,可能會執(zhí)行成功。
421 服務(wù)不可用,正在關(guān)閉控制連接。如果服務(wù)確定它必須關(guān)閉,將向任何 命令發(fā)送這一應(yīng)答。
425 無法打開數(shù)據(jù)連接。
426 Connection closed; transfer aborted. 連接關(guān)閉;傳輸中止。
450 未執(zhí)行請求的文件操作。文件不可用(例如,文件繁忙)
451 請求的操作異常終止:正在處理本地錯誤。
452 未執(zhí)行請求的操作。系統(tǒng)存儲空間不夠。
5xx – 永久性否定的完成答復(fù) 該命令不成功,錯誤是永久性的。如果客戶端重試命令,將再次出現(xiàn)同樣的錯誤。
500 語法錯誤,命令無法識別。這可能包括諸如命令行太長之類的錯誤。
501 在參數(shù)中有語法錯誤。
502 未執(zhí)行命令。
503 錯誤的命令序列。504 未執(zhí)行該參數(shù)的命令。
530 未登錄。
532 存儲文件需要帳戶。
550 未執(zhí)行請求的操作。文件不可用(例如,未找到文件,沒有訪問權(quán)限)。
551 請求的操作異常終止:未知的頁面類型。
552 請求的文件操作異常終止:超出存儲分配(對于當(dāng)前目錄或數(shù)據(jù)集)。
553 未執(zhí)行請求的操作。不允許的文件名。
常見的 FTP 狀態(tài)代碼及其原因
150 – FTP 使用兩個端口:21 用于發(fā)送命令,20 用于發(fā)送數(shù)據(jù)。狀態(tài)代 碼 150 表示服務(wù)器準(zhǔn)備在端口 20 上打開新連接,發(fā)送一些數(shù)據(jù)。
226 – 命令在端口 20 上打開數(shù)據(jù)連接以執(zhí)行操作,如傳輸文件。該操作 成功完成,數(shù)據(jù)連接已關(guān)閉。
230 – 客戶端發(fā)送正確的密碼后,顯示該狀態(tài)代碼。它表示用戶已成功登 錄。
331 – 客戶端發(fā)送用戶名后,顯示該狀態(tài)代碼。無論所提供的用戶名是否 為系統(tǒng)中的有效帳戶,都將顯示該狀態(tài)代碼。
426 – 命令打開數(shù)據(jù)連接以執(zhí)行操作,但該操作已被取消,數(shù)據(jù)連接已關(guān) 閉。
530 – 該狀態(tài)代碼表示用戶無法登錄,因為用戶名和密碼組合無效。如果 使用某個用戶帳戶登錄,可能鍵入錯誤的用戶名或密碼,也可能選擇只允許 匿名訪問。如果使用匿名帳戶登錄,IIS 的配置可能拒絕匿名訪問。
550 – 命令未被執(zhí)行,因為指定的文件不可用。例如,要 GET 的文件并 不存在,或試圖將文件 PUT 到您沒有寫入權(quán)限的目錄 。
六、Vsftp 的登陸類型 ?
VSFTP提供了系統(tǒng)用戶、匿名用戶、和虛擬用戶三種不同的登陸方式。所有的虛擬用戶會映射成一個系 統(tǒng)用戶,訪問時的文件目錄是為此系統(tǒng)用戶的家目錄;匿名用戶也是虛擬用戶,映射的系統(tǒng)用戶為ftp, 詳細(xì)信息可以通過man vsftpd.conf查看 。
匿名開放模式:是一種最不安全的認(rèn)證模式,任何人都可以無需密碼驗證而直接登錄 到 FTP 服務(wù)器。
本地用戶模式:是通過 Linux 系統(tǒng)本地的賬戶密碼信息進(jìn)行認(rèn)證的模式,相較于匿名 開放模式更安全,而且配置起來也很簡單。但是如果被黑客破解了賬戶的信息,就可 以暢通無阻地登錄 FTP 服務(wù)器,從而完全控制整臺服務(wù)器。
虛擬用戶模式:是這三種模式中最安全的一種認(rèn)證模式,它需要為 FTP 服務(wù)單獨 建立用戶數(shù)據(jù)庫文件,虛擬出用來進(jìn)行口令驗證的賬戶信息,而這些賬戶信息在 服務(wù)器系統(tǒng)中實際上是不存在的,僅供 FTP 服務(wù)程序進(jìn)行認(rèn)證使用。這樣,即使 黑客破解了賬戶信息也無法登錄服務(wù)器,從而有效降低了破壞范圍和影響。??