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 才可正常使用。 RemoveServerHeader AlternateServerName 移除 HTTP Request 時會顯示為何種伺服器的資訊,如果此選項為 0,則會依照 AlternateServerName 設定的名稱顯示。 EnableLogging 啟用 URLScan Log,可協助正確的抓出安裝後無法存取的原因以及攻擊手法,強烈建議啟用。 PerProcessLogging 依每一個處理序寫入 LOG,由於會讓 LOG 的可讀性變低,建議不啟用。 AllowLateScanning 將低 URLScan 的優先處理權。 PerDayLogging 將 LOG 分割為每日一個檔案,建議啟用。 UseFastPathReject RejectResponseUrl 啟用 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