1. 程式人生 > 實用技巧 >FTP伺服器的安全設定

FTP伺服器的安全設定

一:FTP服務的簡介

FTP協議就是檔案傳輸控制協議。它可以使檔案通過網路從一臺主機傳送到同一網路的另一臺主機上,而不受計算機型別和作業系統型別的限制。無論是PC機、伺服器、大型機,還是DOS作業系統、Windows作業系統、Linux作業系統,只要雙方都支援FTP協議,就可以方便地傳送檔案。

二:FTP的工作原理

FTP服務的具體工作過程如下。

① 當FTP客戶端發出請求時,系統將動態分配一個埠(如1032)。

② 若FTP伺服器在埠21偵聽到該請求,則在FTP客戶端的埠1032和FTP伺服器的埠21之間建立起一個FTP會話連線。

③ 當需要傳輸資料時,FTP客戶端再動態開啟一個連線到FTP伺服器的埠20的第2個埠(如1033),這樣就可在這兩個埠之間進行資料的傳輸。當資料傳輸完畢後,這兩個埠會自動關閉。

④ 當FTP客戶端斷開與FTP伺服器的連線時,客戶端上動態分配的埠將自動釋放掉。

image

三:主動模式和被動模式

在主動模式中,FTP客戶端隨機開啟一個大於1024的埠X向伺服器的21號埠發起控制連線請求,然後開放X+1號埠進行監聽;FTP伺服器接受請求並建立控制連線會話。如果客戶端在控制會話中傳送資料連線請求,那麼伺服器在接收到命令後,會用其本地的FTP資料埠(通常是20)來連線客戶端指定的埠X+1進行資料傳輸 。

被動模式的控制連線和資料連線都是由FTP客戶端發起的。首先FTP客戶端隨機開啟一個大於1024的埠X向伺服器的21埠發起連線,同時會開啟X+1埠。然後向伺服器傳送PASV命令,通知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024的埠Y進行監聽,然後用PORT Y命令通知客戶端,自己的資料埠是Y。客戶端收到命令後,會通過X+1號埠連線伺服器的埠Y,然後在兩個埠之間進行資料傳輸。這樣就能使防火牆知道用於資料連線的埠號,而使資料連線得以建立。

image

四:配置

預備知識:

安裝vsftpd服務:

rpm -ivh vsftpd-2.0.5-16.el5.i386.rpm

修改許可權使之支援匿名賬號上傳:

chmod o+wt /var/ftp/pub/

修改檔案/etc/vsftpd/vsftpd.conf

image

image

image

image

image

image

image

image

設定拒絕服務***:

image

image

image

第一部分:建立基於本地使用者的vsftpd服務

1.匿名FTP

訪問匿名FTP伺服器時不需要密碼,只要使用使用者名稱“ftp”或“anonymous”即可通過驗證。當需要提供公開訪問的檔案下載資源,或者讓使用者上傳一些無需保密的資料資料時,可以選擇搭建匿名FTP伺服器。搭建的步驟如下所示:

1>.調整匿名上傳目錄許可權。

在RHEL5系統中,匿名使用者對應的系統帳戶為ftp,其宿主目錄為“/var/ftp”,該目錄也就是匿名使用者訪問vsftpd服務時所在的根目錄(可通過anon_root配置項更改)。

clip_image002

說明:將其中pub子目錄的屬主修改為ftp,並保留其可寫許可權,可提供給匿名使用者上傳檔案使用。我們給/var/ftp/建立一個檔案到/var/ftp/目錄下,以便稍後的測試。

2>.修改vsftpd.conf配置檔案,開放匿名使用者訪問、上傳許可。

clip_image004

說明:如果希望匿名使用者在上傳目錄中能夠進行覆蓋、刪除、重新命名檔案等寫入操作,還可以新增“anon_other_write_enable=YES”的配置項。此項配置可能帶來安全性問題,所以應謹慎使用。

注意:由於匿名FTP根目錄“/var/ftp/”的預設許可權為755,因此不要將該目錄的屬主更改為ftp,否則匿名訪問時可能會報錯“500 OOPS:vsftpd:refusing to run with writable anonymous root”,此錯誤會導致訪問失敗。

3>.重新啟動vsftpd服務

clip_image006

4>.此時,我們到客戶機上訪問FTP伺服器,測試下載及上傳功能。

clip_image008

可以看到,使用者使用匿名使用者FTP,不但可登入,並且可以下載FTP伺服器上的資源。

2.本地使用者FTP

Vsftpd可以直接使用Linux系統的本地使用者作為FTP使用者,提供基於使用者名稱/密碼的登入驗證。使用本地使用者登入FTP伺服器後,預設將位於自己的宿主目錄中,且在宿主目錄中擁有讀寫許可權,並允許切換到其他目錄。使用chroot_local_user配置項可以將本地使用者禁錮在宿主目錄中(不允許切換到其他目錄),使用local_root配置項可以將本地使用者的FTP根目錄設定為同一個資料夾。

下面我們配置一個基於本地使用者並進行使用者限制的FTP伺服器步驟如下:

1>.新增FTP測試使用者(也就是本地使用者)。新建一個檔案file1以便測試。

clip_image010

2>.修改vsftpd.conf配置檔案,開放本地使用者。

clip_image012

說明:配置“chroot_local_user=YES”項,可以有效提高FTP伺服器的安全性。否則,預設將允許使用者切換到伺服器中的“/var/”、“/etc/”、“/boot/”等宿主目錄以外的資料夾,可能帶來安風險。如果啟用“local_root=/var/ftproot”的配置選項時,本地使用者登入該FTP伺服器後,根目錄將更改為指定的資料夾。該選項適用於FTP根目錄需要保持固定的情況。如果希望vsftpd服務 只對特定的本地使用者開放,可以使用userlist_enable、userlist_deny配置項並結合使用者列表檔案“/etc/vsftpd/user_list”實現,此處不做演示。

3>.重新啟動vsftpd服務。

clip_image014

4>.在客戶端訪問FTP伺服器,測試下載及上傳功能。

clip_image016

可以看到使用者登入和下載伺服器上的資源都沒有問題

第二部分:建立基於虛擬使用者的vsftpd服務

1. 建立虛擬使用者的使用者名稱/密碼資料庫

Vsftpd服務的虛擬使用者資料庫是使用Berkeley DB格式的資料檔案。建立該資料庫檔案需要用到db_load命令工具,從RHEL5光碟中安裝db4-utils-4.3.29-9.fc6.i386.rpm軟體包後可獲得該工具。

首先建立文字格式的使用者名稱/密碼列表檔案,奇數行為使用者名稱,偶數行為上一行中使用者所對應的密碼。

clip_image018

說明:此處建立了兩個密碼都為123.com的虛擬使用者zpp001和zpp002.

然後用db_load工具將列表檔案轉化為DB資料庫檔案。

clip_image020

說明:在db_load命令中,“-f”選項用於指定使用者名稱/密碼列表檔案,“-T”選項允許非Berkeley DB的應用程式使用從文字格式轉換的DB資料檔案,“-t hash”選項指定讀取資料檔案的基本方法。將檔案vusers.db的許可權降底為600是為了安全性考慮。關於db_load命令的詳細說明可參閱“/usr/share/doc/db4-utils-4.3.29/utility/db_load.html”檔案。

2. 建立FTP訪問的根目錄及虛擬使用者對應的系統帳號

clip_image022

說明:Vsftpd虛擬使用者需要有一個對應的系統使用者帳號(該帳號不需要設定密碼及登入Shell),該使用者帳號的宿主目錄作為所有虛擬使用者登入後的共同FTP根目錄。

3. 建立PAM認證檔案

clip_image024

說明:PAM配置檔案主要用於為程式提供使用者認證控制,vsftpd服務使用的預設PAM配置檔案為“/etc/pam.d/vsftpd”,s可以參考該檔案的格式建立新的PAM配置檔案,用於虛擬使用者的認證控制。配置時請注意將db選項指定為先前建立的虛擬使用者資料檔案vusers(省略.db副檔名)

4. 修改vsftpd.conf配置檔案,新增虛擬使用者支援

在vsftpd.conf配置檔案中,新增guest_enable、guest_userusername配置項,將訪問FTP服務的所有虛擬使用者對應到同一系統使用者帳號virtual,並修改pam_service_name配置項,指向上一步建立的PAM配置檔案“/etc/pam.d/vsftpd.vu”。

clip_image026

說明:在vsftpd服務中,虛擬使用者賬戶預設作為匿名使用者處理以降低許可權,因此對應的許可權設定通常使用以anon_開頭的配置項,

5. 為不同的虛擬使用者建立獨立的配置檔案

通過前面的四步,實際上已經可以重啟vsftpd並提供服務了,使用虛擬使用者帳號可以登入FTP伺服器並下載檔案。此步驟介紹如何為個別虛擬使用者設定不同的訪問許可權。

假如現在有這樣的要求:zpp001使用者只有瀏覽和下載的許可權,而zpp002可以瀏覽、下載、改名、刪除檔案、建立和刪除目錄的許可權,可以按如下的步驟實現:

1>.修改vsftpd.conf主配置檔案,新增使用者配置目錄支援。

clip_image028

說明:新增此行配置,指定使用者配置目錄的位置。

2>.為使用者zpp001和zpp002建立獨立的配置目錄及檔案。

clip_image030

說明:如果需要禁用或者允許一部分虛擬使用者帳號,同樣可以使用“/etc/vsftpd/user_list”列表檔案。需要注意的是,在“/etc/vsftpd/ftpusers”檔案中加入虛擬使用者名稱,並不能禁用對應的系統帳號。

6. 重新啟動vsftpd服務

clip_image032

7.使用虛擬使用者帳戶訪問FTP服務

clip_image034

說明:現在可以看到,虛擬使用者zpp001只有瀏覽和下載的許可權,並沒有建立目錄等其它許可權。

clip_image036

說明:可以看到,使用者zpp002不但有瀏覽和下載許可權,同時也具備建立目錄等

轉載於:https://blog.51cto.com/liuguirong/992850