在學習如何構(gòu)建FTP服務器之前,首先應對FTP的工作原理、服務器端軟件有一個基本的認識。
1.FTP服務器概述
FTP服務器默認使用TCP協(xié)議的20、21端口與客戶端進行通信。20端口用于建立數(shù)據(jù)連接,并傳輸文件數(shù)據(jù);21端口用于建立控制連接,并傳輸FTP控制命令。根據(jù)FTP服務器在建立數(shù)據(jù)連接過程中的主、被動關(guān)系,F(xiàn)TP數(shù)據(jù)連接分為主動模式和被動模式,兩者的含義及主要區(qū)別如下:
主動模式:服務器主動發(fā)起數(shù)據(jù)連接。首先由客戶端向服務端的21端口建立FTP控制連接,當需要傳輸數(shù)據(jù)時,客戶端以PORT命令告知服務器“我打開了某端口,你過來連接我”,于是服務器從20端口向客戶端的該端口發(fā)送請求并建立數(shù)據(jù)連接。
被動模式:服務器被動等待數(shù)據(jù)連接。如果客戶機所在網(wǎng)絡的防火墻禁止主動模式連接,通常會使用被動模式。首先由客戶端向服務端21端口建立FTP控制連接,當需要傳輸數(shù)據(jù)時,服務器以PASV命令告知客戶端“我打開了某個端口,你過來連接我”,于是客戶端向服務器的該端口(非20)發(fā)送請求并建立數(shù)據(jù)連接。同時,也給出一個指令來表達是否拒絕。
被動模式就是:當客戶端與服務器建立好數(shù)據(jù)連接以后,就可以根據(jù)從控制連接中發(fā)送的FTP命令上傳或下載文件了。在傳輸文件時,根據(jù)是否進行字符轉(zhuǎn)換,分為文本模式和二進制模式。
文本模式:又稱為ASCII(American Standard Code for Information Interchange,美國信息交換標準碼)模式,這種模式在傳輸文件時使用ASCII標準字符序列,一般只用于純文本文件的傳輸。
二進制模式:又稱為Binary模式,這種模式不會轉(zhuǎn)換文件中的字符序列,更適合傳輸程序、圖片等非純文本字符的文件。使用二進制模式比文本模式更有效率,大多數(shù)FTP客戶端工具可以根據(jù)文件類型自動選擇文件傳輸模式,而無需用戶手工指定。
2.FTP用戶類型
匿名用戶:anonymous 或 ftp,提供任意密碼(包括空密碼)都可以通過服務器的驗證,一般用于提供公共文件的下載。本地用戶:直接使用本機的系統(tǒng)用戶,賬號名稱、密碼等信息保存在 passwd、shadow 文件中。虛擬用戶: 使用獨立的賬號/密碼數(shù)據(jù)文件,將FTP賬戶與系統(tǒng)賬戶的關(guān)聯(lián)性降至最低,可以為系統(tǒng)提供更好的安全性。
3.FTP服務器軟件的種類
在Windows系統(tǒng)中,常見的FTP服務器軟件包括FileZilla Sener、Serv-U、IIS等;而在Linux系統(tǒng)中,vsftpd是目前在Linux/UNIX領(lǐng)域應用十分廣泛的一款FTP服務軟件。
Vsftpd服務的名稱來源于“Very Secure FTP Daemon”,該軟件針對安全性方面做了大量的設(shè)計。除了安全性以外,vsftpd在速度和穩(wěn)定性方面的表現(xiàn)也相當突出,大約可以支持15000個用戶并發(fā)連接。
4.FTP客戶端工具的種類
ftp命令程序:是最簡單的FTP客戶端工具,Windows和Linux都擁有ftp命令程序,可以連接到FTP服務器進行交互式的上傳、下載通信。
圖形化FTP客戶端工具:Windows中較常用的包括CuteFTP、FlashFXP、LeapFTP、Filezilla等,在圖形化的客戶端程序中,用戶通過鼠標和菜單即可訪問、管理FTP資源,而不需要掌握FTP交互命令,更易于使用。
下載工具:FlashGet、Wget等,包括大多數(shù)網(wǎng)頁瀏覽器程序,都支持通過FTP協(xié)議下載文件,但因不具備FTP上傳管理功能,通常不稱為FTP客戶端工具。
二、vsftpd的配置文件
以下我們將以系統(tǒng)中RPM方式安裝vsftpd為例來學習FTP服務器的構(gòu)建過程,例如:“rpm -ivh vsftpd-3.0.2-21.el7.x86_64.rpm(掛載光盤,在系統(tǒng)盤中的Packages目錄下安裝)”。
通過RPM方式安裝的vsftpd軟件包,將會自動添加名為vsftpd的系統(tǒng)服務,因此啟動、停止vsftpd服務非常方便。以下為相關(guān)配置文件:
服務名:vsftpd
主配置文件:/etc/vsftpd/vsftpd.conf
主程序:/usr/sbin/vsftpd
用戶控制列表文件:
1、/etc/vsftpd/ftpusers:此文件中列出的用戶將禁止登錄vsftpd服務器,不管該用戶是否在user_list文件中出現(xiàn),相當于黑名單一樣。默認已包括root、bin、daemon等用于系統(tǒng)運行的特殊用戶。(應為這些用戶太特殊,所以不讓登錄到vsftpd服務器,防止被人黑)
2、/etc/vsftpd/user_list:此文件中包含的用戶可能被禁止登錄,也可能被允許登錄,具體取決于主配置文件vsftpd.conf中的設(shè)置。當存在“userlist_enable=YES”的配置項時,user_list列表文件方可生效;若指定“userlist_deny=YES”,則僅禁止此列表中的用戶登錄;若指定“userlist_deny=NO”,則僅允許列表中的用戶登錄。
下面我們一起來了解一下主配置文件中常用到的配置項:
常用的全局配置項:
listen=YES:是否以獨立運行的方式監(jiān)聽服務
listen_address=192.168.4.1:設(shè)置監(jiān)聽的 IP 地址
listen_port=21:設(shè)置監(jiān)聽 FTP 服務的端口號
write_enable=YES:是否啟用寫入權(quán)限
download_enable=Y(jié)ES:是否允許下載文件
userlist_enable=YES:是否啟用user_list 列表文件
userlist_deny=YES:是否禁用
user_list 中的用戶max_clients=0:限制并發(fā)客戶端連接數(shù)
max_per_ip=0:限制同一 IP 地址的并發(fā)連接數(shù)
常用的匿名 FTP 配置項:
anonymous_enable=YES:啟用匿名訪問
anon_umask=022:匿名用戶所上傳文件的權(quán)限掩碼
anon_root=/var/ftp:匿名用戶的 FTP 根目錄
anon_upload_enable=YES:允許上傳文件
anon_mkdir_write_enable=YES:允許創(chuàng)建目錄
anon_other_write_enable=YES:開放其他寫入權(quán)
anon_max_rate=0:限制最大傳輸速率(字節(jié)/秒)
常用的本地用戶 FTP 配置項:
local_enable=YES:是否啟用本地系統(tǒng)用戶
local_umask=022:本地用戶所上傳文件的權(quán)限掩碼
local_root=/var/ftp:設(shè)置本地用戶的 FTP 根目錄
chroot_local_user=YES:是否將用戶禁錮在主目錄
local_max_rate=0:限制最大傳輸速率(字節(jié)/秒)
以上列出的都是搭建vsftpd服務器時最常用到的配置項,理解并掌握這些配置項的含義,將更有利于快速部署和優(yōu)化vsftpd服務器。
|
新聞熱點
疑難解答
圖片精選