Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

IIS 網站彈出密碼提示框?三大核心原因與快速排查指南

編輯:關於伺服器

現象描述

IIS 服務安裝完成、網站建立無誤,但使用瀏覽器訪問時卻彈出 Windows 安全性對話框,要求輸入使用者名稱與密碼。此問題在 IIS 5.0/6.0/7.x/8.x/10.x 皆常見,本文提供系統性排查步驟。

核心原因與解決方案

原因一:目標檔案/資料夾本身設有 NTFS 權限或加密

徵兆:特定頁面 (如 `iisstart.asp`) 提示密碼,其他靜態頁面正常。

排查:

  1. 右鍵該檔案/資料夾 → 「內容」→「安全性」標籤
  2. 檢查是否有「拒絕」規則、或僅允許特定帳號存取
  3. 確認 `IUSR`、`IIS_IUSRS`、應用程式集區身分識別帳號擁有「讀取與執行」、「列出資料夾內容」、「讀取」權限

修正:移除不必要的拒絕規則,補齊讀取權限,取消檔案屬性中的「加密內容以保護資料」。

原因二:匿名驗證未啟用或帳號配置錯誤 (最常見)

核心機制:IIS 使用內建帳號 `IUSR` (IIS 7+) 或 `IUSR_<機器名>` (IIS 6) 代表匿名使用者。若此帳號停用、密碼不同步、或未勾選「允許 IIS 控制密碼」,將導致驗證失敗彈窗。

排查步驟 (IIS 7.0+ / 10.0):

  1. 開啟 IIS 管理員 → 選取網站 → 雙擊 驗證
  2. 確認 匿名驗證 狀態為 已啟用
  3. 右鍵匿名驗證 → 編輯...
  4. 選擇 應用程式集區身分識別 (推薦,無需管理密碼同步) 或 選「特定使用者」輸入 `IUSR` (需確認該帳號存在、未鎖定、密碼正確且勾選「密碼永不過期」)
  5. 勾選 允許 IIS 控制密碼 (若用特定使用者模式)

排查步驟 (IIS 6.0):

  1. IIS 管理員 → 網站屬性 → 「目錄安全性」標籤 → 「驗證與存取控制」區域 → 「編輯...」
  2. 勾選 啟用匿名存取
  3. 帳號應為 `IUSR_<電腦名>`,密碼同步、勾選「允許 IIS 控制密碼」

原因三:目標資料夾 NTFS 權限遺漏 `IUSR` / `IIS_IUSRS` / 應用程式集區身分

前提:網站實體路徑位於 NTFS 磁碟分區 (FAT32 無安全性標籤)。

標準權限配置 (最小權限原則):

帳號/群組權限遞歸
SYSTEM完全控制是
Administrators完全控制是
IUSR (IIS 7+) / IUSR_<機器名> (IIS 6)讀取和執行、列出資料夾內容、讀取是
IIS_IUSRS (IIS 7+ 內建群組)讀取和執行、列出資料夾內容、讀取是
應用程式集區自訂身分帳號 (若使用)讀取和執行、列出資料夾內容、讀取 (+ 寫入目錄若需上傳/快取)是
CREATOR OWNER完全控制 (僅子物件)是

操作:右鍵網站根目錄 → 內容 → 安全性 → 編輯 → 新增上述帳號 → 給予權限 → 確定套用。

進階排查:當上述三招都無效時

  1. 檢查 Web.config 授權規則:`` 會拒絕匿名,改為 `` 或移除。
  2. 驗證提供者順序:IIS 管理員 → 網站 → 驗證 → 右側「提供者...」→ 確保 `Anonymous` 在 `Negotiate`、`NTLM` 之前。
  3. 應用程式集區身分識別:若網站使用自訂網域帳號跑 AppPool,確認該帳號擁有「作為服務登入」、「批次作業登入」權利 (本地安全性原則 → 使用者權利指派),且網站目錄 ACL 包含該帳號。
  4. 核心模式驗證衝突:`system.webServer/security/authentication/windowsAuthentication/@useKernelMode="true"` 可能導致 NTLM 回饋失敗,嘗試設為 `false`。
  5. 防火牆/Proxy 干擾:前端 Nginx/Apache/WAF 若未正確轉發 `Authorization` 標頭或處理 401 挑戰,會導致瀏覽器重複彈窗。檢查 `proxy_set_header Authorization $http_authorization;` 等配置。

一鍵診斷腳本 (PowerShell,適用 IIS 7+)

Import-Module WebAdministration
$site = "Default Web Site"
$auth = Get-WebConfigurationProperty -Filter "system.webServer/security/authentication/anonymousAuthentication" -Name "enabled" -PSPath "IIS:\Sites\$site"
Write-Host "匿名驗證啟用狀態: $($auth.Value)"
$anonUser = Get-WebConfigurationProperty -Filter "system.webServer/security/authentication/anonymousAuthentication" -Name "userName" -PSPath "IIS:\Sites\$site"
Write-Host "匿名帳號: $($anonUser.Value)"
$acl = Get-Acl "C:\inetpub\wwwroot"  # 替換為實際網站路徑
$required = @("IUSR","IIS_IUSRS")
foreach($r in $required){
    $has = $acl.Access | Where {$_.IdentityReference.Value -like "*$r*" -and $_.FileSystemRights -band [System.Security.AccessControl.FileSystemRights]::ReadAndExecute}
    Write-Host "$r 權限: $(if($has){'正常'}else{'缺失 - 需補充'})"
}

總結檢查清單

  • [ ] 匿名驗證已啟用
  • [ ] 匿名帳號 (IUSR / IUSR_機器名) 存在、未鎖定、密碼同步 (或用 AppPool 身分)
  • [ ] 勾選「允許 IIS 控制密碼」
  • [ ] 網站實體目錄 NTFS ACL 包含 IUSR/IIS_IUSRS/AppPool身分 讀取/執行權限
  • [ ] 無拒絕規則、無加密屬性
  • [ ] Web.config 無 ``
  • [ ] 驗證提供者順序 Anonymous 優先

結語

IIS 彈出密碼提示 90% 以上源於匿名驗證配置錯誤或NTFS 權限遺漏。依循本文三步驟排查,通常可在 5 分鐘內定位並解決。建議建立標準化部署腳本 (PowerShell/Ansible),自動化套用正確權限與驗證設定,從源頭杜絕此類問題。

Copyright © Windows教程網 All Rights Reserved