共用方式為


疑難解答:內部部署Microsoft Entra Password Protection

部署 Microsoft Entra Password Protection 之後,可能需要進行疑難解答。 本文將詳細說明,以協助您瞭解一些常見的疑難解答步驟。

DC 代理程式在目錄中找不到 Proxy

此問題的主要徵兆是DC代理程式管理員事件記錄檔中的30,017個事件。

此問題的一般原因是 Proxy 尚未註冊。 如果註冊了 proxy,可能因為 AD 複寫的延遲,使得特定 DC 代理程式需要一段時間才能辨識該 proxy。

DC 代理程式無法與 Proxy 通訊

此問題的主要徵兆是DC代理程式管理員事件記錄檔中的30,018個事件。 此問題可能有數個可能的原因:

  • DC 代理程式位於網路的隔離區域中,該區域不允許連線至已註冊的代理伺服器。 只要其他 DC 代理能與代理伺服器通訊,以便從 Azure 下載密碼策略,此問題可能會是無害的。 下載之後,隔離的 DC 會透過 sysvol 共用中原則檔案的複製來取得這些原則。

  • Proxy 主電腦封鎖對 RPC 連接點對應程式端點的存取 (連接埠 135)

    Microsoft Entra Password Protection Proxy 安裝程式會自動建立 Windows 防火牆輸入規則,以允許存取埠 135。 如果稍後刪除或停用此規則,DC 代理程式將無法與 Proxy 服務通訊。 如果停用內建的 Windows 防火牆而改用其他防火牆產品,您必須設定該防火牆以允許存取埠 135。

  • Proxy 主計算機封鎖對 Proxy 服務接聽的 RPC 端點 (動態或靜態) 的存取

    Microsoft Entra Password Protection Proxy 安裝程式會自動建立 Windows 防火牆輸入規則,以允許存取Microsoft Entra Password Protection Proxy 服務所接聽的任何輸入埠。 如果稍後刪除或停用此規則,DC 代理程式將無法與 Proxy 服務通訊。 如果內建的 Windows 防火牆已停用,並改用其他防火牆產品,您必須設定該防火牆,以允許存取 Microsoft Entra Password Protection Proxy 服務接聽的任何輸入埠。 如果 Proxy 服務設定為接聽特定靜態 RPC 埠(使用 Set-AzureADPasswordProtectionProxyConfiguration Cmdlet),此設定可能會更具體。

  • 代理主機未設定為允許域控制器登入的功能。 此行為是透過「從網路存取這部計算機」用戶許可權指派來控制。 樹系中所有網域中的所有域控制器都必須獲得此許可權。 此設定通常會受限於較大的網路強化工作。

Proxy 服務無法與 Azure 通訊

  1. 請確定 Proxy 電腦能夠連線到 部署需求中列出的端點,

  2. 請確定樹系和所有 Proxy 伺服器都會向相同的 Azure 租用戶註冊。

    您可以執行 Get-AzureADPasswordProtectionProxyGet-AzureADPasswordProtectionDCAgent PowerShell Cmdlet 來檢查這項需求,然後比較每個傳回專案的 AzureTenant 屬性。 若要進行正確的作業,報告租用戶名稱在所有DC代理程式和 Proxy 伺服器中都必須相同。

    如果存在 Azure 租用戶註冊不匹配的情況,可以根據需要執行 Register-AzureADPasswordProtectionProxy 和/或 Register-AzureADPasswordProtectionForest PowerShell cmdlet 來修正此問題,務必使用相同 Azure 租用戶的憑據來完成所有註冊。

DC 代理程式無法加密或解密密碼原則檔案

Microsoft Entra Password Protection 與 Microsoft 金鑰散發服務所提供的加密和解密功能具有重要的相依性。 加密或解密失敗可能會顯示各種徵兆,並有數個可能的原因。

  • 確定在網域中的所有 Windows Server 2012 和更新版本域控制器上都已啟用 KDS 服務並正常運作。

    根據預設,KDS 服務的服務啟動模式會設定為 [手動] (觸發程序啟動)。 此配置表示當用戶端第一次嘗試使用該服務時,服務將根據需求自動啟動。 Microsoft Entra Password Protection 若要正常運作,則此預設服務啟動模式是可接受的。

    如果 KDS 服務啟動模式設定為 [已停用],必須先修正此設定,Microsoft Entra Password Protection 才能正常運作。

    此問題的簡單測試是透過服務管理 MMC 控制台或其他管理工具手動啟動 KDS 服務(例如,從命令提示字元控制台執行 “net start kdssvc”。 KDS 服務應該會順利啟動並持續執行。

    KDS 服務無法啟動最常見的根本原因是 Active Directory 域控制器對象位於預設域控制器 OU 外部。 KDS 服務不支援此組態,而且不是Microsoft Entra Password Protection 所施加的限制。 此條件的修正方式是將域控制器物件移至預設域控制器 OU 下的位置。

  • 不相容的 KDS 加密緩衝格式從 Windows Server 2012 R2 變更為 Windows Server 2016

    Windows Server 2016 引進了 KDS 安全性修正程式,可修改 KDS 加密緩衝區的格式。 這些緩衝區有時無法在 Windows Server 2012 和 Windows Server 2012 R2 上解密。 反向方向沒問題。 Windows Server 2012 和 Windows Server 2012 R2 上 KDS 加密的緩衝區一律會在 Windows Server 2016 和更新版本上成功解密。 如果您的 Active Directory 網域中的域控制器正在執行這些操作系統的不同版本,可能會偶爾報告 Microsoft Entra Password Protection 的解密失敗。 鑒於安全性修正的性質,無法準確預測這些失敗的時間或徵兆。 此外,考慮到由於其不具決定性特質,無法預測哪個網域控制器上的 Microsoft Entra Password Protection DC 代理程式在特定時間加密數據。

    此問題沒有解決方法,除了在您的 Active Directory 網域中不要同時運行這些不相容的作業系統。 換句話說,您應該只執行 Windows Server 2012 和 Windows Server 2012 R2 域控制器,或者您應該只執行 Windows Server 2016 和更新版本域控制器。

DC 特工認為森林尚未註冊

此問題的徵兆是 30,016 個事件記錄在 DC Agent\Admin 通道中,其中部分說明:

The forest hasn't been registered with Azure. Password policies can't be downloaded from Azure unless this is corrected.

此問題有兩個可能的原因。

  • 森林尚未註冊。 若要解決此問題,請執行 Register-AzureADPasswordProtectionForest 命令,如 部署需求中所述,
  • 樹系已註冊,但DC代理程式無法解密樹系註冊數據。 此案例的根本原因與 DC 代理程式下所列的問題 #2 相同,無法加密或解密的密碼原則檔案。 確認此理論的簡單方法是,只有在 Windows Server 2012 或 Windows Server 2012R2 域控制器上執行的 DC 代理程式上才會看到此錯誤,而 Windows Server 2016 和更新版本的域控制器上執行的 DC 代理程式則沒問題。 因應措施相同:將所有域控制器升級至 Windows Server 2016 或更新版本。

弱式密碼一直被接受,但不應被接受。

這個問題可能有數個原因。

  • 您的DC代理程式正在執行已過期的公開預覽軟體版本。 請參閱 公開預覽版DC代理程式軟體已過期

  • 您的DC代理程式無法下載原則或無法解密現有的原則。 請檢查先前文章中的可能原因。

  • 密碼政策的「強制模式」仍然設為「稽核模式」。 如果此設定生效,請將其重新設定為使用 Microsoft Entra Password Protection 入口網站強制執行。 如需詳細資訊,請參閱作業模式。

  • 密碼原則已停用。 如果此設定已生效,請使用 Microsoft Entra Password Protection 入口網站將其重新設定為啟用。 如需詳細資訊,請參閱作業模式。

  • 您尚未在網域中的所有域控制器上安裝 DC 代理程式軟體。 在此情況下,很難確保遠端 Windows 用戶端在密碼變更作業期間以特定域控制器為目標。 如果您認為已成功將 DC 代理程式軟體安裝的目標設為特定 DC,您可以按兩下 DC 代理程式管理員事件記錄檔來進行驗證:不論結果為何,至少有一個事件可記錄密碼驗證的結果。 如果變更密碼的使用者無相關事件,則密碼變更很可能是由不同的域控制器處理的。

    作為替代測試,請嘗試在直接登入至已安裝DC代理程式軟體的DC時設定或變更密碼。 不建議對生產 Active Directory 網域使用這項技術。

    雖然支援DC代理程式軟體的累加式部署,但受限於這些限制,Microsoft強烈建議DC代理程式軟體儘快安裝在網域中的所有域控制器上。

  • 密碼驗證演算法實際上可能如預期般運作。 請參閱 如何評估密碼

Ntdsutil.exe 無法設定弱式 DSRM 密碼

Active Directory 一律會驗證新的目錄服務修復模式密碼,以確保它符合網域的密碼複雜度需求;此驗證也會呼叫密碼篩選 dll,例如 Microsoft Entra Password Protection。 如果拒絕新的 DSRM 密碼,則會產生下列錯誤訊息:

C:\>ntdsutil.exe
ntdsutil: set dsrm password
Reset DSRM Administrator Password: reset password on server null
Please type password for DS Restore Mode Administrator Account: ********
Please confirm new password: ********
Setting password failed.
        WIN32 Error Code: 0xa91
        Error Message: Password doesn't meet the requirements of the filter dll's

Microsoft Entra Password Protection 記錄 Active Directory DSRM 密碼的密碼驗證事件記錄事件時,預期事件記錄檔訊息不會包含用戶名稱。 發生此行為的原因是 DSRM 帳戶是不屬於實際 Active Directory 網域的本機帳戶。

因為 DSRM 密碼太弱,導致域控制器複本升級失敗

在DC晉升過程中,新的目錄服務修復模式密碼會提交至網域中的現有DC以進行驗證。 如果拒絕新的 DSRM 密碼,則會產生下列錯誤訊息:

Install-ADDSDomainController : Verification of prerequisites for Domain Controller promotion failed. The Directory Services Restore Mode password doesn't meet a requirement of the password filter(s). Supply a suitable password.

就像在上一個版本中一樣,任何 Microsoft Entra Password Protection 密碼驗證結果事件,在這種情況下都會有空白的用戶名稱。

域控制器降級失敗,因為本機系統管理員密碼弱式

可以支援降級仍在執行 DC 代理程式軟體的域控制器。 不過,系統管理員應該知道DC代理程式軟體會在降級程式期間繼續強制執行目前的密碼原則。 新的本機系統管理員帳戶密碼(指定為降級作業的一部分)會像任何其他密碼一樣進行驗證。 Microsoft建議為本機系統管理員帳戶選擇安全密碼,作為 DC 降級程式的一部分。

一旦降級成功,並且域控制器重新啟動後再次作為一般成員伺服器運行,DC 代理程式軟體會轉為被動模式運行。 然後隨時都可以卸載。

開機進入目錄服務修復模式

如果域控制器開機進入目錄服務修復模式,DC 代理程式密碼篩選 dll 會偵測到此狀況,並導致所有密碼驗證或強制活動停用,而不論目前的作用中原則設定為何。 DC 代理程式密碼篩選 dll 會將 10023 警告事件記錄到 Admin 事件記錄檔,例如:

The password filter dll is loaded but the machine appears to be a domain controller that is booted into Directory Services Repair Mode. All password change and set requests are automatically approved. No further messages are logged until after the next reboot.

公開預覽的 DC 代理程式軟體已過期

在Microsoft Entra Password Protection 公開預覽期間,DC 代理程式軟體經過硬式編碼,以在下列日期停止處理密碼驗證要求:

  • 1.2.65.0 版於 2019 年 9 月 1 日停止處理密碼驗證要求。
  • 在 2019 年 7 月 1 日,1.2.25.0 版及更早版本停止處理密碼驗證要求。

隨著期限的臨近,所有具有時間限制的 DC 代理程序版本在開機時會在 DC 代理程序管理員事件記錄檔中發出一個看起來像這樣的 10021 事件:

The password filter dll has successfully loaded and initialized.

The allowable trial period is nearing expiration. Once the trial period has expired, the password filter dll no longer processes passwords. Please contact Microsoft for a newer supported version of the software.

Expiration date:  9/01/2019 0:00:00 AM

This message won't be repeated until the next reboot.

期限過後,所有限時 DC 代理程序版本都會在開機時間在 DC 代理程序管理員事件記錄檔中發出 10022 事件,如下所示:

The password filter dll is loaded but the allowable trial period has expired. All password change and set requests are automatically approved. Please contact Microsoft for a newer supported version of the software.

No further messages are logged until after the next reboot.

由於期限只會在首次開機時檢查,因此在日曆期限過後很久,您可能不會看到這些事件。 一旦確認期限,不會對域控制器或更大的環境產生負面影響,除了所有密碼都會自動核准。

重要

Microsoft建議將過期的公開預覽 DC 代理程式立即升級至最新版本。

在需要升級的環境中探索DC代理程序的簡單方式,就是執行 Get-AzureADPasswordProtectionDCAgent Cmdlet,例如:

PS C:\> Get-AzureADPasswordProtectionDCAgent

ServerFQDN            : bpl1.bpl.com
SoftwareVersion       : 1.2.125.0
Domain                : bpl.com
Forest                : bpl.com
PasswordPolicyDateUTC : 8/1/2019 9:18:05 PM
HeartbeatUTC          : 8/1/2019 10:00:00 PM
AzureTenant           : bpltest.onmicrosoft.com

在本文中,SoftwareVersion 字段顯然是要查看的重要屬性。 您也可以使用 PowerShell 篩選功能來排除已達到或超過所需基準版本的 DC 代理程式,例如:

PS C:\> $LatestAzureADPasswordProtectionVersion = "1.2.125.0"
PS C:\> Get-AzureADPasswordProtectionDCAgent | Where-Object {$_.SoftwareVersion -lt $LatestAzureADPasswordProtectionVersion}

Microsoft Entra Password Protection Proxy 軟體在任何版本中都不受時間限制。 Microsoft仍建議 DC 和 Proxy 代理程式在發行時升級至最新版本。 Get-AzureADPasswordProtectionProxy Cmdlet 可用來尋找需要升級的 Proxy 代理程式,類似於上述 DC 代理程式的範例。

如需特定升級程式的詳細資訊,請參閱 升級DC代理程式升級 Proxy 服務

緊急補救

如果發生DC代理程式服務造成問題的情況,DC 代理程式服務可能會立即關閉。 DC 代理程式密碼篩選 dll 仍會嘗試呼叫非執行中的服務並記錄警告事件 (10012, 10013),但在此期間會接受所有傳入密碼。 然後,也可以透過 Windows 服務控制管理員設定 DC 代理程式服務,並視需要將啟動類型設為「已停用」。

另一個補救措施是在 Microsoft Entra Password Protection 入口網站中將 [啟用] 模式設定為 [否]。 更新的政策下載後,每個 DC 代理服務會進入待命模式,在此模式下接受所有密碼 as-is。 如需詳細資訊,請參閱作業模式。

免職

如果您決定卸載 Microsoft Entra 密碼保護軟體,並從網域和樹系清除所有相關狀態,則可以使用下列步驟來完成這項工作:

重要

請務必依序執行這些步驟。 如果 Proxy 服務的任何實例保持執行狀態,它會定期重新建立其 serviceConnectionPoint 物件。 如果 DC 代理程式服務的任何實例保持執行狀態,它會定期重新建立其 serviceConnectionPoint 物件和 sysvol 狀態。

  1. 從所有機器卸載 Proxy 軟體。 此步驟不會 不需要重新啟動

  2. 從所有域控制器卸載DC代理程式軟體。 此步驟 需要重新啟動

  3. 手動移除每個網域命名內容中的所有 Proxy 服務連接點。 您可以使用下列 Active Directory PowerShell 命令來探索這些物件的位置:

    $scp = "serviceConnectionPoint"
    $keywords = "{ebefb703-6113-413d-9167-9f8dd4d24468}*"
    Get-ADObject -SearchScope Subtree -Filter { objectClass -eq $scp -and keywords -like $keywords }
    

    請勿在$keywords變數值結尾省略星號 (“*”)。

    透過 Get-ADObject 命令找到的物件接著可以傳遞至 Remove-ADObject,或手動刪除。

  4. 手動移除每個網域命名內容中的所有 DC 代理連接點。 樹系中每個域控制器可能會有一個這些對象,視軟體部署程度而定。 可以使用下列 Active Directory PowerShell 命令來探索該物件的位置:

    $scp = "serviceConnectionPoint"
    $keywords = "{2bac71e6-a293-4d5b-ba3b-50b995237946}*"
    Get-ADObject -SearchScope Subtree -Filter { objectClass -eq $scp -and keywords -like $keywords }
    

    透過 Get-ADObject 命令找到的結果對象接著可以傳送到 Remove-ADObject,或手動刪除。

    請勿在$keywords變數值結尾省略星號 (“*”)。

  5. 手動移除樹系層級設定狀態。 樹系組態狀態會在 Active Directory 組態命名內容中的容器中維護。 發現和刪除的方法如下:

    $passwordProtectionConfigContainer = "CN=Azure AD Password Protection,CN=Services," + (Get-ADRootDSE).configurationNamingContext
    Remove-ADObject -Recursive $passwordProtectionConfigContainer
    
  6. 手動刪除下列資料夾及其所有內容,以手動移除所有 sysvol 相關狀態:

    \\<domain>\sysvol\<domain fqdn>\AzureADPasswordProtection

    如有必要,您也可以在指定的域控制器本機存取此路徑;預設位置會類似下列路徑:

    %windir%\sysvol\domain\Policies\AzureADPasswordProtection

    如果 sysvol 共用設定在非預設位置,則此路徑會有所不同。

使用 PowerShell Cmdlet 進行健康情況測試

AzureADPasswordProtection PowerShell 模組包含兩個健康狀況相關的 cmdlet,用於基本驗證軟體是否已安裝並正常運作。 最好在設定新的部署之後,定期執行這些 Cmdlet,以及調查問題時。

每個個別健康情況測試都會傳回基本通過或失敗的結果,加上失敗時的選擇性訊息。 如果失敗的原因不清楚,請尋找可能會說明失敗的錯誤事件記錄檔訊息。 啟用文字記錄訊息可能也很有用。 如需詳細資訊,請參閱 Monitor Microsoft Entra Password Protection

Proxy 健康情況測試

Test-AzureADPasswordProtectionProxyHealth Cmdlet 支援兩個可以個別執行的健康情況測試。 第三個模式允許執行不需要任何參數輸入的所有測試。

代理註冊驗證

此測試會驗證 Proxy 代理程式是否已向 Azure 正確註冊,且能夠向 Azure 進行驗證。 成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionProxyHealth -VerifyProxyRegistration

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyProxyRegistration Passed

如果偵測到錯誤,測試會傳回失敗的結果和選擇性的錯誤訊息。 以下是一個可能失敗的範例:

PS C:\> Test-AzureADPasswordProtectionProxyHealth -VerifyProxyRegistration

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyProxyRegistration Failed No proxy certificates were found - please run the Register-AzureADPasswordProtectionProxy cmdlet to register the proxy.

端對端 Azure 連線的 Proxy 驗證

此測試是 -VerifyProxyRegistration 測試的上位集合。 它要求 Proxy 代理程式已正確向 Azure 註冊、能夠向 Azure 進行驗證,最後新增可成功傳送訊息至 Azure 的檢查,以確認完整的端對端通訊正常運作。

成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionProxyHealth -VerifyAzureConnectivity

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyAzureConnectivity Passed

所有測試的代理驗證

此模式允許大量執行不需要參數輸入的 Cmdlet 所支援的所有測試。 成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionProxyHealth -TestAll

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyTLSConfiguration  Passed
VerifyProxyRegistration Passed
VerifyAzureConnectivity Passed

DC 代理程式健康狀態測試

Test-AzureADPasswordProtectionDCAgentHealth cmdlet 支援數個可以個別執行的健康測試。 第三個模式允許執行不需要任何參數輸入的所有測試。

基本DC代理程式健康檢測

下列測試全都可以個別執行,而且不接受參數。 下表列出每個測試的簡短描述。

DC 代理健康檢查 描述
-VerifyPasswordFilterDll 確認密碼篩選 dll 目前已載入,而且能夠呼叫DC代理程式服務
驗證森林註冊-Verifying Forest Registration 確認森林目前已註冊
驗證加密解密 確認基本加密和解密是否使用 Microsoft KDS 服務運作
-驗證網域是否使用DFSR 確認目前網域是否使用 DFSR 進行 sysvol 複寫
-VerifyAzureConnectivity 確認與 Azure 的端對端通訊正在使用任何可用的 Proxy 運作

以下是 -VerifyPasswordFilterDll 測試通過的範例,而其他成功的測試看起來類似:

PS C:\> Test-AzureADPasswordProtectionDCAgentHealth -VerifyPasswordFilterDll

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyPasswordFilterDll Passed

所有測試的DC代理程序驗證

此模式允許大量執行不需要參數輸入的 Cmdlet 所支援的所有測試。 成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionDCAgentHealth -TestAll

DiagnosticName             Result AdditionalInfo
--------------             ------ --------------
VerifyPasswordFilterDll    Passed
VerifyForestRegistration   Passed
VerifyEncryptionDecryption Passed
VerifyDomainIsUsingDFSR    Passed
VerifyAzureConnectivity    Passed

使用特定 Proxy 伺服器進行連線測試

許多疑難排解情況涉及調查DC代理和代理伺服器之間的網路連線。 有兩項健康檢查可用來特別專注於這類問題。 這些測試需要指定特定的 Proxy 伺服器。

驗證 DC 代理程式與特定代理伺服器之間的連線

此測試會驗證從 DC 代理程式到 Proxy 伺服器的第一個通信階段的連線能力。 它會驗證 Proxy 是否收到呼叫,但未涉及與 Azure 的通訊。 成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionDCAgentHealth -VerifyProxyConnectivity bpl2.bpl.com

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyProxyConnectivity Passed

以下是在目標伺服器上執行的 Proxy 服務停止的範例失敗狀況:

PS C:\> Test-AzureADPasswordProtectionDCAgentHealth -VerifyProxyConnectivity bpl2.bpl.com

DiagnosticName          Result AdditionalInfo
--------------          ------ --------------
VerifyProxyConnectivity Failed The RPC endpoint mapper on the specified proxy returned no results; please check that the proxy service is running on that server.

確認 DC 代理程式與 Azure 之間的連線狀態(使用特定 Proxy)

此測試會使用特定 Proxy 來驗證 DC 代理程式與 Azure 之間的完整端對端連線。 成功的執行看起來像這樣:

PS C:\> Test-AzureADPasswordProtectionDCAgentHealth -VerifyAzureConnectivityViaSpecificProxy bpl2.bpl.com

DiagnosticName                          Result AdditionalInfo
--------------                          ------ --------------
VerifyAzureConnectivityViaSpecificProxy Passed

後續步驟

Microsoft Entra Password Protection 常見問題

如需全域和自定義禁用密碼清單的詳細資訊,請參閱禁止不正確的密碼 文章