天天看點

Windows 2003 中利用IIS元件架設PASV模式FTP服務

FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)

     在主動模式下,FTP用戶端随機開啟一個大于1024的端口N向伺服器的21号端口發起連接配接,然後開放N+1号端口進行監聽,并向伺服器發出PORT N+1指令。伺服器接收到指令後,會用其本地的FTP資料端口(通常是20)來連接配接用戶端指定的端口N+1,進行資料傳輸。

     在被動模式下,FTP庫戶端随機開啟一個大于1024的端口N向伺服器的21号端口發起連接配接,同時會開啟N+1号端口。然後向伺服器發送PASV指令,通知伺服器自己處于被動模式。伺服器收到指令後,會開放一個大于1024的端口P進行監聽,然後用PORT P指令通知用戶端,自己的資料端口是P。用戶端收到指令後,會通過N+1号端口連接配接伺服器的端口P,然後在兩個端口之間進行資料傳輸。

    總的來說,主動模式的FTP是指伺服器主動連接配接用戶端的資料端口,被動模式的FTP是指伺服器被動地等待用戶端連接配接自己的資料端口。

    被動模式的FTP通常用在處于防火牆之後的FTP客戶通路外界FTp伺服器的情況,因為在這種情況下,防火牆通常配置為不允許外界通路防火牆之後主機,而隻允許由防火牆之後的主機發起的連接配接請求通過。是以,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。

  很多人誤認為利用WINDOWS元件IIS來建構的FTP伺服器沒有實用價值,隻能做一些測試和學習。主要是FTP服務的PORT和PASV兩種連接配接模式下防火牆難以設定。對于PORT模式,用戶端無法在此環境下運作,因為 FTP 服務必須向 FTP 用戶端發出新的連接配接請求,防火牆會将這些連接配接檢測為未經請求的連接配接嘗試,并是以而将它們斷開。防火牆管理者可能也不希望使用PASV模式 FTP 伺服器,因為該 FTP 服務可以打開任何短暫的端口号。如果防火牆配置允許未經請求的連接配接完全通路所有的短暫端口,則可能會是不安全的。

從實用的角度來看,建立一個預設短暫端口範圍有限制的PASV模式 FTP 服務方案應該是較好的選擇。下面通過一個執行個體,說明如何在Windows 2003 中利用IIS元件架設PASV模式FTP服務。

1 建立一個PORT 模式的FTP 服務

1.1安裝“檔案傳輸協定(FTP)服務”元件

安裝步驟:

控制台---> 添加删除程式---> 添加删除windows 元件---> 應用程式伺服器--->I nternet 資訊服務(IIS)---> 檔案傳輸協定(FTP) 服務

将“ 檔案傳輸協定( FTP) 服務”複選框鈎上,插入windows 2003安裝盤或選擇windows 2003安裝路徑,直至安裝結束。

1.2FTP主目錄及使用者權限的配置

主目錄:D:/soft/ftpup

擁有讀寫權限而不允許其它使用者通路的使用者:

ww1使用者擁有 ww1目錄的讀寫權限,位置在:D:/soft/ftpup/LocalUser/ww1

XX1使用者擁有 XX1目錄的讀寫權限,位置在:D:/soft/ftpup/LocalUser/XX1

允許匿名使用者隻讀通路:

Everyone 擁有 public目錄的隻讀權限,位置在:D:/soft/ftpup/LocalUser/public

建立 ww1和xx1使用者并設定密碼。

建立相應的目錄,并設定對應的權限。

1.3建立FTP站點

通過“ 控制台 ---> 管理工具 ---> Internet 資訊服務(IIS) 管理器 ---> Internet 資訊服務---> 本地計算機---> FTP 站點”标簽,右擊“ FTP 站點”--->建立--->FTP 站點,進入FTP站點建立向導:站點描述--->IP位址和端口設定--->隔離使用者--->FTP站點主目錄(D:/soft/ftpup ),直到向導結束。

右擊剛建立的FTP站點,在“安全帳戶”頁籤上選中“允許匿名使用者連接配接”。至此,一個PORT模式的FTP站點架設完成。

可以關閉防火牆在用戶端進行測試是否符合要求。

2 将FTP 站點設定成PASV 模式

2.1啟用直接編輯中繼資料庫

打開 IIS Microsoft 管理控制台 (MMC): 控制台 ---> 管理工具---> Internet 資訊服務(IIS) 管理器 ---> Internet 資訊服務---> 本地計算機

右擊本地計算機節點,選擇 屬性,選擇 啟用直接編輯中繼資料庫複選框。

2.2 修改端口号  方法 1  通過 ADSUTIL 腳本配置 PassivePortRange

運作cmd.exe程式進入指令行模式,并輸入以下指令:

C:/Inetpub/AdminScripts/adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5550"

這樣就将FTP伺服器上TCP 預設短暫端口範圍限制在5500-5550範圍内,如果同時連接配接數量較多,可适當進行調整。

用以下指令檢視PassivePortRange:

C:/Inetpub/AdminScripts/adsutil.vbs get /MSFTPSVC/PassivePortRange  方法 2  通過修改配置檔案 打開下面這個檔案 :    1. C:/WINDOWS/system32/inetsrv/MetaBase.xml    搜尋 MaxConnections 這個字段  在 MaxConnections 下面新加一行被動模式的配置資訊,修改後的配置檔案為                                   LogType="1"               MSDOSDirOutput="TRUE"               MaxClientsMessage=" "               MaxConnections="100000"               PassivePortRange="5500-5550"  

3.windows 2003 中防火牆的設定

3.1打開FTP控制端口TCP 21(如果更改端口号,這裡要做相應的更改)

在指令行輸入:

NETSH FIREWALL ADD PORTOPENING TCP 21 FTPPort21

3.2打開PassivePortRange 5500-5550的TCP端口

建立以下批處理檔案并運作(例如:ftpport.bat):

ECHO OPENING FIREWALL PORTS 5500-5550

FOR /L %%I IN (5500,1,5550) DO NETSH FIREWALL ADD PORTOPENING TCP %%I FTPPort%%I

iisreset /restart

ECHO FINISHED

Pause

至此,整個服務架設完成,可在啟用防火牆的情況下進行測試。

繼續閱讀