本文提供了一个解决方案,用于解决尝试使用其 FQDN 或其 CNAME 别名在本地访问服务器时发生的错误。
原始 KB 数: 926642
注意
本文包含的信息向你介绍了如何在计算机上降低安全设置或关闭安全功能。 您可以通过这些更改来解决特定的问题。 在实施这些更改之前,建议您对在特定环境中实施此解决方法可能带来的风险进行评估。 如果实现此解决方法,请采取任何适当的其他步骤来帮助保护系统。
现象
请考虑以下场景。 在基于 Windows Server 2003 的计算机上安装 Microsoft Windows Server 2003 Service Pack 1 (SP1)。 执行此操作后,当你尝试使用其完全限定的域名(FQDN)或其 CNAME 别名(UNC)路径:\*servername sharename* 在本地访问服务器时,会遇到身份验证问题。
在此方案中,你将遇到以下症状之一:
- 你会收到重复登录窗口。
- 收到“拒绝访问”错误消息。
- 收到“未接受给定网络路径的网络提供程序”错误消息。
- 事件 ID 537 记录在安全事件日志中。
注意
可以使用服务器 FQDN 或其 CNAME 别名从安装了 Windows Server 2003 SP1 的计算机上以外的网络中的其他计算机访问服务器。 此外,还可以使用以下路径访问本地计算机上的服务器:
- \iPaddress-of-local-computer
- \Netbiosname 或 \ComputerName
原因
出现此问题的原因是 Windows Server 2003 SP1 包含名为环回检查功能的新安全功能。 默认情况下,在 Windows Server 2003 SP1 中打开环回检查功能,DisableLoopbackCheck 注册表项的值设置为 0(零)。
注意
环回检查功能存储在注册表子项中: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\DisableLoopbackCheck
解决方法
重要
此部分(或称方法或任务)介绍了修改注册表的步骤。 但是,注册表修改不当可能会出现严重问题。 因此,按以下步骤操作时请务必谨慎。 作为额外保护措施,请在修改注册表之前先将其备份。 如果之后出现问题,您就可以还原注册表。 有关如何备份和还原注册表的详细信息,请参阅:如何备份和还原 Windows 中的注册表。
注意
此解决方法可能会使计算机或网络更容易受到恶意用户或恶意软件(如病毒)的攻击。 我们不建议您采用这种替代方法,此信息仅供参考,您应自行决定是否实施此替代方法。 如果使用此解决方法,需自行承担风险。
若要解决此问题,请将 DisableStrictNameChecking 注册表项设置为 1。 然后根据情况使用以下任一方法。
方法 1(建议):创建可在 NTLM 身份验证请求中引用的本地安全机构主机名
为此,请对客户端计算机上的所有节点执行以下步骤:
-
单击“开始”,再单击“运行”,键入“regedit& ”,然后单击“确定”。
-
找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0 -
右键单击MSV1_0,指向“新建**”**,然后单击“多字符串值”。
-
在 “名称” 列中,键入 BackConnectionHostNames,然后按 Enter。
-
右键单击 BackConnectionHostNames,然后单击“修改”。
-
在 “值 ”数据框中,键入用于计算机上的本地共享的 CNAME 或 DNS 别名,然后单击“ 确定”。
注意
- 在单独的行中键入每个主机名。
- 如果 BackConnectionHostNames 注册表项作为REG_DWORD类型存在,则必须删除 BackConnectionHostNames 注册表项。
-
退出注册表编辑器,然后重启计算机。
方法 2:禁用身份验证环回检查
通过将子项中的 DisableLoopbackCheck 注册表项设置为 1,重新启用 Windows Server 2003 中 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa registry 存在的行为。 若要将 DisableLoopbackCheck 注册表项设置为 1,请在客户端计算机上执行以下步骤:
- 单击“开始”,再单击“运行”,键入“regedit& ”,然后单击“确定”。
- 找到并单击下面的注册表子项:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa - 右键单击 Lsa,指向“新建**”,然后单击“DWORD** 值”。
- 键入 DisableLoopbackCheck,然后按 Enter。
- 右键单击 DisableLoopbackCheck,然后单击“ 修改”。
- 在“数值数据”框中,键入 1,然后单击“确定”。
- 退出注册表编辑器。
- 重新启动计算机。
注意
必须重启服务器才能使此更改生效。 默认情况下,在 Windows Server 2003 SP1 中打开环回检查功能,DisableLoopbackCheck 注册表项设置为 0(零)。 禁用身份验证环回检查时,安全性会降低,并且打开 Windows Server 2003 服务器进行中间人(MITM)攻击 NTLM。
Status
Microsoft已确认,本文开头列出的Microsoft产品中存在此问题。
详细信息
安装安全更新957097后,发出本地 NTLM 身份验证请求时,SQL Server 或 Internet Information Services(IIS)等应用程序可能会失败。
有关如何解决此问题的详细信息,请参阅知识库文章 957097的“此安全更新的已知问题”部分。