FTP作為一個(gè)常見的應(yīng)用層協(xié)議,對(duì)于技術(shù)人員來講,肯定都不陌生,使用TCP端口21建立FTP會(huì)話,并通過TCP端口20進(jìn)行數(shù)據(jù)的傳輸。
FTP有兩種模式,一種是主動(dòng)模式,客戶端使用大于1024的端口N發(fā)送請(qǐng)求至服務(wù)器的21端口,服務(wù)器收到請(qǐng)求之后,發(fā)送ACK至客戶端的端口N,完成FTP會(huì)話的建立,然后服務(wù)器使用20端口發(fā)送數(shù)據(jù)連接請(qǐng)求至客戶端端口N,客戶端在收到服務(wù)器的連接請(qǐng)求之后,發(fā)送ACK至服務(wù)器的20端口,完成會(huì)話建立,之后開始進(jìn)行數(shù)據(jù)傳輸。
另一種是被動(dòng)模式,首先還是需要建立FTP的會(huì)話,與主動(dòng)模式不同的是,被動(dòng)模式下,客戶端會(huì)使用端口N發(fā)送數(shù)據(jù)連接請(qǐng)求至服務(wù)器的隨機(jī)M端口(M大于1023,小于65535),服務(wù)器收到客戶端的請(qǐng)求之后,發(fā)送ACK至客戶端的端口N,完成會(huì)話建立,之后開始進(jìn)行數(shù)據(jù)傳輸。
圖1 查看系統(tǒng)版本
技術(shù)人員通常需要根據(jù)公司的不同需求搭建公司的FTP服務(wù)器。目前主流的FTP服務(wù)器主要有Windows下的IIS、Serv-U等,Linux下 的ProFTP、VSFTP等,一般考慮到Windows系統(tǒng)的安全性以及穩(wěn)定性都不如Linux系統(tǒng)高,并且Windows下的FTP軟件功能比較簡(jiǎn)單,一般不支持FTP的高級(jí)配置,所以我們一般會(huì)選用Linux作為我們的FTP服務(wù)器,此處我們使用VSFTPD作為FTP軟件。
此處我們的要求是,搭建一臺(tái)FTP服務(wù)器,要求服務(wù)器穩(wěn)定安全,同時(shí)可以配置多個(gè)賬號(hào),賬號(hào)權(quán)限可以進(jìn)行嚴(yán)格控制,需要具有三種類型的賬號(hào),一種是公司所有員工,只可以下載公司FTP服務(wù)器上的文件,另一種是管理,只有上傳權(quán)限,最后一種是管理員賬號(hào),擁有所有權(quán)限。下面介紹實(shí)驗(yàn)過程。
要求擁有三種權(quán)限,只能有下載權(quán)限的賬號(hào)可能存在多個(gè),所以我們可以使用虛擬賬號(hào)來進(jìn)行配置,新建一個(gè)只有下載權(quán)限的虛擬賬號(hào)ftp,新建一個(gè)只有上傳權(quán)限的虛擬賬號(hào)upload,新建一個(gè)管理員賬號(hào)admin,擁有所有權(quán)限。
準(zhǔn)備一臺(tái)服務(wù)器,并安裝操作系統(tǒng)RHEL5.5,操作系統(tǒng)的安裝,此處不做介紹,可以自行查找資料進(jìn)行安裝,操作系統(tǒng)安裝完成之后,可以通過命令lsb_release -a查看系統(tǒng)版本(如圖1)。
VSFTPD服務(wù)的安裝,可以在操作系統(tǒng)安裝的過程中,一起進(jìn)行安裝,也可以在操作系統(tǒng)安裝完成之后,在通過yum進(jìn)行安裝或者可以手動(dòng)安裝rpm、tar包等完成,可以通過命令rpm -qa vsftpd來查看系統(tǒng)是否已安裝VSFTPD服務(wù)。
[r o o t@v s f t p vsftpd]#rpm –qa vsftpd
vsftpd-2.0.5-16.e15_4.1
如上所示,此處在操作系統(tǒng)的安裝過程中,已經(jīng)選擇一起安裝VSFTPD,所以此處不再詳解VSFTPD的安裝,安裝完成之后,可以通過命令service vsftpd status來查看VSFTPD的運(yùn)行狀態(tài)。
Linux環(huán)境下,無(wú)論配置任何服務(wù)都要養(yǎng)成先做備份的好習(xí)慣,如果配置出現(xiàn)問題,可以通過備份的配置文件還原。
[root@vsftp vsftpd]#cp vsftpd.conf vsftpd.conf.old
a.置文件,關(guān)閉匿名登錄,啟用虛擬用戶。
[root@vsftp vsftpd]#vi/etc/vsftpd/vsftpd.conf
為了保證FTP服務(wù)器的安全性,我們關(guān)閉匿名登錄,在配置文件中找到anonymous_enable的配置,將其修改為NO,即可關(guān)閉匿名登錄。
anonymous_enable=NO
在配置文件的最后面添加下面幾行內(nèi)容,意思為允許虛擬用戶登錄,匿名用戶對(duì)應(yīng)的為ftp這個(gè)賬號(hào),虛擬用戶登錄的配置文件目錄為 /etc/vsftpd/users/,這個(gè)目錄下面存放的是不同用戶的配置文件:
注:此處第一行中的pam_service_name的值需要與(d)認(rèn)證文件名稱相同,否則認(rèn)證不成功。此處最后一行配置的是虛擬用戶的目錄,需要與(f)置的目錄相同。
b.建立虛擬用戶的賬號(hào)文件
建立虛擬用戶ftp所對(duì)應(yīng)的實(shí)際登錄賬號(hào):
其中奇數(shù)行為用戶名,偶數(shù)行為對(duì)應(yīng)的密碼。
c.使用建立的賬號(hào)密碼文件生成數(shù)據(jù)庫(kù)文件,并修改其權(quán)限。
使用vm_user.txt生成vm_user.db文件
d.修改FTP的認(rèn)證文件為剛生成的數(shù)據(jù)庫(kù)文件。
后面的文件名稱必須與前面所創(chuàng)建的文件名稱相同,否則認(rèn)證失敗。
e.建立虛擬用戶FTP,不允許登錄操作系統(tǒng),設(shè)置其home路徑,并修改home路徑的訪問權(quán)限。
f.配置虛擬用戶的賬號(hào)目錄,需與(a)中配置保持一致,并創(chuàng)建賬號(hào)的配置文件,此處以ws6l為例進(jìn)行配置。
配置ws6l賬號(hào)的目錄,注意此處的目錄只是存放配置文件的,與用戶登錄FTP之后訪問到的目錄無(wú)關(guān)。
至此第一個(gè)虛擬賬號(hào)創(chuàng)建成功,驗(yàn)證此處省略,根據(jù)需要可以按照上面的步驟,分別創(chuàng)建ws8l等只有下載權(quán)限的賬號(hào)。
h.創(chuàng)建只有上傳權(quán)限的賬號(hào)upload,擁有所有權(quán)限的admin賬號(hào)。
在vm_user.txt文件中添加這兩個(gè)賬號(hào):
重新生成數(shù)據(jù)庫(kù)文件,注意只要是修改了vm_user.txt這個(gè)文件,必須重新生成數(shù)據(jù)庫(kù)文件,否則認(rèn)證不成功。
因?yàn)閡pload賬號(hào)需要向所有賬號(hào)的文件夾上傳文件,admin賬號(hào)需要管理所有用戶的目錄,因此兩個(gè)賬號(hào)都需要看到所有用戶的目錄,所以不需要給他們重新建立ftp的目錄,直接指定為/var/ftp即可,至此所有配置完成。
i.所有配置都完成之后,分別使用ws6l,upload,admin登陸ftp進(jìn)行測(cè)試,測(cè)試過程不再詳述。
FTP服務(wù)目前仍然是一個(gè)企業(yè)內(nèi)部重要的服務(wù)之一,企業(yè)內(nèi)部可以通過搭建FTP服務(wù)器來完成文件共享,本文通過講解使用VSFTP來搭建公司的FTP服務(wù)器,做到用戶使用與管理員管理徹底分離,并通過虛擬用戶的配置來充分保證系統(tǒng)的安全,可以滿足公司的絕大部分需求。