適用于:Windows 7,Windows Server 2003,Windows Server 2008,Windows Server 2008 R2,Windows Vista
由于FTP的工作方式,在防火墻后面的服務器上使用文件傳輸協議(FTP)服務會產生一系列挑戰。標準模式FTP客戶端通過打開到TCP端口號21的“命令通道”連接來啟動到服務器的會話。客戶端通過向服務器發送PORT命令來請求文件傳輸。然后,服務器嘗試在TCP端口號20上啟動“數據通道”連接回客戶端。客戶端上運行的典型防火墻將來自服務器的此數據通道連接請求視為未經請求并丟棄數據包,從而導致文件傳輸到失敗。Windows Vista和Windows Server 2008中具有高級安全性的Windows防火墻支持有狀態FTP,允許它將端口20上的入站連接請求與來自客戶端的先前出站PORT命令進行匹配。然而,
為避免此問題,FTP還支持“被動”操作模式,其中客戶端啟動數據通道連接。客戶端不是使用PORT命令,而是在命令通道上發送PASV命令。服務器響應客戶端應連接的TCP端口號以建立數據通道。默認情況下,服務器使用臨時范圍(1025到5000)中的可用端口。為了更好地保護服務器,您可以限制FTP服務使用的端口范圍,然后創建一個防火墻規則,允許僅在允許的端口號上進行FTP通信。
本主題討論如何:
-
將FTP服務配置為僅使用有限數量的端口進行被動模式FTP
-
配置入站防火墻規則以允許僅在允許的端口上進行入站FTP連接
以下過程顯示在Internet Information Services(IIS)7.0版上配置FTP服務的步驟。如果您使用的是其他FTP服務,請參閱該產品的文檔以了解相應的步驟。配置對SSL的支持超出了本主題的范圍。有關更多信息,請參閱IIS文檔。
將FTP服務配置為僅使用有限數量的端口進行被動模式FTP
-
在IIS 7.0管理器的“?連接”窗格中,單擊服務器的頂級節點。
-
在詳細信息窗格中,雙擊“?FTP防火墻支持”。
-
輸入您希望FTP服務使用的端口號范圍。例如,
41000-41099
允許服務器同時支持100個被動模式數據連接。 -
輸入數據連接到達的防火墻的外部IPv4地址。
-
在“?操作”窗格中,單擊“?應用”以保存設置。
您還必須在FTP服務器上創建防火墻規則,以允許您在上一過程中配置的端口上的入站連接。雖然您可以創建一個按編號指定端口的規則,但更容易創建一個規則來打開FTP服務正在偵聽的任何端口。您可以按照上一過程中的步驟限制FTP正在偵聽的端口。
配置入站防火墻規則,以允許僅對FTP正在偵聽的端口進行入站FTP連接
-
打開管理員命令提示符。單擊開始,單擊所有程序,單擊附件,右鍵單擊命令提示符,然后單擊以管理員身份運行。
-
運行以下命令:
復制netsh advfirewall firewall add rule name=”FTP Service” action=allow service=ftpsvc protocol=TCP dir=in
-
最后,禁用有狀態FTP過濾,以便防火墻不會阻止任何FTP流量。
復制netsh advfirewall set global StatefulFTP disable
?
?
解決辦法:
禁用有狀態 FTP 篩選,以使防火墻不會阻止任何 FTP 通信
dos窗口下執行:netsh advfirewall set global StatefulFTP disable
?