共用方式為


在 IIS 7 中設定 FTP 防火牆 設定

羅伯特·麥克默里

相容性

版本 備註
IIS 7.5 FTP 7.5 服務隨附於 Windows 7 和 Windows Server 2008 R2 中的 IIS 7.5 功能。
IIS 7.0 FTP 7.0 和 FTP 7.5 服務是針對 IIS 7.0 隨附的頻外服務,需要從下列 URL 下載並安裝服務: https://www.iis.net/download/FTP

簡介

Microsoft 已建立已完全重寫 Windows Server® 2008 的新 FTP 服務。 此 FTP 服務包含許多新功能,可讓 Web 作者比之前更妥善地發佈內容,並提供 Web 系統管理員更多的安全性和部署選項。

本檔會逐步引導您設定新 FTP 伺服器的防火牆設定。

必要條件

必須安裝下列專案,才能完成本文中的程式:

  1. IIS 7 必須安裝在 Windows 2008 Server 上,而且必須安裝 網際網路資訊服務 (IIS) 管理員。

  2. 新的 FTP 服務。 您可以使用下列其中一個連結,從 https://www.iis.net/ 網站下載並安裝 FTP 服務:

    • FTP 7.5 for IIS 7 (x64)
    • FTP 7.5 for IIS 7 (x86)
  3. 您必須建立 FTP 發行的根資料夾:

    • 在建立資料夾 %SystemDrive%\inetpub\ftproot

    • 設定權限以允許匿名存取:

      • 開啟命令提示字元。

      • 輸入以下命令:

        ICACLS "%SystemDrive%\inetpub\ftproot" /Grant IUSR:R /T
        
      • 關閉命令提示字元。

重要事項:

  • 本逐步解說中列出的設定會指定 %SystemDrive%\inetpub\ftproot 為 FTP 月臺的路徑。 您不需要使用此路徑;不過,如果您變更網站的位置,您必須變更此逐步解說中所使用的網站相關路徑。

  • 設定 FTP 服務的防火牆設定之後,您必須設定防火牆軟體或硬體,以允許透過防火牆連線到 FTP 伺服器。

使用 FTP 月臺精靈建立具有匿名驗證的 FTP 網站

在本節中,您會建立新的 FTP 網站,以供匿名用戶開啟只讀存取。 若要這樣做,請使用下列步驟:

  1. 移至 IIS 7 管理員。 在 [連線 ions] 窗格中,按兩下樹狀結構中的 [月臺] 節點。

  2. 以滑鼠右鍵按兩下樹狀目錄中的 [月臺] 節點,然後按下 [新增 FTP 月臺],或按下 [動作] 窗格中的 [新增 FTP 月]。

    I I S 管理員的螢幕快照。[新增 F T P 網站] 會在 [連線 ions] 窗格的 [月臺] 操作功能表中反白顯示。

  3. 當 [新增 FTP 月臺精靈] 出現時:

    • 在 [FTP 網站名稱] 方塊中輸入 「我的新 FTP 網站」,然後流覽至%SystemDrive%\inetpub\ftproot您在 [必要條件] 區段中建立的資料夾。

      注意

      如果您選擇輸入內容資料夾的路徑,您可以在路徑中使用環境變數。

    • 按一下 [下一步] 。

      顯示網站資訊的 [新增 F T P 網站] 對話框的螢幕快照。

  4. 在精靈的下一個頁面上:

    • [IP 位址] 下拉式清單中選擇 FTP 網站的 IP 位址 ,或選擇接受預設選取 [所有未指派]。因為您將從遠端存取此 FTP 網站,因此您想要確定您不會限制本機伺服器的存取,並在 [IP 位址] 方塊中 輸入 「127.0.0.0.1」 來輸入電腦的本機回送 IP 位址

    • 您通常會在 [埠] 方塊中 輸入 FTP 網站的 TCP/IP 連接埠 。 針對此逐步解說,您將選擇接受預設埠 21。

    • 在本逐步解說中,您不會使用主機名,因此請確定 [ 虛擬主機 ] 方塊是空白的。

    • 確定 [ 憑證 ] 下拉式清單已設定為 [未選取],並 已選取 [允許 SSL ] 選項。

    • 按一下 [下一步] 。

      此螢幕快照顯示系結和 S S L 設定 的 [新增 F T P 網站] 對話方塊。

  5. 在精靈的下一個頁面上:

    • 針對 [驗證] 設定選取 [匿名]。

    • 針對 [ 授權 設定],從 [允許存取] 下拉式清單中選擇 [匿名使用者]。 針對 [許可權] 選項選取 [讀取]。

    • 按一下完成

      此螢幕快照顯示 [驗證和授權資訊] 的 [新增 F T P 網站] 對話方塊。

  6. 移至 IIS 7 管理員。 按兩下您所建立 FTP 網站的節點。 所有 FTP 功能的圖示都會顯示。

    顯示 [我的新 F T P 網站首頁] 窗格的螢幕快照。

摘要

若要回顧您在此步驟中完成的專案:

  1. 您已建立名為 「My New FTP Site」 的新 FTP 網站,並將網站的內容根目錄位於 %SystemDrive%\inetpub\ftproot
  2. 您將 FTP 月臺系結至埠 21 上電腦的本機回送地址,選擇不使用 FTP 月臺的安全套接字層 (SSL)。
  3. 您已為 FTP 網站建立預設規則,以允許匿名使用者「讀取」存取檔案。

步驟 1:設定 FTP 服務的被動埠範圍

在本節中,您會為FTP服務的被動連線設定伺服器層級埠範圍。 使用下列步驟:

  1. 移至 IIS 7 管理員。 在 [連線 ions] 窗格中,按兩下樹狀結構中的伺服器層級節點。

    顯示 [MY SERVER 首頁] 窗格的螢幕快照。

  2. 按兩下 功能清單中的 FTP 防火牆支援 圖示。

    顯示 [MY SERVER 首頁] 窗格的螢幕快照,其中已醒目提示 F T P 防火牆支援。

  3. 輸入數據通道埠範圍的值 範圍

    顯示 [F T P 防火牆支援] 窗格的螢幕快照。

  4. 輸入 FTP 服務的埠範圍之後,請按兩下 [動作] 窗格中的 [套用] 以儲存組態設定。

備註

  1. 埠的有效範圍是 1024 到 65535。 (從 1 到 1023 的埠保留供系統服務使用。

  2. 您可以輸入 「0-0」 的特殊埠範圍,將 FTP 伺服器設定為使用 Windows TCP/IP 動態埠範圍。

  3. 如需詳細資訊,請參閱下列 Microsoft 知識庫文章:

  4. 此埠範圍必須新增至防火牆伺服器的允許設定。

  5. 進行設定變更之後,請透過 StartRun>>services.msc 重新啟動 Microsoft FTP 服務,並找出 FTP 服務。

步驟 2:設定特定 FTP 月臺的外部 IPv4 位址

在本節中,您會為稍早建立的特定 FTP 網站設定外部 IPv4 位址。 使用下列步驟:

  1. 移至 IIS 7 管理員。 在 [連線 ions] 窗格中,按兩下您稍早在樹狀結構中建立的 FTP 月臺,按兩下功能清單中的 [FTP 防火牆支援] 圖示。

    顯示 [我的新 F T P 網站首頁] 窗格的螢幕快照,其中已醒目提示 F T P 防火牆支援。

  2. 針對 [防火牆的外部IP位址] 設定,輸入防火牆伺服器外部位址的IPv4位址。

    顯示 [F T P 防火牆支援] 窗格的螢幕快照,其中包含 [外部 I P 位址] 或 [防火牆] 字段中輸入的 [I P 位址]。

  3. 輸入防火牆伺服器的外部 IPv4 位址之後,請按兩下 [動作] 窗格中的 [套用] 以儲存組態設定。

摘要

若要回顧您在此步驟中完成的專案:

  1. 您已為 FTP 服務設定被動埠範圍。
  2. 您已針對特定 FTP 月臺設定外部 IPv4 位址。

(選擇性)步驟 3:設定 Windows 防火牆 設定

Windows Server 2008 包含內建防火牆服務,可協助保護伺服器免於網路威脅。 如果您選擇使用內建的 Windows 防火牆,則必須設定您的設定,讓 FTP 流量可以通過防火牆。

搭配 Windows 防火牆使用 FTP 服務時,有幾個不同的組態需要考慮 -- 您將使用主動或被動 FTP 連線,以及您是否將使用未加密的 FTP 或使用 FTP over SSL (FTPS)。 以下說明上述每個組態。

注意

您必須確定在以系統管理員身分登入時,遵循本節逐步解說中的步驟。 這可以透過下列其中一種方法來完成:

  • 使用名為 「管理員 istrator」 的實際帳戶登入您的伺服器。
  • 以滑鼠右鍵按兩下位於 Windows 程式的 [配件] 選單中的 [命令提示字元] 選單項,然後選取 [以系統管理員身分執行] 來登入具有系統管理員許可權的帳戶並開啟命令提示字元。

上述其中一個步驟是必要的,因為 Windows Vista 和 Windows Server 2008 操作系統中的用戶帳戶控制 (UAC) 安全性元件可防止系統管理員存取防火牆設定。 如需 UAC 的詳細資訊,請參閱下列檔:

注意

雖然可以使用 Windows 控制台 中的 Windows 防火牆小程式來設定 Windows 防火牆,但該公用程式沒有啟用 FTP 所有功能的必要功能。 Windows 控制台 中位於 管理員 istrative Tools 之下的 Windows 防火牆具有啟用 FTP 功能所需的所有功能,但為了簡單起見,本逐步解說將說明如何使用命令行Netsh.exe公用程式來設定 Windows 防火牆。

使用 Windows 防火牆搭配不安全的 FTP 流量

若要設定 Windows 防火牆以允許不安全的 FTP 流量,請使用下列步驟:

  1. 開啟命令提示字元:依序按兩下 [開始]、[所有程式]、[附屬程式] 和 [命令提示字元]。

  2. 若要在防火牆上開啟埠 21,請輸入下列語法,然後按 enter 鍵:

    netsh advfirewall firewall add rule name="FTP (non-SSL)" action=allow protocol=TCP dir=in localport=21
    
  3. 若要啟用可動態開啟數據連線埠的具狀態 FTP 篩選,請輸入下列語法,然後按 Enter 鍵:

    netsh advfirewall set global StatefulFtp enable
    

重要事項:

  • 上述規則不一定涵蓋使用中 FTP 連線;也必須在伺服器上啟用來自埠 20 的輸出連線。 此外,FTP 用戶端計算機必須自行設定輸入流量的防火牆例外狀況。
  • 這些規則不會涵蓋 FTP over SSL (FTPS) ;SSL 交涉很可能會失敗,因為 Windows 防火牆篩選的具狀態 FTP 檢查將無法剖析加密的數據。 (某些第三方防火牆篩選器會辨識 SSL 交涉的開頭,例如 AUTH SSL 或 AUTH TLS 命令,並傳回錯誤以防止 SSL 交涉啟動。

使用 Windows 防火牆搭配安全 FTP over SSL (FTPS) 流量

Windows 防火牆中的具狀態 FTP 封包檢查很可能會防止 SSL 運作,因為 Windows 防火牆篩選具狀態 FTP 檢查將無法剖析會建立數據連線的加密流量。 基於此行為,如果您想要使用 FTP over SSL (FTPS),您必須以不同的方式設定 FTP 的 Windows 防火牆設定。 設定 Windows 防火牆以允許 FTPS 流量的最簡單方式是在輸入例外狀況清單中列出 FTP 服務。 完整服務名稱為 「Microsoft FTP 服務」,簡短服務名稱為 「ftpsvc」。。 (FTP 服務裝載於一般服務進程主機 (Svchost.exe),因此無法將其放在例外狀況清單中,但程式例外狀況。

若要設定 Windows 防火牆以允許安全 FTP over SSL (FTPS) 流量,請使用下列步驟:

  1. 開啟命令提示字元:依序按兩下 [開始]、[所有程式]、[附屬程式] 和 [命令提示字元]。

  2. 若要設定防火牆以允許 FTP 服務在開啟的所有埠上接聽,請輸入下列語法,然後按 Enter 鍵:

    netsh advfirewall firewall add rule name="FTP for IIS7" service=ftpsvc action=allow protocol=TCP dir=in
    
  3. 若要停用具狀態 FTP 篩選,讓 Windows 防火牆不會封鎖 FTP 流量,請輸入下列語法,然後按 Enter 鍵:

    netsh advfirewall set global StatefulFtp disable
    

使用防火牆的詳細資訊

建立防火牆規則讓 FTP 伺服器正常運作通常很困難,而這項挑戰的根本原因在於 FTP 通訊協議架構。 每個 FTP 用戶端都需要在客戶端和伺服器之間維護兩個連線:

  • FTP 命令會透過稱為 控制通道的主要連線傳輸,通常是已知的 FTP 連接埠 21。
  • FTP 資料傳輸,例如目錄清單或檔案上傳/下載,需要名為 數據通道的次要連線。

在防火牆中開啟埠 21 是一項簡單的工作,但這表示 FTP 用戶端只能傳送命令,而無法傳輸數據。 這表示客戶端將能夠使用控制通道成功驗證及建立或刪除目錄,但用戶端將無法查看目錄清單或能夠上傳/下載檔案。 這是因為在允許數據通道通過防火牆之前,不允許 FTP 伺服器的數據連線通過防火牆。

注意

這似乎對 FTP 用戶端造成混淆,因為用戶端似乎能夠成功登入伺服器,但嘗試從伺服器擷取目錄清單時,連線可能會顯示為逾時或停止回應。

使用 FTP 和防火牆的挑戰不會以次要數據連線的需求結束;若要使事情更加複雜,實際上有兩種不同的方法來建立數據連線:

  • 使用中數據 連線:在作用中數據連線中,FTP 用戶端會設定數據通道接聽的埠,而伺服器會起始與埠的連線;這通常是來自伺服器的埠 20。 使用中數據連線是連線到 FTP 伺服器的預設方式;不過,不再建議使用中的數據連線,因為它們在因特網案例中無法正常運作。
  • 被動數據 連線:在被動數據連線中,FTP 伺服器會設定數據通道接聽的埠,而用戶端會起始與埠的連線。 被動連線在因特網案例中效果更好,RFC 1579(防火牆易記 FTP)建議

注意

某些 FTP 用戶端需要明確動作才能啟用被動連線,有些用戶端甚至不支持被動連線。 (其中一個範例是隨附於 Windows 的命令行Ftp.exe公用程式。為了增加混淆,有些用戶端會在發生網路錯誤時,嘗試以智慧方式替代這兩種模式,但不幸的是,這不一定能夠運作。

某些防火牆會嘗試補救內建篩選的數據連線問題,這些篩選會掃描 FTP 流量,並動態允許透過防火牆進行數據連線。 這些防火牆篩選器能夠偵測要用於數據傳輸的埠,並暫時在防火牆上開啟它們,讓用戶端可以開啟數據連線。 (某些防火牆預設可能會啟用篩選 FTP 流量,但並非總是如此。這種類型的篩選稱為「具狀態封包檢查」或「具狀態檢查」類型,這表示防火牆能夠智慧地判斷流量類型,並動態選擇如何回應。 許多防火牆現在都採用這些功能,包括內建的 Windows 防火牆。