如何使用要求篩選設定 WebDAV
由 羅伯特·麥克默里
簡介
Microsoft 發行了一個新的 WebDAV 擴充模組,在 Windows Server® 2008 上完全重寫了 網際網路資訊服務 7.0 (IIS 7.0)。 這個新的 WebDAV 擴充模組結合了許多新功能,可讓 Web 作者比之前更妥善地發佈內容,並提供 Web 系統管理員更多的安全性和設定選項。 Microsoft 已發行適用於 Windows Server® 2008 的 WebDAV 擴充模組更新,提供共用和獨佔鎖定支援,以防止因為覆寫而遺失的更新。
IIS 7.0 提供數個絕佳的新安全性功能,包括 IIS 7.0 新的要求篩選。 對於熟悉舊版 IIS UrlScan 的 IIS 使用者,IIS 7.0 中的要求篩選功能就像是內建 URLScan。
新的 WebDAV 模組和要求篩選旨在一起運作,本檔會逐步引導您設定與 WebDAV 相關的要求篩選設定與 WebDAV 設定,以設定安全的發佈環境。 請注意,如果您使用 IIS 管理員 UI 來設定 WebDAV,則要求篩選設定會自動更新,而且您不需要遵循本文中的步驟。
必要條件
需要下列專案才能完成本文中的程式:
IIS 7.0 必須安裝在您的伺服器上,而且必須設定下列專案:
- IIS 7.0 安裝所建立的默認網站仍必須存在。
- 必須安裝要求篩選功能。
必須安裝新的 WebDAV 擴充模組。 如需新 WebDAV 模組安裝的相關信息,請參閱下列檔:
如何使用 AppCmd 的知識很有説明。 如需使用要求篩選的詳細資訊,請參閱下列檔:
注意
您必須確定您遵循本檔中使用完整系統管理許可權的步驟。 使用下列兩種方法之一,最好完成此作業:
- 使用本機「系統管理員」帳戶登入您的電腦。
- 如果您使用具有非本機「系統管理員」帳戶之系統管理許可權的帳戶登入,請使用 [以 管理員 istrator 執行身分] 選項開啟 IIS 管理員和所有命令提示字元會話。
需要上述條件,因為 Windows Server 2008 中的用戶帳戶控制 (UAC) 安全性元件會防止系統管理存取 IIS 7.0 的組態設定。 如需 UAC 的詳細資訊,請參閱下列檔:
基本要求篩選概念
IIS 7.0 中的要求篩選包含根據下列參數篩選要求:
- 擴展名
- 隱藏區段
- HTTP 指令動詞
- 要求限制
- URL 序列
所有這些要求篩選功能都可能會影響透過 WebDAV 上傳或下載的內容,但某些功能可以設定為與 WebDAV 合作運作。
下列清單描述哪些功能可以設定為使用 WebDAV:
下列功能一律會影響 WebDAV 要求:
- 要求限制
- URL 序列
下列功能預設會影響 WebDAV 要求,但可以設定為略過 WebDAV 要求:
- 擴展名
- 隱藏區段
- HTTP 指令動詞
例如,您可以將伺服器設定為允許「.htm」和「.php」檔案的非 WebDAV 要求,同時封鎖存取「.mdb」和「.config」檔案,同時仍允許 WebDAV 要求存取封鎖的內容。
注意
WebDAV 要求需要驗證。
您可以使用下列其中一種方法來編輯要求篩選設定:
- 使用作為 IIS 7.0 管理員 istration Pack 一部分提供的用戶介面
- 從命令行使用AppCmd
- 編輯您的應用程式Host.config 檔案
- 使用 Microsoft.Web。從 .NET 應用程式或 Windows PowerShell 管理員 istration
本逐步解說的其餘資訊將示範如何使用命令行中的AppCmd,同時顯示applicationHost.config檔案中產生的組態設定可能看起來的樣子。
注意
本檔未涵蓋所有可使用要求篩選設定的功能。 如需設定其他要求篩選選項的詳細資訊,請參閱下列主題:
設定要求篩選和 WebDAV
篩選擴展名
某些擴展名,例如 「config」 和 「.asax」 會受到預設要求篩選 檔案Extensions 集合的保護。 您可以將其他專案新增至擴展名清單,以允許或封鎖 HTTP 要求,而且您可以控制此清單是否適用於 WebDAV 要求。 在此範例中,您將使用AppCmd區塊「.txt」檔案進行存取,即使這些檔案通常可供存取,而且您會指定WebDAV要求能夠存取所有封鎖的擴展名。
以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:
cd "%WinDir%\System32\InetSrv"
使用下列語法來檢視現有的要求篩選規則:
AppCmd list config "Default Web Site/" /section:system.webServer/security/requestFiltering
將特定擴展名新增至 fileExtensions 集合,並使用下列語法為允許的屬性指定 false,以封鎖對 “.txt” 檔案的存取:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+fileExtensions.[fileExtension='.txt',allowed='false'] /commit:apphost
使用下列語法將 fileExtensions 集合的 applyToWebDAV 屬性設定為 false,以允許 WebDAV 存取所有封鎖的文件類型:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.applyToWebDAV:false /commit:apphost
完成上述步驟之後,applicationHost.config 檔案的 fileExtensions 區段中產生的程式代碼應該類似下列範例:
<requestFiltering>
<fileExtensions applyToWebDAV="false">
<add fileExtension=".txt" allowed="false" />
</fileExtensions>
</requestFiltering>
注意:
您可以使用上述步驟,藉由將擴展名新增至 fileExtensions 集合來封鎖對其他擴展名的存取,也可以藉由指定 allowed 屬性的 true 來修改語法以允許特定檔案。
您可以使用下列語法,將 fileExtensions 集合的 allowUnlisted 屬性設定為 false,以封鎖所有未知的擴展名:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /fileExtensions.allowUnlisted:false /commit:apphost
注意
設定此選項需要您特別新增每個擴展名,才能由非 WebDAV 要求存取。
您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true。
篩選隱藏區段
默認要求篩選 hiddenSegments 集合會隱藏某些檔案區段,例如 “web.config” 和 “App_code”。 您可以將其他專案新增至檔案區段清單,以便針對 HTTP 要求隱藏這些專案,而且您可以控制此清單是否適用於 WebDAV 要求。 在此範例中,您將使用 AppCmd 將 「include」 區段從 HTTP 要求隱藏,即使它通常可見,您也會指定 WebDAV 要求能夠存取所有隱藏的檔案區段。
以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:
cd "%WinDir%\System32\InetSrv"
使用下列語法,將特定專案新增至 hiddenSegments 集合,以封鎖對「include」 區段的存取:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+hiddenSegments.[segment='include'] /commit:apphost
使用下列語法將 hiddenSegments 集合的 applyToWebDAV 屬性設定為 false,以允許 WebDAV 存取所有封鎖的文件類型:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /hiddenSegments.applyToWebDAV:false /commit:apphost
完成上述步驟之後,applicationHost.config 檔案的 hiddenSegments 區段中產生的程式代碼應該類似下列範例:
<requestFiltering>
<hiddenSegments applyToWebDAV="false">
<add segment="include" />
</hiddenSegments>
</requestFiltering>
注意:
- 您可以使用上述步驟來隱藏其他檔案區段,方法是將它們新增至 hiddenSegments 集合。
- 您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true。
篩選 HTTP 動詞
默認要求篩選 動詞 集合允許所有未列出的 HTTP 動詞動詞,即使某些動詞可能未對應到特定的 HTTP 處理程式也一樣。 您可以將專案新增至此清單,以指定應該允許或封鎖哪個 HTTP 動詞,而且您可以控制此列表是否適用於 WebDAV 要求。 在此範例中,您將使用AppCmd來封鎖 HTTP要求的 “DELETE” 和 “PUT” 動詞,並指定 WebDAV 要求將能夠使用這些動詞。
以完整系統管理許可權開啟命令提示字元,並將目錄變更為 InetSrv 資料夾:
cd "%WinDir%\System32\InetSrv"
使用下列語法,將特定專案新增至動詞集合,併為允許的屬性指定 false,以封鎖對 “DELETE” 動詞動詞的存取:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='DELETE',allowed='false'] /commit:appHost
使用下列語法,將另一個特定專案新增至動詞集合,併為允許的屬性指定 false,以封鎖對 “PUT” 動詞的存取:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /+verbs.[verb='PUT',allowed='false'] /commit:appHost
使用下列語法將 verbs 集合的 applyToWebDAV 屬性設定為 false,以允許 WebDAV 存取所有 HTTP 動詞命令:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.applyToWebDAV:false /commit:appHost
完成上述步驟之後,applicationHost.config 檔案動 詞 區段中產生的程式代碼應該類似下列範例:
<requestFiltering>
<verbs applyToWebDAV="false">
<add verb="DELETE" allowed="false" />
<add verb="PUT" allowed="false" />
</verbs>
</requestFiltering>
注意:
您可以使用上述步驟,藉由將其他 HTTP 動詞新增至動詞集合來封鎖其他 HTTP 動詞,或者您可以藉由指定allowed屬性的 true 來修改語法以允許特定動詞。
您可以使用下列語法,將 verbs 集合的 allowUnlisted 屬性設定為 false,以封鎖所有未知的 HTTP 動詞動詞:
AppCmd set config "Default Web Site/" /section:system.webServer/security/requestFiltering /verbs.allowUnlisted:false /commit:appHost
注意
設定此選項需要您特別新增每個 HTTP 動詞,才能由非 WebDAV 要求存取。
您可以使用上述步驟來封鎖 WebDAV 要求的存取,方法是為 applyToWebDAV 屬性指定 true。
摘要
本文件已說明下列概念:
相關資訊
如需使用 WebDAV 的其他資訊,請參閱下列文章: