[資安筆記] IIS 安全性延伸模組 URLScan 3 基本設定 - 參數區段意義

IIS 有一個功能強大的模組:URLScan,知道的人也許很多,但中文文章鮮少說明詳細設定,在此 TigerLin 將使用的心得分享出來,希望可以幫助 RD 與 IT 人員,讓應用程式與伺服器安全更上一層樓。

在 2008 年最轟動的資安話題不外乎為 Mass SQL Injection 攻擊,經過該攻擊洗禮後讓越來越多人開始重視 Web Application 的安全,WAF (Web Application Firewall) 類的產品詢問度也越來越高,但礙於價格方面能導入的公司實在是很有限。而近來 c.js 的 SQL Injection 攻擊又再度襲來,在 Google 已經可以看到 org 與 gov 網域被值入 XSS 成功的還不在少數。 IIS 有一個功能強大的模組:URLScan,知道的人也許很多,但中文文章鮮少說明詳細設定,在此 TigerLin 將使用的心得分享出來,希望可以幫助 RD 與 IT 人員,讓應用程式與伺服器安全更上一層樓。

  • 何謂 URLScan
    URLScan 可以說是簡易型的 WAF,除了可防護伺服器外,也可針對具有危險性的 HTTP 行為與 URL 參數進行過濾,並將之 Reject 的 IIS 安全性模組之一。只要設定正確,WEB 安全性可大幅度提高,反之則會無法正常運作。
     
  • 區段參數說明

    [OPTION] 區段
    參數關聯參數說明
    UseAllowVerbs 允許的 HTTP 動詞項目。常用的為 GET, HEAD, POST,其餘動詞將會進行阻擋。
    UseAllowExtensions 允許的檔案類型 (副檔名)。
    AllowHighBitCharacter 允許 UTF8 或 MCBS 編碼的檔案名稱。如要啟用中文檔名下載則必須設定為 1。
    AllowDotInPath URL中是否允許 "." 的字元。在某些系統使用 HTML Editor (例如 - FCKEditor) 時,此選項必須設為 1 才可正常使用。
    RemoveServerHeaderAlternateServerName移除 HTTP Request 時會顯示為何種伺服器的資訊,如果此選項為 0,則會依照 AlternateServerName 設定的名稱顯示。
    EnableLogging 啟用 URLScan Log,可協助正確的抓出安裝後無法存取的原因以及攻擊手法,強烈建議啟用。
    PerProcessLogging 依每一個處理序寫入 LOG,由於會讓 LOG 的可讀性變低,建議不啟用。
    AllowLateScanning 將低 URLScan 的優先處理權。
    PerDayLogging 將 LOG 分割為每日一個檔案,建議啟用。
    UseFastPathRejectRejectResponseUrl啟用 URLScan Reject 後的 URL,預設為 404 頁面,如設定為 1,則會導向至 RejectResponseUrl。
    LogLongUrls 將 URL 完整的紀錄至 LOG,某些超長的 URL 可能會將地 LOG 的可讀性,但又可正確幫助找出問題,可視需求啟用。
    UnescapeQueryString 對URL 的 QueryString (URL後會有 ?a=xxx&b=ooo 的這一段) 進行 Unescape 的解碼。
    RejectResponseUrl URLScan Reject 需求後導向的頁面
    LoggingDirectory URLScan Log 的儲存位置。
    AlternateServerName 顯示的伺服器資訊


    [RequestLimits] 區段
    參數說明
    MaxAllowedContentLength允許的最大內容長度,單位為 bytes。
    MaxUrl允許 URL 的最大長度,單位為 bytes。
    MaxQueryString允許 URL QueryString的最大長度,單位為 bytes。


    其他設定區段
    區段關聯參數說明
    [AllowVerbs]UseAllowVerbs允許的最大內容長度,單位為 bytes。
    [DenyVerbs]UseAllowVerbs允許 URL 的最大長度,單位為 bytes。
    [DenyHeaders] 不允許的 HTTP Request Header。
    [AllowExtensions]UseAllowExtensions允許經由 HTTP Request 的副檔名
    [DenyExtensions]UseAllowExtensions不允許經由 HTTP Request 的副檔名
    [AlwaysAllowedUrls] 無論如何都允許存取的 URL 設定
    [DenyUrlSequences] URL 中不允許的字元
    [AlwaysAllowedQueryStrings] 無論如何都允許存取的 URL QueryStrings設定
    [DenyQueryStringSequences] URL QueryStrings 中不允許的字元

     
  • 使用 URLScan 需注意的地方
    -- 非英語系檔案預設是會被 Reject,安裝之初一定要先啟用AllowHighBitCharacter,才不會發生非英語系檔案無法下載的情況。
    -- 後端 ERP 或 Open Source 系統很多都有使用 HTML 編輯器,AllowDotInPath 啟用才可正常使用 HTML 編輯器。
    -- 當某些檔案無法被辨識時 (例如:FLV),請記得在 IIS 的 MIME 類型與 URLScan 中的 UseAllowExtensions 手動加入。
    -- 設定完之後,一定要重新啟動 IIS 才可讓設定生效。可使用 IISRESET 快速的重新啟動服務。
     
  • 參考連結
    UrlScan Security Tool http://technet.microsoft.com/en-us/security/cc242650.aspx
    UrlScan 3.1 http://www.iis.net/extensions/UrlScan