如何防止 Windows 在 Active Directory 和本機 SAM 資料庫中儲存密碼的 LAN 管理員哈希

本文提供三種方法來防止 Windows 將 LAN Manager (LM) 密碼哈希儲存在 Active Directory 和本機安全性帳戶管理員 (SAM) 資料庫中。

適用於:Windows 10 - 所有版本、Windows Server 2012 R2
原始 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 哈希來提供回溯相容性,則應該防止儲存該哈希。 如果您的網路包含 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 原則

若要在 Windows XP 或 Windows Server 2003 的本機電腦 SAM 資料庫中停用使用者密碼的 LM 哈希儲存,請使用本機 群組原則。 若要在 Windows Server 2003 Active Directory 環境中停用使用者密碼的 LM 哈希儲存,請在 Active Directory 中使用 群組原則。 依照下列步驟執行:

  1. 在 [群組原則] 中,展開 [計算機>設定] [Windows 設定>] [安全性>設定] [本機原則],然後選取 [安全性選項]
  2. 在可用的原則清單中,按兩下 [網路安全性]:不要在下次變更密碼時儲存LAN Manager 哈希值
  3. 取 [已啟用>][確定]

方法 2:藉由編輯登錄來實作 NoLMHash 原則

在 Windows 2000 Service Pack 2 (SP2) 和更新版本中,使用下列其中一個程式來防止 Windows 在下次密碼變更時儲存 LM 哈希值。

Windows 2000 SP2 和更新版本

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下下列文章編號,檢視「Microsoft 知識庫」中的文章:

322756 如何在 Windows 中備份及還原登錄

NoLMHash 登錄機碼及其功能未經過測試或記載,應視為在 Windows 2000 SP2 之前的生產環境中使用不安全。

若要使用登錄 編輯器 來新增此金鑰,請遵循下列步驟:

  1. 啟動登錄 編輯器 (Regedt32.exe) 。

  2. 找出並選擇下列金鑰:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  3. 在 [ 編輯] 功能表上,按兩下 [新增金鑰],輸入 NoLMHash,然後按 Enter。

  4. 結束 [登錄編輯程式]。

  5. 重新啟動電腦,然後變更密碼以啟用設定。

注意事項

  • 必須在所有 Windows 2000 域控制器上進行此登錄機碼變更,以停用在 Windows 2000 Active Directory 環境中儲存使用者密碼的 LM 哈希。
  • 此登錄機碼可防止在 Windows 2000 計算機上建立新的 LM 哈希。 但並不會清除先前儲存的 LM 哈希歷程記錄。 當您變更密碼時,將會移除儲存的現有 LM 哈希。

Windows XP 及 Windows Server 2003

重要事項

這個章節、方法或工作包含修改登錄的步驟。 然而,不當修改登錄可能會發生嚴重的問題。 因此,請務必謹慎地依照這些步驟執行。 為了有多一層保護,請先備份登錄再進行修改。 如此一來,您就可以在發生問題時還原登錄。 如需有關如何備份和還原登錄的詳細資訊,請按一下下列文章編號,檢視「Microsoft 知識庫」中的文章:

322756 如何在 Windows 中備份及還原登錄

若要使用登錄 編輯器 來新增此 DWORD 值,請遵循下列步驟:

  1. 取 [開始>執行],輸入 regedit,然後按兩下 [ 確定]

  2. 找出並選取登錄中的下列機碼:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa

  3. [編輯] 功能表中,指向 [新增],然後按一下 [DWORD 值]

  4. 輸入NoLMHash,然後按下 [Enter]。

  5. 在 [編輯] 功能表中,選擇 [修改]

  6. 輸入 1,然後選取 [ 確定]

  7. 重新啟動電腦,然後變更密碼。

注意事項

  • 必須在所有 Windows Server 2003 域控制器上進行此登錄變更,以停用在 Windows 2003 Active Directory 環境中儲存使用者密碼的 LM 哈希。 如果您是網域系統管理員,您可以使用 Active Directory 使用者和電腦 Microsoft Management Console (MMC) ,將此原則部署到網域上的所有域控制器或所有計算機,如使用 群組原則) 實作 NoLMHash 原則 (方法 1 中所述。
  • 此 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 哈希值。