URLScan工具配置方法第1/2頁
2024-09-01 13:46:28
供稿:網友
如何配置 URLScan 工具
察看本文應用于的產品
文章編號 : 326444
最后修改 : 2007年3月14日
修訂 : 5.3
我們強烈建議所有運行 Microsoft Windows Server 2003 的用戶將 Microsoft Internet 信息服務 (IIS) 升級到 6.0 版,因為 IIS 6.0 顯著增強了 Web 基礎結構的安全性。有關與 IIS 安全性相關的主題的更多信息,請訪問下面的 Microsoft 網站:
()
本頁
概要
本文分步說明如何配置 URLScan 工具以防止 Web 服務器受到攻擊和利用。
回到頂端
安裝 URLScan
要安裝 URLScan,請訪問下面的 Microsoft Developer Network (MSDN) 網站:
()
有關其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
307608 () 對 IIS 使用 URLScan
回到頂端
修改 URLScan.ini 文件
URLScan 的所有配置都是通過 URLScan.ini 文件執行的,此文件位于 %WINDIR%/System32/Inetsrv/URLscan 文件夾中。要配置 URLScan,請在文本編輯器(如記事本)中打開此文件,進行相應的更改,然后保存此文件。
注意:要使更改生效,必須重新啟動 Internet 信息服務 (IIS)。一種快速的實現方法是在命令提示符處運行 IISRESET。
URLScan.ini 文件包含以下幾節: ? [Options]:此節描述常規 URLScan 選項。
? [AllowVerbs] 和 [DenyVerbs]:此節定義 URLScan 允許的謂詞(又稱作 HTTP 方法)。
? [DenyHeaders]:此節列出 HTTP 請求中不允許的 HTTP 標頭。如果 HTTP 請求中包含此節中列出的 HTTP 標頭之一,URLScan 將拒絕該請求。
? [AllowExtensions] 和 [DenyExtensions]:此節定義 URLScan 允許的文件擴展名。
? [DenyURLSequences]:此節列出 HTTP 請求中不允許的字符串。URLScan 拒絕那些包含此節中出現的字符串的 HTTP 請求。
本文將更詳細地介紹每一節。
[Options] 節
在 [Options] 節中,可以配置許多 URLScan 選項。此節中的每一行都具有以下格式:
OptionName=OptionValue
可用選項及其默認值如下所示: ? UseAllowVerbs=1
默認情況下,此選項設置為 1。如果將此選項設置為 1,則 URLScan 僅允許那些使用 [AllowVerbs] 節中列出的謂詞的 HTTP 請求。URLScan 禁止任何不使用這些謂詞的請求。如果將此選項設置為 0,則 URLScan 忽略 [AllowVerbs] 節,相反僅禁止那些使用 [DenyVerbs] 節中列出的謂詞的請求。
? UseAllowExtensions=0
默認情況下,此選項設置為 0。如果將此選項設置為 0,則 URLScan 禁止對 [DenyExtensions] 節中列出的文件擴展名的請求,但允許對任何其他文件擴展名的請求。如果將此選項設置為 1,則 URLScan 僅允許對帶 [AllowExtensions] 節中列出的擴展名的文件的請求,而禁止對任何其他文件的請求。
? NormalizeUrlBeforeScan=1
IIS 收到用 URL 編碼的請求。這表示某些字符可能被替換為百分號 (%) 后跟特定的數字。例如,%20 對應于一個空格,因此,對 %20Dir/My%20File.htm 的請求與對 Dir/My File.htm 的請求是相同的。標準化就是對 URL 編碼請求進行解碼的過程。默認情況下,此選項設置為 1。如果將 NormalizeUrlBeforeScan 選項設置為 1,則 URLScan 分析已解碼的請求。如果將此選項設置為 0,則 URLScan 分析未解碼的請求。將此選項設置為 0 會影響 URLScan 禁止某種攻擊的能力。
? VerifyNormalization=1
由于百分號 (%) 本身可以是 URL 編碼的,所以攻擊者可以向服務器提交一個精心制作的、基本上是雙重編碼的請求。如果發生這種情況,IIS 可能會接受本應視作無效而拒絕的請求。默認情況下,此選項設置為 1。如果將 VerifyNormalization 選項設置為 1,則 URLScan 將對 URL 執行兩次標準化。如果第一次標準化后的 URL 與第二次標準化后的 URL 不同,URLScan 將拒絕該請求。這樣就可以防止那些依賴雙重編碼請求的攻擊。
? AllowHighBitCharacters=0
默認情況下,此選項設置為 0。如果將此選項設置為 0,則 URLScan 拒絕任何包含非 ASCII 字符的請求。這樣可以防止某些類型的攻擊,但同時可能也會禁止對某些合法文件的請求,如帶有非英文名的文件。
? AllowDotInPath=0
默認情況下,此選項設置為 0。如果將此選項設置為 0,則 URLScan 拒絕所有包含多個句點 (.) 的請求。這樣可以防止通過將安全的文件擴展名放入 URL 的路徑信息或查詢字符串部分,以達到偽裝請求中的危險文件擴展名的企圖。例如,如果將此選項設置為 1,則 URLScan 可能允許對 的請求,因為它認為這是對 HTML 頁的請求,但實際上這是一個對可執行 (.exe) 文件的請求,而該文件的名稱在 PATH_INFO 區域中顯示為 HTML 頁的名稱。如果將此選項設置為 0,URLScan 可能還會拒絕對包含句點的目錄的請求。
? RemoveServerHeader=0
默認情況下,Web 服務器返回一個標頭,其中指出了 Web 服務器在所有響應中運行的 Web 服務器軟件。這會增加服務器遭受攻擊的可能性,因為攻擊者可以確定服務器正在運行 IIS,于是便攻擊已知的 IIS 問題,而不是試圖使用為其他 Web 服務器設計的攻擊手段來攻擊 IIS 服務器。默認情況下,此選項設置為 0。如果將 RemoveServerHeader 選項設置為 1,可以防止您的服務器發送將其標識為 IIS 服務器的標頭。如果將 RemoveServerHeader 設置為 0,則仍發送此標頭。
? AlternateServerName=(默認情況下不指定)
如果將 RemoveServerHeader 設置為 0,可以在 AlternateServerName 選項中指定一個字符串以指定將在服務器標頭中傳回的內容。如果將 RemoveServerHeader 設置為 1,則此選項將被忽略。
? EnableLogging=1
默認情況下,URLScan 在 %WINDIR%/System32/Inetsrv/URLScan 中保留所有被禁止的請求的完整日志。如果不希望保留此日志,可將 EnableLogging 設置為 0。
? PerProcessLogging=0
默認情況下,此選項設置為 0。如果將此選項設置為 1,URLScan 將為承載 URLScan.dll 的每個進程創建一個單獨的日志。如果將此選項設置為 0,所有進程將記錄到同一個文件中。
? PerDayLogging=1
默認情況下,此選項設置為 1。如果將該值設置為 1,則 URLScan 每天創建一個新的日志文件。每個日志文件的名稱都是 Urlscan.MMDDYY.log,其中 MMDDYY 是日志文件的日期。如果將該值設置為 0,則所有日志記錄都保存在同一個文件中,與日期無關。
? AllowLateScanning=0