您可能无法通过使用匿名登录连接到的 SQL Server 实例

文章编号: 839569 - 查看本文应用于的产品
重要本文包含如何帮助降低安全设置或如何关闭计算机上的安全功能为您显示的信息。您可以通过这些更改来解决特定问题。您在进行这些更改之前,我们建议您考虑在您的特定环境中实施该替代方法带来的风险。如果实施该替代方法,采取任何适当的附加措施来帮助保护您的系统。
展开全部 | 关闭全部

概要

当您将添加 NT AUTHORITY\ANONYMOUS 登录登录到您的 Microsoft SQL Server 2000 或 Microsoft SQL Server 2005 实例,以便 SQL Server 实例接受通过 Microsoft Windows 集成安全性的匿名登录,然后尝试连接到 SQL Server 作为匿名用户的实例,连接尝试可能会无法成功并可能会收到以下错误消息:
登录失败,(null) 的用户。原因: 未与受信任的 SQL Server 连接关联。
此外,在系统事件日志中记录以下事件:
事件类型: 错误
事件源: LsaSrv
事件类别: 无
事件 ID: 6033
日期: <date>
时间: <time>
用户: 不适用
计算机: < 计算机名 >
说明:

从连接一个匿名会话 < 计算机名称 > 已尝试打开此计算机上的 LSA 策略句柄。在尝试被拒绝与 STATUS_ACCESS_DENIED 以防止匿名调用方的泄漏安全敏感信息。

做此尝试的应用程序需要修复。请与应用程序供应商联系。作为临时的解决方法可以禁用此安全措施通过设置
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\TurnOffAnonymousBlock
DWORD 值为 1。
当满足下列所有条件都都为真时,会发生此问题:
  • 运行的 Microsoft Windows Server 2003 的计算机上安装的 SQL Server 实例。
  • 正在运行的 SQL Server 实例的计算机是域中的成员服务器。
  • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\TurnOffAnonymousBlock
    丢失或不设置为 1 的注册表值。
  • 网络访问: 允许匿名 SID/名称转换 正在运行的 SQL Server 实例的计算机上的安全选项未启用。

原因

当试图连接到实例 SQL Server 作为匿名用户的匿名连接试图打开 LSA 策略句柄在运行的 SQL Server 实例的计算机上。默认状态下,Windows Server 2003 成员服务器拒绝尝试打开一个 LSA 策略句柄,如果
TurnOffAnonymousBlock
注册表值未设置为 1 的匿名连接尝试。因此,您匿名连接不成功。 此外,SQL Server 接收到匿名连接请求之后,SQL Server 将调用 LookupAccountSid Windows API 函数以获取帐户名称。如果因为匿名连接的上下文中调用该函数时,还失败函数调用该 网络访问: 允许匿名 SID/名称转换 不启用安全选项。

替代方法

警告此替代方法可能会使您的计算机或网络更容易受到恶意用户或恶意软件 (如病毒的攻击。我们不建议使用此替代方法,但提供此信息,以便您可以在您应自行决定实施此替代方法。使用此替代方法需要您自担风险。

要变通解决此问题,请在运行 Windows Server 2003,允许匿名连接 SQL Server 2005 年或 SQL Server 2000 的计算机上按照下列步骤操作:
  1. 启用该 网络访问: 允许匿名 SID/名称转换 本地安全策略中的安全选项。若要这样做,请按照下列步骤操作:
    1. 单击 开始,然后单击 控制面板
    2. 双击 管理工具,然后双击 本地安全策略
    3. 在左窗格中展开 本地策略,然后单击 安全选项
    4. 在右边的窗格在 策略 中列,找到并双击 网络访问: 允许匿名 SID/名称转换
    5. 在该 网络访问: 允许匿名 SID/名称转换 对话框框单击 启用 选项,然后单击 确定
    6. 关闭 本地安全设置 窗口。
    7. 关闭 管理工具 窗口。
  2. TurnOffAnonymousBlock
    DWORD 注册表值设置为 1。若要这样做,请按照下列步骤。

    重要此分区、 方法,或任务包含告诉您如何修改注册表的步骤。但是,如果注册表修改不当可能会出现严重问题。因此,请确保您仔细按照这些步骤。附加的保护注册表之前先备份您对其进行修改。然后,您可以在出现问题时还原注册表。有关如何备份和还原注册表的详细信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
    322756如何备份和还原在 Windows 注册表
    1. 单击 开始、 单击 运行,键入 regedit,然后单击 确定
    2. 在注册表编辑器中找到并单击
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
      注册表项。
    3. 在右窗格中找到并双击
      TurnOffAnonymousBlock
      DWORD 注册表值。

      注意如果不存在
      TurnOffAnonymousBlock
      DWORD 注册表值,则必须创建注册表值。
    4. 编辑 DWORD 值 对话框在 数值数据 框中键入 1,然后单击 确定
    5. 关闭注册表编辑器和 $ 重新启动计算机。重新启动,则所必需的注册表更改生效。
注意默认状态下,该 网络访问: 允许匿名 SID/名称转换 充当域控制器的计算机上启用了安全选项。但是,工作站和成员服务器上已禁用安全选项。域控制器并不要求
TurnOffAnonymousBlock
注册表项来控制匿名连接尝试。因此,如果运行的 Windows Server 2003 的域控制器上安装了您的实例的 SQL Server,匿名连接尝试的 SQL Server 实例不会会失败。

更多信息

在运行 Windows Server 2003 的计算机,安全检查试图访问该计算机的匿名连接上执行的是更严格。如果您创建正在运行 Microsoft Internet Information Services (IIS) 6.0 在 Web 服务器上使用 Windows 身份验证和模拟的 Microsoft ASP.NET 网页,但您不能委派的用户帐户试图从 ASP.NET 页连接到远程 SQL Server 实例是 NT AUTHORITY\ANONYMOUS 登录登录的安全上下文中。您可以配置您的实例的 SQL Server 接受匿名连接通过 Windows Integrated 安全机制,通过添加 NT AUTHORITY\ANONYMOUS LOGON 登录 SQL Server 的用户身份和通过向用户授予所需的权限。当您将添加 NT AUTHORITY\ANONYMOUS 登录登录到 SQL Server 您份匿名连接不提供任何登录凭据的情况下可以访问 SQL Server 数据。

重要我们建议不要允许匿名访问 SQL Server。授予对 NT AUTHORITY\ANONYMOUS 登录登录的所有权限可以被任何用户都可以连接到运行 SQL Server 的计算机都使用。如果您必须允许匿名访问您的实例的 SQL Server,我们建议只有读取的权限授予 NT AUTHORITY\ANONYMOUS 登录登录以查看您要公开可 SQL Server 数据。 此外,建议只执行权限被授予 SQL Server 存储过程的执行有限的操作的程序。

而不是的允许匿名连接的 SQL Server 您实例,您可以授予到特定 SQL Server 帐户所需的访问权限和在 ASP.NET 中的连接字符串中传递 SQL Server 帐户的登录凭据页。使用 SQL Server 身份验证可以避免的 SQL Server 实例在匿名连接的尝试,并更安全。

如果该 网络访问: 允许匿名 SID/名称转换 正在运行 Windows Server 2003 的计算机上启用了安全选项,可以建立网络连接到计算机的所有用户可以都查找帐户名称的任何已知的安全标识 (SID) 如管理员帐户。通过使用如密码猜测方法连接到服务器,或失败的登录尝试使用帐户锁定,恶意攻击者可能会使用此信息。

如果将
TurnOffAnonymousBlock
注册表值的值设置为 1,匿名连接的本地安全机构打开该策略的句柄。LSA 策略有关的详细信息,请访问以下 MSDN 网站:
http://msdn2.microsoft.com/en-us/library/ms721831.aspx
http://msdn2.microsoft.com/en-us/library/ms722489.aspx
http://msdn2.microsoft.com/en-us/library/ms721833.aspx
http://msdn2.microsoft.com/en-us/library/ms721874.aspx

参考

有关诊断连接问题,SQL Server 2000 中的其他信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
827422如何排查 SQL Server 2000 中的连接问题
有关更多的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
247931连接到 SQL Server Active Server Pages 中的连接的身份验证方法

属性

文章编号: 839569 - 最后修改: 2009年2月12日 - 修订: 3.0
这篇文章中的信息适用于:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2000 标准版
关键字:?
kbmt kbprb kbhowto kbclientserver kberrmsg kbuser kbusage kbconfig kbregistry kbsecurity KB839569 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 839569
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈