為何XP Client可以使用新舊密碼和DC驗證
1. 自2003 SP1起 , 我們提供了一個與NTLM認證相關的新機制 :
如果使用者通過NTLM認證方式與DC之間建立session, 並且在這個session中修改了密碼;
那麼當使用者再次通過網路驗證的方式提供舊密碼並且訪問資源時, 舊密碼仍然可用;
具體可以參考: https://support.microsoft.com/kb/906305/en-us
關於NTLM與網路認證的相關資料:
1) NTLM認證的相關資料 :
https://msdn.microsoft.com/en-us/library/aa378749(v=vs.85).aspx
https://technet.microsoft.com/en-us/library/cc783005(WS.10).aspx
NTLM與Keberos屬於兩種不同的協定, 與Logon方式無關;
2) 關於網路驗證方式 :
KB 906305中涉及到的”網路驗證 - network authentications”, 這裡指的是”不通過Console視窗方式 , 為Network Logon”;
比如, 我們最常見的, 在Console視窗通過鍵盤輸入密碼之後Logon到機器上, 屬於”互動式” (Interactive) 的Logon;
而通過網路的方式, 遠端的訪問某些資源, 比如訪問共用資料夾, 就屬於網路訪問; OWA屬於網路訪問.
2. 預設情況下 , 舊密碼的有效期為60分鐘 ;
我們可以通過以下鍵值來控制該時間的長度. 在所有DC上修改以下註冊表鍵值:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa
Name: OldPasswordAllowedPeriod
Type: DWord
Value: (in minutes)
3. 設計這一機制的原因:
考慮到有些環境中的網路條件不夠理想 , 修改之後的密碼不一定能夠立刻複製到所有DC上;
因此我們設計了這一機制, 以降低複製延遲對驗證的影響;
4. 關於緩存 (Cache):
如果我們在密碼群組策略中啟用了”Enforce Password History”, 那麼在DC上, 會生成一個用於保存歷史密碼的緩存;
如果我們在Default Domain Controller上啟用該策略, 那麼所有DC上都會有該緩存, 這個緩存會用來保存舊的密碼;
這一機制的目的是比較使用者的新密碼與舊密碼的相似程度, 防止用戶長期使用一些相似的密碼;
5. 您可以在測試環境進行以下測試:
停止DC上的Kerberos Key Distribution Center, 這將導致Keberos驗證不再可用; 如果環境中只有一台DC, 那麼用戶端訪問這台DC時將使用NTLM驗證;
順利登陸後, 修改密碼;
然後從用戶端進行網路訪問, 比如通過IP位址訪問DC的共用資料夾: \\192.168.1.1\sysvol
如果網路正常, 那麼會出現彈窗, 輸入舊密碼, 確認是否能夠訪問;
我們的環境中進行了上述測試, 可以訪問, 說明舊密碼在這種網路訪問的情況下仍然可用. 測試結果符合KB 906305的描述.
6. 除了KB 906305中的描述以外, 密碼修改的複製延遲也會導致舊密碼登錄成功;
如果用戶端登錄時聯繫了某些DC, 而這些DC沒有接收到新的密碼, 那麼舊密碼也可以成功登陸;
我們可以在DC上運行以下命令, 檢查密碼的修改情況:
repadmin /showobjmeta <DC Name> <User Distinguished Name> > meta.txt & meta.txt
可以通過pwdlastSet鍵值的上次修改時間來確定這台DC上的密碼修改時間;
然後, 我們可以檢查DC之間的複製, 以確認新密碼是否已經同步到所有DC上;