如何設定IIS FTP的設定主動模式還是被動模式-阿里云

1,939 阅读4分钟

在win 2003 中配置被動模式

被動模式 FTP 串連 是有時稱為到 " 伺服器管理 ", 因為與之一瞬態連接埠用作資料連線的伺服器端連接埠伺服器響應用戶端發出 pasv 命令後,。 由用戶端, 資料連線命令發出後伺服器串連到客戶立即使用連接埠上面控制串連的用戶端連接埠。
與連接埠範圍 1024 - 65535 內預設模式 Passive - IIS FTP 中隨機播放到響應。 要進一步限制這些巨大連接埠範圍, 系統管理員可配置命名PassivePortRange 中繼資料庫屬性關鍵字, 此屬性關鍵字僅存在於 IIS 6.0, for IIS 5.0 在 Windows 2000, 系統管理員需要安裝 Service Pack 4, 在系統註冊表中 PassivePortRange 項中添加。
更改 PassivePortRange for IIS, 執行過程之一下面部分中所述。
用於 Windows Server 2003
要啟用直接編輯中繼資料庫)
1 . 開啟 IIS Microsoft 管理主控台 (MMC)。
2 . 右擊本機電腦節點。
3 . 選擇 屬性
4 請確保 啟用直接編輯中繼資料庫 複選框。
通過 ADSUTIL 指令碼配置 PassivePortRange b)
1 . 單擊 開始 、 運行 , 鍵入 cmd, 和然後 確定
2 . 鍵入 cd Inetpub\AdminScripts, 然後按 Enter。
3 . 鍵入以下命令從命令提示字元。
CSCRIPT.exe C:\Inetpub\AdminScripts\adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5515"
4 重新啟動 FTP 服務。
通過 ADSUTIL 指令碼配置時您會看到以下輸出:
Microsoft (R) Windows Script Host 版本 5.6
著作權 (C) Microsoft Corporation 1996 - 2001。 著作權所有,並保留一切權利。.
PassivePortRange (STRING) " 5500-5515 ":
注意:如果開了系統內建的防火牆,必須在例外裡添加以上連接埠

什麼是主動,什麼是被動,為什麼首選被動

FTP 分為兩類: 主動FTP(Port FTP),也就是一般的FTP﹔被動FTP(Port FTP)

主動FTP

主動方式的FTP是這樣的:用戶端從一個任意的非特權連接埠N(N>1024)串連到FTP伺服器的命令連接埠,也就是21連接埠。然後用戶端開始連接埠N+1,並發送FTP命令“port N+1”到FTP伺服器。接著伺服器會從它自己的資料連接埠(20)串連到用戶端指定的資料連接埠(N+1)。

針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式FTP:

  1. 任何連接埠到FTP伺服器的21連接埠 (用戶端初始化的串連 S<-C)\
  2. FTP伺服器的21連接埠到大於1024的連接埠(伺服器響應用戶端的控制連接埠 S->C)\
  3. FTP伺服器的20連接埠到大於1024的連接埠(伺服器端初始化資料連線到用戶端的資料連接埠 S->C)\
  4. 大於1024連接埠到FTP伺服器的20連接埠(用戶端發送ACK響應到伺服器的資料連接埠 S<-C)
    主動方式FTP的主要問題實際上在於用戶端。FTP的用戶端並沒有實際建立一個到伺服器資料連接埠的串連,它只是簡單的告訴伺服器自己****的連接埠號碼,伺服器再回來串連用戶端這個指定的連接埠。對於用戶端的防火牆來說,這是從外部系統建立到內部用戶端的串連,這是通常會被阻塞的。

防火牆設定的例子
建置一個防火牆下的FTP server,使用主動FTP(Port FTP) mode:預設的FTP port:21 以及FTP data port:20
執行以下兩行指令,只允許port 21 以及port 20 開放,其它關閉。 iptables -A INPUT -p tcp -m multiport –dport 21,20 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset

FTP軟體本身的設定

以vsFTP為例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下兩行
listen_port=21
ftp_data_port=20

設定錯會出現的情況
FTP client(如cuteFTP)的聯機方式不能夠選擇passive mode,否則無法建立資料的聯機。也就是讀者可以連上FTP server,但是執行ls、get 等等的指令時,便無法運作。

被動FTP

為瞭解決伺服器發起到客戶的串連的問題,人們開發了一種不同的FTP串連方式。這就是所謂的被動方式,或者叫做PASV,當用戶端通知伺服器它處於被動模式時才啟用。

在被動方式FTP中,命令串連和資料連線都由用戶端,這樣就可以解決從伺服器到用戶端的資料連接埠的入方向串連被防火牆過濾掉的問題。當開啟一個 FTP串連時,用戶端開啟兩個任意的非特權本地連接埠(N > 1024和N+1)。第一個連接埠串連伺服器的21連接埠,但與主動方式的FTP不同,用戶端不會提交PORT命令並允許伺服器來回連它的資料連接埠,而是提交 PASV命令。這樣做的結果是伺服器會開啟一個任意的非特權連接埠(P > 1024),並發送PORT P命令給用戶端。然後用戶端發起從本地連接埠N+1到伺服器的連接埠P的串連用來傳送資料。

對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的FTP:

  1. 從任何連接埠到伺服器的21連接埠 (用戶端初始化的串連 S<-C)\
  2. 伺服器的21連接埠到任何大於1024的連接埠 (伺服器響應到用戶端的控制連接埠的串連 S->C)\
  3. 從任何連接埠到伺服器的大於1024連接埠 (入;用戶端初始化資料連線到伺服器指定的任意連接埠 S<-C)\
  4. 伺服器的大於1024連接埠到遠端大於1024的連接埠(出;伺服器發送ACK響應和資料到用戶端的資料連接埠 S->C)

防火牆設定的例子
建置一個防火牆下的FTP server,使用被動FTP(Port FTP) mode:FTP port:21 以及FTP data port 從9981 到9986。
執行以下兩行指令,只允許port 21 以及port 9981-9990 開放,其它關閉。
iptables -A INPUT -p tcp -m multiport –dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT
iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset

FTP軟體本身的設定
以vsFTP為例子. 修改/etc/vsFTPd/vsFTPd.conf
新增底下四行
listen_port=21
pasv_enable=YES
pasv_min_port=9981
pasv_max_port=9986

設定錯會出現的情況
這個例子中,FTP client(如cuteFTP)的聯機方式必須選擇passive mode,否則無法建立資料的聯機。也就是讀者可以連上FTP server,但是執行ls,get 等等的指令時,便無法運作。

相关文章:FTP錯誤詳解及解決方案