如何防止 Windows 將密碼的 LAN 管理員哈希儲存在 Active Directory 和本機 SAM 資料庫中
本文提供三種方法,以防止 Windows 將密碼的 LAN Manager (LM) 哈希儲存在 Active Directory 和本機安全性帳戶管理員 (SAM) 資料庫中。
原始 KB 編號: 299656
摘要
Windows 不會以純文本儲存您的用戶帳戶密碼。 相反地,它會使用兩種不同的密碼表示法來產生及儲存使用者帳戶密碼,稱為哈希。 當您將使用者帳戶的密碼設定或變更為包含少於 15 個字元的密碼時,Windows 會產生密碼的 LM 哈希和 Windows NT 哈希 (NT 哈希)。 這些哈希會儲存在本機 SAM 資料庫或 Active Directory 中。
相較於NT哈希,LM 哈希相對薄弱,而且容易遭受快速暴力密碼破解攻擊。 因此,您可能想要防止 Windows 儲存密碼的 LM 哈希。 本文說明如何讓 Windows 只儲存密碼的更強 NT 哈希。
其他相關資訊
Windows 2000 和 Windows Server 2003 伺服器可以驗證從執行舊版 Windows 的電腦連線的使用者。 不過,早於 Windows 2000 的 Windows 版本不會使用 Kerberos 進行驗證。 為了提供回溯兼容性,Windows 2000 和 Windows Server 2003 支援:
- LM 驗證
- Windows NT (NTLM) 驗證
- NTLM 第 2 版 (NTLMv2) 驗證
NTLM、NTLMv2 和 Kerberos 全都使用NT 哈希,也稱為 Unicode 哈希。 LM 驗證通訊協定會使用 LM 哈希。
如果您不需要 LM 哈希進行回溯相容性,您應該避免儲存 LM 哈希。 如果您的網路包含 Windows 95、Windows 98 或 Macintosh 用戶端,當您防止網域儲存 LM 哈希時,可能會遇到下列問題:
- 沒有 LM 哈希的使用者無法連線到做為伺服器的 Windows 95 或 Windows 98 計算機。 如果伺服器上已安裝適用於 Windows 95 和 Windows 98 的目錄服務用戶端,就不會發生此問題。
- Windows 95 或 Windows 98 電腦上的用戶無法使用其網域帳戶向伺服器進行驗證。 如果使用者的計算機上安裝目錄服務用戶端,則不會發生此問題。
- Windows 95 或 Windows 98 電腦上的使用者無法使用停用 LM 哈希之伺服器上的本機帳戶進行驗證。 如果使用者的計算機上安裝目錄服務用戶端,則不會發生此問題。
- 用戶無法從 Windows 95 或 Windows 98 計算機變更其網域密碼。 或者,當使用者嘗試從這些先前的用戶端變更密碼時,可能會遇到帳戶鎖定問題。
- Macintosh Outlook 2001 用戶端的用戶無法在 Microsoft Exchange 伺服器上存取其信箱。 使用者可能會在 Outlook 中看到下列錯誤:
提供的登入認證不正確。 請確定您的使用者名稱和網域正確無誤,然後再次輸入您的密碼。
若要防止 Windows 儲存密碼的 LM 哈希,請使用下列任何方法。
方法 1:使用組策略實作 NoLMHash 原則
若要停用本機計算機 SAM 資料庫中 WINDOWS XP 或 Windows Server 2003 中使用者密碼的 LM 哈希儲存,請使用本地組原則。 若要停用 Windows Server 2003 Active Directory 環境中用戶密碼的 LM 哈希儲存,請使用 Active Directory 中的組策略。 執行下列步驟:
- 在 [組策略] 中,展開 [計算機設定>] [Windows 設定>安全性設定>本機原則],然後選取 [安全性選項]。
- 在可用的原則清單中,按兩下 [ 網路安全性:不要在下一個密碼變更時儲存 LAN Manager 哈希值]。
- 選取 [已啟用>確定]。
方法 2:編輯登錄以實作 NoLMHash 原則
在 Windows 2000 Service Pack 2 (SP2) 和更新版本中,使用下列其中一個程式來防止 Windows 在下一個密碼變更時儲存 LM 哈希值。
Windows 2000 SP2 和更新版本
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下以下文章編號來檢視 Microsoft 知識庫 文章:
322756 如何在 Windows 中備份和還原登錄
NoLMHash 登錄機碼及其功能未經過測試或記載,且在 Windows 2000 SP2 之前,在生產環境中應該被視為不安全。
若要使用註冊表編輯器新增此機碼,請遵循下列步驟:
啟動註冊表編輯器(Regedt32.exe)。
找出並選取下列機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
在 [編輯] 功能表上,按兩下 [新增按鍵],輸入
NoLMHash
,然後按 Enter。結束登錄編輯程式。
重新啟動電腦,然後變更密碼以啟用設定。
注意
- 您必須在所有 Windows 2000 域控制器上變更此登錄機碼,才能停用 Windows 2000 Active Directory 環境中用戶密碼的 LM 哈希儲存。
- 此登錄機碼可防止在 Windows 2000 計算機上建立新的 LM 哈希。 但它並不清楚先前儲存的 LM 哈希歷程記錄。 當您變更密碼時,將會移除儲存的現有 LM 哈希。
Windows XP 與 Windows Server 2003
重要
這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必小心執行下列步驟。 為增加保護起見,請先備份登錄,再進行修改。 然後,如果發生問題,您就可以還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下以下文章編號來檢視 Microsoft 知識庫 文章:
322756 如何在 Windows 中備份和還原登錄
若要使用註冊表編輯器新增此 DWORD 值,請遵循下列步驟:
選取 [啟動>執行],輸入 regedit,然後按兩下 [確定]。
找出並選取登錄中的下列機碼:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
在 [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]。
輸入
NoLMHash
,然後按 ENTER。在 [編輯] 功能表中,選擇 [修改]。
輸入 1,然後選取 [ 確定]。
重新啟動電腦,然後變更密碼。
注意
- 所有 Windows Server 2003 域控制器上都必須進行此登錄變更,才能停用 Windows 2003 Active Directory 環境中用戶密碼的 LM 哈希儲存。 如果您是網域系統管理員,您可以使用 Active Directory 使用者和電腦 Microsoft Management Console (MMC) 將此原則部署至網域上的所有域控制器或所有計算機,如方法 1(使用組策略實作 NoLMHash 原則中所述)。
- 這個 DWORD 值可防止在 Windows XP 型電腦和 Windows Server 2003 計算機上建立新的 LM 哈希。 當您完成這些步驟時,會清除所有先前 LM 哈希的歷程記錄。
重要
如果您要建立可在 Windows 2000 和 Windows XP 或 Windows Server 2003 上使用的自定義原則範本,您可以同時建立索引鍵和值。 值位於與索引鍵相同的位置,而值 1 會停用 LM 哈希建立。 當 Windows 2000 系統升級至 Windows Server 2003 時,密鑰會升級。 不過,如果這兩個設定都在登錄中,則沒關係。
方法 3:使用長度至少為 15 個字元的密碼
最簡單的方式是使用長度至少 15 個字元的密碼。 在此情況下,Windows 會儲存無法用來驗證使用者的 LM 哈希值。