如何启用 NTLM 2 身份验证

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

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

总结

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

  • LAN 管理器 (LM) 质询/响应
  • Windows NT 质询/响应(也称为 NTLM 版本 1 质询/响应)LM 变体允许与已安装的 Windows 95、Windows 98 和 Windows 98 Second Edition 客户端和服务器的互操作性。 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 中的注册表

若要为 NTLM 2 身份验证启用 Windows 95、Windows 98 或 Windows 98 Second Edition 客户端,请安装目录服务客户端。 若要在客户端上激活 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,客户端将使用 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 的计算机,注册密钥为 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,则使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • 级别 3 - 仅发送 NTLM 2 响应。 客户端使用 NTLM 2 身份验证,如果服务器支持 NTLM 2 会话安全性,请使用 NTLM 2 会话安全性;域控制器接受 LM、NTLM 和 NTLM 2 身份验证。
  • - 级别 4 域控制器拒绝 LM 响应。 客户端使用 NTLM 身份验证,如果服务器支持 NTLM,则使用 NTLM 2 会话安全性;域控制器拒绝 LM 身份验证(即接受 NTLM 和 NTLM 2)。
  • 级别 5 - 域控制器拒绝 LM 和 NTLM 响应(仅接受 NTLM 2)。 客户端使用 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 会话安全性,则连接不会成功。
  • 如果对 NtlmMinClientSec 值使用0x20000000,则消息保密性使用但未协商 128 位加密,则连接不会成功。