Everyone 组不包括匿名安全标识符

文章翻译 文章翻译
文章编号: 278259 - 查看本文应用于的产品
重要说明:本文包含有关修改注册表的信息。修改注册表之前,一定要先进行备份,并且一定要知道在出现问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
256986 高级用户的 Windows 注册表信息
展开全部 | 关闭全部

本文内容

概要

在 Microsoft Windows XP 和 Microsoft Windows Server 2003 中,Everyone 组不包含“匿名”安全标识符 (SID)。因此,如果某个对象的访问控制列表 (ACL) 中包括 Everyone 组,则尝试以匿名方式访问该对象的用户或服务将不能获得访问权限。只有那些 ACL 中明确包含匿名 SID 的对象才会获得匿名访问权限。

更多信息

在运行 Windows 的计算机上,ACL 和 SID 控制着对资源的访问。每种资源都有一个 ACL,其中包含所有能够或不能访问该资源的用户和组的 SID。

当用户登录到运行 Windows 的计算机时,无论是以交互方式访问还是通过网络访问,他们都会得到一个访问令牌,其中包含用户帐户的 SID 和用户帐户所属的所有安全组的 SID。当用户试图访问某个资源时,Windows 会将用户访问令牌中的 SID 与该资源的 ACL 中的 SID 进行对照检查。如果 SID 相匹配,则会根据 ACL 向用户授予指定的访问权限。如果 SID 不匹配,则将拒绝用户访问。

匿名用户(使用空用户帐户名、域名和密码通过网络连接访问资源的用户或服务)会被自动添加到内置的 Anonymous Logon 安全组。在早期版本的 Windows 中,Anonymous Logon 安全组的成员能够访问很多资源。在某些情况下,如果管理员不知道 Everyone 安全组包括 Anonymous Logon 安全组的成员,则可能会授予匿名用户对资源的访问权限,而这些访问权限应该仅提供给经身份验证的用户。

在 Windows XP 和更高版本中,Anonymous Logon 安全组已经从 Everyone 安全组中删除。这种修改有助于限制匿名用户默认可访问的网络资源数,并帮助简化网络管理员对匿名用户访问的控制。由于 Everyone 组不再包括匿名用户,因此管理员可以更轻松地配置安全系统,原因如下:
  • 在 Windows 的早期版本(尤其是 Windows NT 4.0)中,默认 ACL 允许 Everyone 安全组访问资源并可能让网站受到攻击,而将计算机升级到 Windows XP 之后,默认 ACL 将不会向匿名用户授予访问权限。
  • 不会授予匿名用户访问管理员不清楚的资源的权限。
  • 通过明确指定 Anonymous Logon 安全组,可以显式授予匿名用户对特定资源的访问权限。
注意:此安全增强只存在于运行 Windows XP 或更高版本的计算机上。因此,只有尝试访问正在运行 Windows XP 或更高版本的计算机上承载的资源的匿名用户会受到影响。

实现

警告:注册表编辑器使用不当可能导致严重问题,可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。
若要实现此安全增强,您必须更改为匿名用户生成的访问令牌的内容。在早期版本的 Windows 中,匿名用户的访问令牌包含以下项的 SID:
  • Everyone 安全组
  • Anonymous Logon 安全组
  • 登录类型(通常为“网络”)
在 Windows XP 和更高版本中,已从匿名用户的访问令牌中删除 Everyone 安全组。因此,匿名用户的访问令牌包含以下项的 SID:
  • Anonymous Logon
  • 登录类型(通常为“网络”)
当匿名用户试图访问正在运行 Windows XP 或更高版本的计算机上的资源时,不会向匿名用户授予 Everyone 安全组的权限或组成员身份。匿名用户的访问令牌中包含 Everyone 安全组的 SID。

与早期版本 Windows 的兼容性

Windows 2000 引入了一种将建议的严格安全设置更改为以下安全设置的机制:授予一些匿名用户访问在早期操作系统版本上运行的服务所需的 Active Directory 对象的权限。由于 Windows XP 中的安全增强,Windows 2000 机制的工作方式有了一些细小的更改。

与 Windows NT 4.0 和早期版本的操作系统中提供的安全设置相比,Windows 2000 引入了更加严格的默认安全设置。为了与需要匿名访问某些域数据的服务兼容,Windows 2000 提供了一种在高安全性设置(不需要向后兼容性时的首选配置)和向后兼容的安全设置之间进行切换的方式,向后兼容的安全设置可向匿名用户授予运行 Windows NT 4.0 和早期版本 Windows 的系统所需的访问权限。

Windows 2000 中引入的 Pre-Windows 2000 Compatible Access 安全组控制着此安全选择。通过使 Everyone 安全组成为 Pre-Windows 2000 Compatible Access 安全组的成员,可在运行 Windows 2000 的计算机上获得向后兼容性。通过删除 Pre-Windows 2000 Compatible Access 组中的所有成员可以配置高安全性设置。

在 Windows Server 2003 域控制器中,Everyone 组不再包括 Anonymous Logon。因此,向后兼容性设置要求 Everyone 安全组和 Anonymous Logon 安全组都属于 Pre-Windows 2000 Compatible Access 组的成员。若要满足此要求,请使用下面两种方法之一:
  • 如果您通过使用 Active Directory 提升向导 (Dcpromo.exe) 将运行 Windows Server 2003 的计算机提升为域控制器,请单击“与 Windows 2000 之前的服务器兼容的权限”以将 Anonymous Logon 安全组和 Everyone 安全组添加到 Pre-Windows 2000 Compatible Access 安全组。
  • 如果您将基于 Windows 2000 的域控制器升级到 Windows XP,并且 Everyone 安全组已经是 Pre-Windows 2000 Compatible Access 安全组(指示向后兼容性设置)成员,则在升级过程中会将 Anonymous Logon 安全组添加到 Pre-Windows 2000 Compatible Access 安全组。
通过使用 Active Directory 用户和计算机管理单元来更新 Pre-Windows 2000 Compatible Access 安全组的成员身份,您可以手动切换针对 Active Directory 对象的向后兼容性设置和高安全性设置。

用于 Windows 2000 的程序的兼容性

将 Windows 2000 升级到 Windows XP 之后,在 ACL 中向 Everyone 组授予访问权限但未向 Anonymous Logon 组显式授予访问权限的资源对匿名用户不再可用。在大多数情况下,这是对匿名访问的合适限制。但是,您可能需要允许匿名访问这些资源以支持以前存在的程序。在这种情况下,应将 Anonymous Logon 安全组显式添加到特定资源的 ACL 中。

在某些情况下,您可能很难确定必须对运行 Windows XP 的计算机上的哪些资源授予匿名访问权限。另外,修改所有这些必需资源的权限也可能会很困难。

在这些情况下,您可能需要强制使运行 Windows XP 的计算机在 Everyone 安全组中包括 Anonymous Logon 安全组。为了支持此功能,Windows XP 引入了一个新的注册表值 EveryoneIncludesAnonymous。此值可用于在默认 Windows XP 行为(Everyone 安全组不包括 Anonymous Logon 安全组)与 Windows 2000 行为(Everyone 安全组包括 Anonymous Logon 安全组)之间进行切换。

当生成匿名用户的访问令牌时,如果 EveryoneIncludesAnonymous 注册表值设置为 REG_DWORD 0x0 值,则运行 Windows XP 的计算机的本地安全机构 (LSA) 将不会在匿名用户的访问令牌中包括 Everyone 安全组的 SID。这是默认设置。

如果 EveryoneIncludesAnonymous 注册表值设置为 REG_DWORD 0x1 值,则 LSA 将在匿名用户的访问令牌中包括 Everyone 安全组的 SID。

若要设置 EveryoneIncludesAnonymous 注册表值,请使用以下两种方法之一:
  • 通过使用本地安全设置来设置 EveryoneIncludesAnonymous 注册表值:
    1. 单击“开始”,依次指向“程序”和“管理工具”,然后单击“本地安全策略”或“域安全策略”(仅针对域控制器)。
    2. 单击“安全设置”,再双击“本地策略”,然后单击“安全选项”。
    3. 右键单击“将 Everyone 权限应用于匿名用户”,然后单击“属性”。
    4. 若要使匿名用户成为 Everyone 安全组的成员,请单击“已启用”。若要禁止在匿名用户的访问令牌中包括 Everyone 安全组 SID(Windows XP 中的默认设置),请单击“已禁用”。
  • 通过使用注册表编辑器设置 EveryoneIncludesAnonymous 注册表值:
    1. 单击“开始”,单击“运行”,键入 regedit,然后单击“确定”。
    2. 找到并单击下面的注册表项:
      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa
    3. 右键单击“EveryoneIncludesAnonymous”,然后单击“修改”。
    4. 若要使匿名用户成为 Everyone 安全组的成员,请在“数值数据”框中键入 1。若要禁止在匿名用户的访问令牌中包括 Everyone 安全组 SID(Windows XP 中的默认设置),请在“数值数据”框中键入 0
    5. 退出注册表编辑器。
注意:此更改会影响到下列基于 Windows 的技术:Com、Dcom、IIS、消息队列和任何其他频繁使用匿名身份验证的技术。

属性

文章编号: 278259 - 最后修改: 2008年1月29日 - 修订: 4.2
这篇文章中的信息适用于:
  • Microsoft Windows Server 2003, 64-Bit Datacenter Edition
  • Microsoft Windows Server 2003, Enterprise x64 Edition
  • Microsoft Windows Server 2003 Datacenter Edition
  • Microsoft Windows Server 2003 Enterprise Edition
  • Microsoft Windows Server 2003 Standard Edition
  • Microsoft Windows Server 2003 Web Edition
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional Edition
关键字:?
kbinfo kbacl KB278259
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com