如何启用 NTLM 2 身份验证

本文介绍如何启用 NTLM 2 身份验证。

适用于:Windows 10 - 所有版本
原始 KB 数: 239869

摘要

从历史上看,Windows NT支持网络登录的质询/响应身份验证的两种变体:

  • LAN Manager (LM) 质询/响应
  • Windows NT质询/响应 (也称为 NTLM 版本 1 质询/响应) LM 变体允许与已安装的 Windows 95、Windows 98 和 Windows 98 第二版客户端和服务器的互操作性。 NTLM 为Windows NT客户端和服务器之间的连接提供了更高的安全性。 Windows NT还支持 NTLM 会话安全机制,该机制提供消息机密性 (加密) 和完整性 (签名) 。

计算机硬件和软件算法的最新改进使这些协议容易受到广泛发布的攻击,以获取用户密码。 在不断努力为客户提供更安全的产品时,Microsoft 开发了一种名为 NTLM 版本 2 的增强功能,可显著改进身份验证和会话安全机制。 自 Service Pack 4 (SP4) 发布以来,NTLM 2 已可用于 Windows NT 4.0,并且它在 Windows 2000 中本机受支持。 可以通过安装 Active Directory 客户端扩展将 NTLM 2 支持添加到 Windows 98。

升级基于 Windows 95、Windows 98、Windows 98 Second Edition 和 Windows NT 4.0 的所有计算机后,可以通过将客户端、服务器和域控制器配置为仅使用 NTLM 2 (而不使用 LM 或 NTLM) ,大大提高组织的安全性。

更多信息

在运行 Windows 98 的计算机上安装 Active Directory 客户端扩展时,也会自动安装提供 NTLM 2 支持的系统文件。 这些文件是 Secur32.dll、Msnp32.dll、Vredir.vxd 和 Vnetsup.vxd。 如果删除 Active Directory 客户端扩展,则不会删除 NTLM 2 系统文件,因为这些文件同时提供增强的安全功能和与安全相关的修补程序。

默认情况下,NTLM 2 会话安全加密限制为最大密钥长度 56 位。 如果系统满足美国导出法规,则会自动安装对 128 位密钥的可选支持。 若要启用 128 位 NTLM 2 会话安全支持,必须在安装 Active Directory 客户端扩展之前安装 Microsoft Internet Explorer 4.x 或 5 并升级到 128 位安全连接支持。

若要验证安装版本,请:

  1. 使用 Windows 资源管理器在 %SystemRoot%\System 文件夹中找到 Secur32.dll 文件。
  2. 右键单击该文件,然后单击“属性”
  3. 单击“ 版本 ”选项卡。56 位版本的说明为“Microsoft Win32 安全服务 (导出版本) ”。128 位版本的说明是“Microsoft Win32 安全服务 (仅限美国和加拿大) ”。

在为 Windows 98 客户端启用 NTLM 2 身份验证之前,请验证从这些客户端登录到网络的用户的所有域控制器是否都运行Windows NT 4.0 Service Pack 4 或更高版本。 (如果客户端和服务器已加入不同的域,则域控制器可以运行 Windows NT 4.0 Service Pack 6。) 无需域控制器配置即可支持 NTLM 2。 必须仅将域控制器配置为禁用对 NTLM 1 或 LM 身份验证的支持。

为 Windows 95、Windows 98 或 Windows 98 Second Edition 客户端启用 NTLM 2

重要

此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,请务必严格按照这些步骤操作。 为了加强保护,应先备份注册表,再进行修改。 如果出现问题,可以还原注册表。 有关如何备份和还原注册表的更多信息,请单击下面的文章编号查看 Microsoft 知识库中相应的文章:
322756 如何在 Windows 中备份和还原注册表

若要启用 Windows 95、Windows 98 或 Windows 98 Second Edition 客户端进行 NTLM 2 身份验证,请安装目录服务客户端。 若要在客户端上激活 NTLM 2,请执行以下步骤:

  1. 启动注册表编辑器 (Regedit.exe) 。

  2. 找到并单击注册表中的以下项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control

  3. 在上面列出的注册表项中创建 LSA 注册表项。

  4. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:
    值名称:LMCompatibility
    数据类型:REG_DWORD
    数值:3
    有效范围:0,3
    说明:此参数指定用于网络登录的身份验证和会话安全模式。 它不会影响交互式登录。

    • 级别 0 - 发送 LM 和 NTLM 响应;切勿使用 NTLM 2 会话安全性。 客户端将使用 LM 和 NTLM 身份验证,并且永远不会使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。

    • 级别 3 - 仅发送 NTLM 2 响应。 如果服务器支持,客户端将使用 NTLM 2 身份验证并使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。

    注意

    若要为 Windows 95 客户端启用 NTLM 2,请安装分布式文件系统 (DFS) 客户端、WinSock 2.0 更新和 Microsoft DUN 1.3 for Windows 2000。

  5. 退出注册表编辑器。

注意

对于 Windows NT 4.0 和 Windows 2000,注册表项为 LMCompatibilityLevel,而对于基于 Windows 95 和 Windows 98 的计算机,注册键为 LM 兼容性。

作为参考,Windows NT 4.0 和 Windows 2000 支持的 LMCompatibilityLevel 值的完整范围包括:

  • 级别 0 - 发送 LM 和 NTLM 响应;切勿使用 NTLM 2 会话安全性。 客户端使用 LM 和 NTLM 身份验证,并且从不使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • 级别 1 - 如果协商,请使用 NTLM 2 会话安全性。 客户端使用 LM 和 NTLM 身份验证,并使用 NTLM 2 会话安全性(如果服务器支持);域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • 级别 2 - 仅发送 NTLM 响应。 客户端仅使用 NTLM 身份验证,如果服务器支持,则使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • 级别 3 - 仅发送 NTLM 2 响应。 客户端使用 NTLM 2 身份验证,并使用 NTLM 2 会话安全性(如果服务器支持);域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • 级别 4 - 域控制器拒绝 LM 响应。 客户端使用 NTLM 身份验证,并使用 NTLM 2 会话安全性(如果服务器支持);域控制器拒绝 LM 身份验证 (即它们接受 NTLM 和 NTLM 2) 。
  • 级别 5 - 域控制器拒绝 LM 和 NTLM 响应 (仅接受 NTLM 2) 。 客户端使用 NTLM 2 身份验证,如果服务器支持,请使用 NTLM 2 会话安全性;域控制器拒绝 NTLM 和 LM 身份验证, (它们仅接受 NTLM 2) 。客户端计算机只能使用一个协议与所有服务器通信。 例如,不能将其配置为使用 NTLM v2 连接到基于 Windows 2000 的服务器,然后使用 NTLM 连接到其他服务器。 这是设计使然的。

可以通过修改以下注册表项来配置用于使用 NTLM 安全支持提供程序的程序 (SSP) 的最低安全性。 这些值依赖于 LMCompatibilityLevel 值:

  1. 启动注册表编辑器 (Regedit.exe) 。

  2. 在注册表中找到以下项: HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\LSA\MSV1_0

  3. 在“编辑”菜单上,单击“添加值”,然后添加以下注册表值:
    值名称:NtlmMinClientSec
    数据类型:REG_WORD
    值:以下值之一:

    • 0x00000010 - 消息完整性
    • 0x00000020 - 消息机密性
    • 0x00080000 - NTLM 2 会话安全性
    • 0x20000000-128 位加密
    • 0x80000000- 56 位加密
  4. 退出注册表编辑器。

如果客户端/服务器程序使用 NTLM SSP (或使用安全的远程过程调用 [RPC](该调用使用 NTLM SSP) 为连接提供会话安全性),则确定要使用的会话安全性类型,如下所示:

  • 客户端请求以下任何或所有项:消息完整性、消息机密性、NTLM 2 会话安全性以及 128 位或 56 位加密。
  • 服务器会做出响应,指示请求集所需的项。
  • 据说最终的一套是“谈判的”。

可以使用 NtlmMinClientSec 值使客户端/服务器连接协商给定的会话安全质量,或者不成功。 但是,应注意以下各项:

  • 如果将 0x00000010 用于 NtlmMinClientSec 值,则如果未协商消息完整性,则连接不会成功。
  • 如果将 0x00000020 用于 NtlmMinClientSec 值,则如果未协商消息机密性,则连接不会成功。
  • 如果将 0x00080000 用于 NtlmMinClientSec 值,则如果未协商 NTLM 2 会话安全性,则连接不会成功。
  • 如果将 0x20000000 用于 NtlmMinClientSec 值,则如果在使用消息机密性,但未协商 128 位加密,则连接不会成功。