前言
IIS 廣泛用於 Windows 伺服器,預設安裝包含多個示範虛擬目錄、元件、對應關聯,若不精簡將成為攻擊者切入點。以下 7 項實務硬化步驟可顯著降低風險。
1. 刪除不必要的預設虛擬目錄
安裝後 wwwroot 下預設產生:
IISHelp (說明文件)
IISAdmin (Web 管理介面,極高風險)
IISSamples (範例程式,含已知漏洞)
MSADC (RDS/ADO 元件,歷史漏洞多)
動作:全數刪除或移出 Web 根目錄。
2. 移除高風險 IIS 元件
「控制台」→「新增/移除程式」→「新增/移除 Windows 元件」→「應用程式伺服器」→「Internet 資訊服務 (IIS)」→「詳細資料」,取消勾選:
- Internet 服務管理員 (HTML 版遠端管理,明文傳輸)
- SMTP Service (若非郵件伺服器)
- NNTP Service (新聞群組,極少用)
- 範例網頁與腳本
按需保留,未用即移除。
3. 依檔案類型設定 NTFS + IIS 雙層權限
| 目錄/檔案類型 | NTFS 權限 (資料夾) | IIS 權限 (主目錄/虛擬目錄) |
| 靜態內容 (html/css/js/圖片) | 系統/管理員: 完全控制 IIS_IUSRS: 讀取 | 讀取 ✓ / 寫入 ✗ / 執行 ✗ |
| ASP/ASP.NET/PHP 腳本 | 同上 | 讀取 ✗ / 寫入 ✗ / 執行 ✓ (腳本) |
| 可執行程式 (exe/dll/com/bat) | 系統/管理員: 完全控制 IIS_IUSRS: 無 | 執行 ✓ (僅限必要 CGI) / 讀取 ✗ / 寫入 ✗ |
| 上傳/暫存目錄 | IIS_IUSRS: 讀取/寫入 | 讀取 ✓ / 寫入 ✓ / 執行 ✗ (嚴禁執行) |
原則:最小權限、執行與寫入互斥、腳本目錄禁止寫入、上傳目錄禁止執行。
4. 刪除不使用的應用程式對應
IIS 管理員 → 網站屬性 → 「主目錄」→「設定」→「應用程式對應」:
- 保留
.asp、.aspx、.php 等實際使用的副檔名對應。
- 刪除
.htr、.idc、.shtm、.stm、.printer 等舊有/未用對應。
- 若未來需啟用,**必須**勾選「驗證檔案是否存在」,避免任意路徑觸發處理常式。
5. 停用目錄瀏覽
網站/虛擬目錄屬性 → 「主目錄」/「虛擬目錄」→ 取消勾選「目錄瀏覽」。防止攻擊者列舉目錄結構、發現隱藏檔/備份檔/原始碼。
6. 啟用 URLScan / Request Filtering (IIS 7+ 內建)
- 封鎖高風險字串:
../, cmd.exe, select, union, insert, xp_ 等。
- 限制 HTTP 方法:僅允許
GET, HEAD, POST (視需求加 PUT, DELETE for REST)。
- 限制副檔名執行:
.exe, .bat, .com, .sh, .pl 等。
- 設定最大 URL 長度、查詢字串長度、標頭長度,防緩衝區溢位。
7. 修補與監控
- 啟用 Windows Update 自動安裝安全性更新。
- 部署 WAF (Web Application Firewall) 或 ModSecurity (IIS 版)。
- 定期審核 IIS 日誌 (
C:\WINDOWS\system32\LogFiles\W3SVC1) 異常 404/500/大量 POST/掃描特徵。
- 啟用失敗要求追蹤 (Failed Request Tracing) 針對 401/403/500 記錄完整管線細節。
總結
「最小安裝、最小權限、最小對應、最大監控」是 IIS 安全防護核心心法。定期以掃描器 (OWASP ZAP, Nessus, Microsoft Baseline Security Analyzer) 掃描驗證成效。