如何設定 URLScan 工具

文章翻譯 文章翻譯
文章編號: 326444 - 檢視此文章適用的產品。
我們強烈建議所有使用者都升級到 Microsoft 網際網路資訊服務 (IIS) 7.0 版 Microsoft Windows Server 2008 上執行。 IIS 7.0 大幅提升網頁基礎結構的安全性。如需有關 IIS 與安全性相關的主題請造訪下列的 Microsoft Web 網站:
http://www.microsoft.com/technet/security/prodtech/IIS.mspx
如需有關 IIS 7.0 的詳細資訊,請造訪下列 Microsoft 網站]:
http://www.iis.net/default.aspx?tabid=1
全部展開 | 全部摺疊

在此頁中

結論

本文將逐步告訴您,如何設定 URLScan 工具,以防止攻擊和入侵您的 Web 伺服器。

安裝 URLScan

若要安裝 URLScan,請造訪下列 Microsoft 開發人員網路 MSDN 網站:
http://msdn2.microsoft.com/en-us/library/aa302368.aspx
如需詳細資訊按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
307608使用 URLScan IIS 上

修改 URLScan.ini 檔

所有設定 URLScan 都執行透過 [URLScan.ini 位於 %WINDIR%\System32\Inetsrv\URLscan 資料夾中的檔案。設定 URLScan、 文字編輯器 (如 「 記事本 」 開啟這個檔案、 進行適當的變更並再儲存檔案。

附註您必須重新啟動網際網路資訊服務 (IIS),您的變更才會生效。您可以執行這項作業快速的方法之一是在命令提示字元中執行 IISRESET 命令。

URLScan.ini 檔包含下列各節:
  • [選項]: 這個區段會描述 URLScan 的一般選項。
  • [AllowVerbs] 和 [DenyVerbs]: 這個區段會定義 URLScan 允許在動詞命令 (也稱為 HTTP 方法)。
  • [DenyHeaders]: 這個區段會列出在 HTTP 要求中不允許的 HTTP 標頭。如果 HTTP 要求中包含這一節中所列出的 HTTP 標頭的其中一個,URLScan 拒絕此要求。
  • [AllowExtensions] 和 [DenyExtensions]: 這個區段會定義 URLScan 允許檔案名稱副檔名。
  • [DenyURLSequences]: 這個區段列出的 HTTP 中不允許的字串的要求。URLScan 拒絕包含這一節中會出現一個字串的 HTTP 要求。
每一節會說明這份文件中的更詳細。

[選項] 區段

[選項]] 區段中,您可以設定許多 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 對應到一個空間中是因此 http://myserver/My%20Dir/My%20File.htm 的要求是 http://myserver/My Dir/My File.htm 要求相同。正規化是解碼 URL 編碼的要求的程序。預設情況下,這個選項設為 1。如果 NormalizeUrlBeforeScan 選項設定為 1,URLScan 會分析已解碼的要求。如果設定為 [0,URLScan 會改分析 undecoded 的要求。這個選項設為 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 可能允許索取 http://servername/BadFile.exe/SafeFile.htm 因為它認為它時實際 PATH_INFO 區域中的 HTML 網頁的名稱的可執行檔 (.exe) 檔的要求時,才是 HTML 網頁的要求。 當此選項設定 0 時,URLScan 也可能會拒絕包含句號的目錄的要求。
  • RemoveServerHeader = 0

    預設情況下,Web 伺服器會傳回識別它正在執行中的所有回應何種 Web 伺服器軟體的標頭。這會增加伺服器這項弱點,因為攻擊者就可以判斷一伺服器正在執行 IIS 和已知代替嘗試攻擊利用削弱點所設計的其他網頁伺服器的 IIS 伺服器的 IIS 問題的攻擊。 預設情況下,此選項設定為 0。如果您將 RemoveServerHeader 選項設定為 1 時,您防止您的伺服器傳送用來識別為 IIS 伺服器的標頭。如果您將 RemoveServerHeader 設定 0 仍會傳送這個標頭。
  • AlternateServerName =(not specified by default)

    如果 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

    預設情況下,此選項設定為 0。如果此選項設定為 0,URLScan 回合做表示執行之前任何其他網際網路伺服器應用程式發展介面 (ISAPI) 篩選器,為高優先順序篩選條件被安裝在伺服器上。如果此選項設定為 1,URLScan 會以低優先順序的篩選,以便其他篩選器之前執行任何分析,URLScan 可以修改 URL。FrontPage 伺服器擴充功能 (FPSE) 需要此選項設定為 1。
  • RejectResponseUrl =(not specified by default)

    此選項會指定 URLScan 會封鎖要求時執行的檔案之虛擬路徑。這可讓您自訂的封鎖要求傳送至用戶端的回應。您必須指定 RejectResponseUrl 為適當檔案例如 /Path/To/RejectResponseHandler.asp 虛擬路徑。您可以指定 URLScan 通常封鎖,例如動態伺服器網頁 (ASP) 頁面的檔案。您也可以使用下列伺服器變數從頁面:
    • HTTP_URLSCAN_STATUS_HEADER: 這指定為什麼要求已被封鎖。
    • HTTP_URLSCAN_ORIGINAL_VERB: 這指定原始的動詞命令,從已封鎖的要求 (比方說 GET、 張貼、 HEAD 或偵錯)。
    • HTTP_URLSCAN_ORIGINAL_URL: 這會指定原始 URL 從已封鎖的要求。
    如果您設定 RejectResponseUrl 為特殊值的 / ~ *,URLScan 使用僅記錄模式。這允許 IIS 來處理所有要求,但它通常會封鎖任何要求 URLScan 記錄檔中新增一個項目。這樣如果想將會相當實用您若要測試您 URLScan.ini 檔。

    如果您不指定值,如 RejectResponseUrl,URLScan 會會 /<Rejected-By-UrlScan> 預設值.

  • UseFastPathReject = 0

    預設情況下,此選項設定為 0。如果此選項設定為 1,URLScan 會忽略 [RejectResponseUrl] 設定,並立即傳回給瀏覽器的 [到 404 錯誤訊息。這是比處理 RejectResponseUrl,快,但它不允許多個記錄選項。如果此選項設定為 0,URLScan 會使用 RejectResponseUrl 設定值來處理該要求。

[AllowVerbs] 及 [DenyVerbs] 區段

[AllowVerbs][DenyVerbs] 區段定義 URLScan 允許 [HTTP 動詞命令 (也就是方法)。常見的 HTTP 動詞命令包括 GET]、 [POST]、 [HEAD,] 和 [PUT。其他應用程式如 [FPSE 和 Web 分散式撰寫及版本處理 (WebDAV) 使用其他的動詞命令。

[AllowVerbs][DenyVerbs] 區段都有相同的語法。它們會向上的 HTTP 清單的動詞命令和每個動詞命令出現在它自己行。

URLScan 會決定要使用哪個區段根據 [選項] 區段中的 [UseAllowVerbs] 選項值。預設情況下,這個選項設為 1。如果 UseAllowVerbs 設為 1,URLScan 只允許使用 [AllowVerbs] 一節所列的動詞命令的要求。不使用其中一個這些動詞命令的要求就會遭到拒絕。在這種情況下會忽略 [DenyVerbs] 區段。

如果 UseAllowVerbs 設定為 [0,URLScan 拒絕使用明確列的動詞命令 [DenyVerbs] 一節中的要求。允許任何動詞命令,並不會顯示使用本節中的要求。在這種情況下 URLScan 會忽略 [AllowVerbs] 區段。

[DenyHeaders] 區段

當用戶端從 Web 伺服器要求網頁時, 它通常是透過傳送某些 HTTP 標頭包含要求的其他資訊。常見的 HTTP 標頭包含下列各項:
  • 主機:

    此標頭檔包含 Web 伺服器的名稱。
  • 接受:

    這個標頭定義檔案類型,可以處理用戶端。
  • 使用者代理程式:

    這個標頭包含要求網頁瀏覽器的名稱。
  • 授權:

    此標頭檔會定義用戶端支援的驗證方法。
用戶端可能會將其他標頭傳送到指定的其他資訊伺服器。

[DenyHeaders]] 區段中,您會定義 URLScan 會拒絕的 HTTP 標頭。如果 URLScan 收到包含這一節中所列出的任何標頭的要求,它就會拒絕該要求。這一節組成一份 HTTP 與出現在其個別行上每個標頭檔的頁首。標頭名稱後面必須接著冒號 (:)(比方說 標頭名稱:)。

[AllowExtensions] 及 [DenyExtensions] 區段

大部分的檔案要有識別它們是何種檔案的檔案名稱副檔名。例如,檔名為 Word 記載通常中.doc HTML 檔案名稱結尾通常結束.htm 或.html,並以.txt 通常結尾的純文字檔案名稱。[AllowExtensions][DenyExtensions] 區段可讓您定義 URLScan 會封鎖的副檔名。 比方說,您可以設定 URLScan 拒絕以防止 Web 使用者在您的系統上執行的應用程式的.exe 檔案的要求。

[AllowExtensions][DenyExtensions] 區段都有相同的語法。它們由組成檔案名稱副檔名的清單,並每個副檔名出現在其個別行。擴充功能是以句號 (.) 開頭(比方說.ext)。

URLScan 會決定要使用哪個區段根據 UseAllowExtensions[選項] 一節中的值。預設情況下,此選項設定為 0。如果 UseAllowExtensions 設定為 [0,URLScan 只拒絕要求的檔案 [DenyExtensions] 一節中所列出的副檔名。允許未在這一節中列出任何檔案名稱副檔名。[AllowExtensions] 區段會被忽略。

如果 UseAllowExtensions 設為 1,URLScan 拒絕任何檔案的要求未明確地在 [AllowExtensions] 一節中列出的副檔名。允許使用該一節中所列出的檔案名稱副檔名的唯一要求。[DenyExtensions] 區段會被忽略。

如需有關如何設定 URLScan 允許要求並沒有副檔名的檔案的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
312376如何設定以允許 URLScan 要求在 IIS 中副檔名為空值

[DenyUrlSequences] 區段

您可以設定 URLScan 封鎖包含特定序列的字元在 URL 中的要求。比方說,就可以封鎖包含兩個連續句點 (.) 它經常與利用目錄周遊弱點的入侵程式一起使用的要求。若要指定要封鎖的字元順序,順序在一行中放置本身 [DenyUrlSequences] 區段中。

請注意加入字元順序可能會造成不利影響 Outlook Web Access (OWA) Microsoft Exchange 的。當您開啟郵件從 OWA 時,郵件的主旨列被包含在從伺服器要求的 URL。因為 URLScan.ini 檔會封鎖任何包含百分比符號 (%) 的要求,而且將連字號符號 (&amp;),使用者 404 錯誤時,收到訊息他們嘗試主旨列以開啟訊息,例如銷售增加 100%」 或 「 王俊元 & Sue 即將要城鎮 」。如果要解決這個問題,您可以移除這些序列,從[DenyUrlSequences] 區段。請注意這降低安全性,因為它可能會允許破壞性的要求,以連接到伺服器。

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
325965URLScan 工具的文件可能會造成 Outlook Web Access 的問題

URLScan 設定與 IIS 相關的應用程式搭配使用

應用程式例如 Exchange、 FPSE,與 Microsoft Visual Studio.NET 在正確的功能依賴 IIS。如果您不正確地設定 URLScan,這些應用程式可能會停止運作正常。

如需有關如何設定 URLScan 來使用這些應用程式的詳細資訊,按一下 [下列面的文件編號,檢視 「 Microsoft 知識庫 」 中發行項]:
309508在 Exchange 環境中的 IIS 鎖定和 URLscan 組態
309394如何使用 URLScan FrontPage 2000
318290如何使用 FrontPage 2002 使用 URLScan
310588安全性工具組會中斷在 Visual Studio.NET 中進行偵錯 ASP.NET

其他相關資訊

如果 [Urlscan.ini 不存在於 %WINDIR%\System32\Inetsrv\URLscan 資料夾,在用戶端會收到 404 錯誤回應。如果要解決這個問題,從備份還原 Urlscan.ini 檔案,或從一個完全相同的伺服器複製 Urlscan.ini 檔案]。

?考

如需詳細資訊按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
325864如何安裝並使用 IIS 鎖定精靈

屬性

文章編號: 326444 - 上次校閱: 2008年7月7日 - 版次: 6.1
這篇文章中的資訊適用於:
  • Microsoft Internet Information Server 4.0
  • Microsoft Internet Information Services 5.0
關鍵字:?
kbmt kbhowtomaster KB326444 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:326444
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com