如何启用 NTLM 2 身份验证

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

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

摘要

过去,Windows NT网络登录支持两种质询/响应身份验证变体:

  • LAN 管理器 (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,2000 年本地支持 NTLM 2 Windows。 通过安装 Active Directory 客户端扩展,Windows NTLM 2 支持添加到 Windows 98。

升级基于 Windows 95、Windows 98、Windows 98 第二版和 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 会话安全支持,必须先安装 Microsoft Internet Explorer 4.x 或 5,然后升级到 128 位安全连接支持,然后才能安装 Active Directory 客户端扩展。

验证安装版本:

  1. 使用Windows资源管理器在 %SystemRoot%\System Secur32.dll查找文件。
  2. 右键单击该文件,然后单击“属性”。
  3. 单击" 版本" 选项卡。56 位版本的说明是"Microsoft Win32 Security Services (Export Version) "。 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 身份验证的支持。

为 95 Windows 95、Windows 98 或 Windows 98 第二版客户端启用 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 身份验证并使用 NTLM 2 会话安全;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。

    备注

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

  5. 退出注册表编辑器。

备注

对于 Windows NT 4.0 和 Windows 2000,注册表项为 LMCompatibilityLevel,对于基于 Windows 95 和 Windows 98 的计算机,注册表项为 LMCompatibility。

为参考,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 位加密时,连接不会成功。