Internet Information Services (IIS) 是 Windows 平台上最廣泛使用的 Web 伺服器之一,功能強大且易於管理,但也常成為惡意攻擊的目標。儘管及時安裝修補程式可修復已知漏洞,但新弱點層出不窮。傳統透過停用匿名存取來限制用戶範圍的做法,仍存在安全隱患。Windows Server 2003 引入的「URL 授權」功能,結合授權管理器,能對瀏覽網站的用戶實施嚴格存取控制,大幅提升 IIS 6 的安全性與穩定性。
啟用 URL 授權後,只有擁有合法 Windows Server 2003 帳號、且被加入授權管理器「角色指派」中的用戶,才能存取受保護的虛擬目錄。這實現了基於身分的精細權限管理。
IIS 6 預設允許匿名存取,必須先關閉。開啟「Internet 資訊服務 (IIS) 管理器」(執行 %systemroot%\System32\InetSrv\IIS.msc),展開至目標虛擬目錄(以「Online」為例),右鍵選擇「屬性」→「虛擬目錄」標籤→「建立」按鈕→「目錄安全性」標籤→「驗證及存取控制」區塊的「編輯」按鈕。在彈出視窗中取消「啟用匿名存取」,確保勾選「整合式 Windows 驗證」。
在同一「虛擬目錄」屬性頁中,點擊「組態」→「應用程式」對話框→「萬用字元應用程式對應」區塊的「插入」按鈕。瀏覽至 %systemroot%\System32\InetSrv 目錄,選取 urlauth.dll,確定完成對應。
在 IIS 管理器中展開「本機電腦」→「Web 服務擴充」,點擊右側「新增一個 Web 服務擴充」連結。擴充名稱輸入「URL 授權」,加入同樣的 urlauth.dll,並勾選「設定擴充狀態為允許」。
執行 Azman.msc 開啟授權管理器,右鍵「授權管理器」→「選項」→勾選「開發人員模式」。右鍵選擇「新增授權存放區」,選擇 XML 檔案,儲存名稱設為 C:\MyStore.xml。接著在存放區下建立應用程式「IIS6 URL 授權」,於「定義」→「作業定義」新增名為「AccessURL」、作業編號為 1 的定義。
在應用程式下新增範圍「WebApp」。於「角色定義」建立角色「Viewer」,並在其屬性「定義」標籤加入「AccessURL」作業。展開「WebApp」→「角色指派」,指派「Viewer」角色,並透過「指派 Windows 使用者和群組」加入允許存取的用戶帳號。
IIS 6 預設以 Network Service 身分執行。在 MyStore.xml 屬性「安全性」標籤,將「讀取器」角色指派給 Network Service 帳號。
建立 VBScript SetUrlAuth.vbs(內容見原文),置於 C:\Inetpub\AdminScripts。於命令提示字元執行:
Cscript SetUrlAuth.vbs W3svc\1\Root\WebApp WebApp msxml://C:\MyStore.xml true 1
完成後,URL 授權即生效,僅授權管理器中 Viewer 角色指定的用戶能存取 Online 虛擬目錄。