
Active Directory Basics
1. Windows Domains
想象一下您正在管理一个只有五台计算机和五名员工的小型企业网络。在如此小的网络中,您可能能够毫无问题地单独配置每台计算机。您将手动登录每台计算机,为使用它们的人员创建用户,并为每个员工的帐户进行特定配置。如果用户的计算机停止工作,您可能会去他们的地方并现场修复计算机。 虽然这听起来像是一种非常轻松的生活方式,但让我们假设您的业务突然增长,现在拥有 157 台计算机和分布在四个不同办公室的 320 名不同用户。您是否仍然能够将每台计算机作为单独的实体进行管理,为网络上的每个用户手动配置策略并为每个人提供现场支持?答案很可能是否定的。 为了克服这些限制,我们可以使用 Windows 域。简而言之,Windows 域是给定企业管理下的一组用户和计算机。域背后的主要思想是将 Windows 计算机网络的常见组件的管理集中到称为 Active Directory (AD) 的单个存储库中。运行 Active Directory 服务的服务器称为域控制器 (DC)。

配置 Windows 域的主要优点是:
集中身份管理:网络上的所有用户都可以轻松地从 Active Directory 进行配置。 管理安全策略:您可以直接从 Active Directory 配置安全策略,并根据需要将它们应用到网络上的用户和计算机。
(1)一个现实世界的例子
如果这听起来有点令人困惑,那么您很可能已经在学校、大学或工作中的某个时刻与 Windows 域进行过交互。 在学校/大学网络中,您通常会获得一个用户名和密码,您可以在校园内的任何计算机上使用它们。您的凭据对所有计算机都有效,因为每当您在计算机上输入它们时,它都会将身份验证过程转发回 Active Directory,并在其中检查您的凭据。借助 Active Directory,您的凭据无需存在于每台计算机中,并且可以在整个网络中使用。 Active Directory 也是允许您的学校/大学限制您访问学校/大学计算机上的控制面板的组件。策略通常会部署在整个网络中,以便您对这些计算机没有管理权限。
2.Active Directory
任何 Windows 域的核心都是 Active Directory 域服务 (AD DS)。该服务充当目录,保存网络上存在的所有“对象”的信息。在AD支持的众多对象中,有用户、组、机器、打印机、共享等等。让我们看看其中的一些:
Users
用户是 Active Directory 中最常见的对象类型之一。用户是被称为安全主体的对象之一,这意味着他们可以通过域进行身份验证,并且可以被分配对文件或打印机等资源的权限。您可以说安全主体是一个可以对网络中的资源进行操作的对象。 用户可以用来表示两种类型的实体:
- 人员:用户通常代表组织中需要访问网络的人员,例如员工。
- 服务:您还可以定义供 IIS 或 MSSQL 等服务使用的用户。每个服务都需要用户来运行,但服务用户与普通用户不同,因为他们只拥有运行特定服务所需的权限。
Machines
机器是 Active Directory 中的另一种对象;对于加入 Active Directory 域的每台计算机,都会创建一个计算机对象。机器也被视为“安全主体”,并像任何普通用户一样被分配一个帐户。该帐户在域本身内的权限有些有限。 计算机帐户本身是指定计算机上的本地管理员,除了计算机本身之外,通常不应该由任何人访问它们,但与任何其他帐户一样,如果您有密码,则可以使用它来登录。 注意:机器帐户密码会自动轮换,通常由 120 个随机字符组成。 识别机器帐户相对容易。它们遵循特定的命名方案。计算机帐户名称是计算机名称后跟美元符号。例如,名为 DC01 的计算机将有一个名为 DC01$ 的计算机帐户。
Security Groups
如果您熟悉 Windows,您可能知道可以定义用户组,将文件或其他资源的访问权限分配给整个组而不是单个用户。这可以实现更好的可管理性,因为您可以将用户添加到现有组,并且他们将自动继承该组的所有权限。安全组也被视为安全主体,因此可以对网络上的资源拥有特权。 组可以同时包含用户和计算机作为成员。如果需要,组也可以包括其他组。 默认情况下,域中会创建多个组,可用于向用户授予特定权限。例如,以下是域中一些最重要的组:
Security Group | Description |
---|---|
Domain Admins | Users of this group have administrative privileges over the entire domain. By default, they can administer any computer on the domain, including the DCs. |
Server Operators | Users in this group can administer Domain Controllers. They cannot change any administrative group memberships. |
Backup Operators | Users in this group are allowed to access any file, ignoring their permissions. They are used to perform backups of data on computers. |
Account Operators | Users in this group can create or modify other accounts in the domain. |
Domain Users | Includes all existing user accounts in the domain. |
Domain Computers | Includes all existing computers in the domain. |
Domain Controllers | Includes all existing DCs on the domain. |
您可以从 Microsoft 文档获取默认安全组的完整列表。
Active Directory 用户和计算机
要在 Active Directory 中配置用户、组或计算机,我们需要登录域控制器并从开始菜单运行“Active Directory 用户和计算机”:

这将打开一个窗口,您可以在其中查看域中存在的用户、计算机和组的层次结构。这些对象按组织单位 (OU) 进行组织,组织单位是允许您对用户和计算机进行分类的容器对象。 OU 主要用于定义具有相似监管要求的用户组。例如,组织销售部门的人员可能会应用与 IT 人员不同的策略集。请记住,用户一次只能是单个 OU 的一部分。 检查我们的机器,我们可以看到已经有一个名为 THM 的 OU,其中有四个子 OU,分别用于 IT、管理、营销和销售部门。组织单位模仿业务结构是很常见的,因为它允许有效地部署适用于整个部门的基线策略。请记住,虽然这在大多数情况下是预期的模型,但您可以任意定义 OU。请随意右键单击 THM OU 并在其下创建一个名为 Students 的新 OU,只是为了好玩。

如果打开任何 OU,您可以看到它们包含的用户并执行简单的任务,例如根据需要创建、删除或修改它们。如果需要,您还可以重置密码(对于帮助台非常有用):

您可能已经注意到,除了 THM OU 之外还有其他默认容器。这些容器由 Windows 自动创建并包含以下内容:
- 内置:包含可供任何 Windows 主机使用的默认组。
- 计算机:默认情况下,任何加入网络的计算机都会放在这里。如果需要,您可以移动它们。
- 域控制器:包含网络中 DC 的默认 OU。
- 用户:适用于域范围上下文的默认用户和组。
- 托管服务帐户:保存 Windows 域中的服务使用的帐户。
Security Groups vs OUs
您可能想知道为什么我们既有组又有 OU。虽然两者都用于对用户和计算机进行分类,但它们的目的完全不同:
- OU 可以方便地将策略应用于用户和计算机,其中包括与用户组相关的特定配置,具体取决于用户在企业中的特定角色。请记住,用户一次只能是单个 OU 的成员,因为尝试对单个用户应用两组不同的策略是没有意义的。
- 另一方面,安全组用于授予对资源的权限。例如,如果您希望允许某些用户访问共享文件夹或网络打印机,您将使用组。一个用户可以属于多个组,这需要授予对多个资源的访问权限。
3. Managing Users in AD
作为新域管理员,您的首要任务是检查现有的 AD OU 和用户,因为最近业务发生了一些变化。您已获得以下组织结构图,并需要对 AD 进行更改以匹配它:

删除额外的 OU 和用户
您应该注意到的第一件事是,您当前的 AD 配置中还有一个未出现在图表中的额外部门 OU。我们被告知它由于预算削减而关闭,应该从域中删除。如果您尝试右键单击并删除 OU,您将收到以下错误:

默认情况下,OU 受到保护,不会被意外删除。要删除 OU,我们需要启用“视图”菜单中的“高级功能”:

这将向您显示一些其他容器,并使您能够禁用意外删除保护。为此,请右键单击 OU 并转到“属性”。您将在“对象”选项卡中找到一个用于禁用保护的复选框:

请务必取消选中该框并再次尝试删除 OU。系统将提示您确认是否要删除该 OU,因此,该 OU 下的任何用户、组或 OU 也将被删除。 删除多余的 OU 后,您应该注意到对于某些部门,AD 中的用户与我们组织结构图中的用户不匹配。根据需要创建和删除用户以匹配他们。
Delegation(授权)
在 AD 中可以做的一件好事就是为特定用户提供对某些 OU 的一定控制权。此过程称为委派,允许您授予用户特定权限以在 OU 上执行高级任务,而无需域管理员介入。 最常见的用例之一是授予 IT 支持重置其他低权限用户密码的权限。根据我们的组织结构图,Phillip 负责 IT 支持,因此我们可能希望将重置销售、营销和管理 OU 密码的控制权委托给他。 对于本示例,我们将对 Sales OU 的控制权委托给 Phillip。要委派对 OU 的控制,您可以右键单击它并选择委派控制:

这将打开一个新窗口,系统将首先询问您要向其委派控制权的用户: 注意:为避免错误输入用户名,请输入“phillip”,然后单击“检查名称”按钮。 Windows 将自动为您补全用户。

单击“确定”,然后在下一步中选择以下选项:

单击“下一步”几次,现在 Phillip 应该能够为销售部门中的任何用户重置密码。虽然您可能希望重复这些步骤来委派营销和管理部门的密码重置,但我们将把它留在这里来完成此任务。如果您愿意,您可以继续配置其余的 OU。 现在让我们使用 Phillip 的帐户来尝试重置 Sophie 的密码。以下是 Phillip 的凭据,供您通过 RDP 登录:
Username | Password |
---|---|
phillip | Claire2008 |
注意:通过 RDP 连接时,请使用 THM\phillip 作为用户名,以指定您要使用 THM 域上的用户 phillip 登录。 虽然您可能很想转到“Active Directory 用户和计算机”来尝试测试 Phillip 的新功能,但他实际上没有打开它的权限,因此您必须使用其他方法来进行密码重置。在本例中,我们将使用 Powershell 来执行此操作:
PS C:\Users\phillip> Set-ADAccountPassword sophie -Reset -NewPassword (Read-Host -AsSecureString -Prompt 'New Password') -Verbose
New Password: *********
VERBOSE: Performing the operation "Set-ADAccountPassword" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".
由于我们不希望 Sophie 继续使用我们知道的密码,因此我们还可以使用以下命令在下次登录时强制重置密码:
PS C:\Users\phillip> Set-ADUser -ChangePasswordAtLogon $true -Identity sophie -Verbose
VERBOSE: Performing the operation "Set" on target "CN=Sophie,OU=Sales,OU=THM,DC=thm,DC=local".
注意:通过 RDP 连接时,使用 THM\sophie 作为用户名来指定您要使用 THM 域上的用户 sophie 登录。
4. Managing Computers in AD
默认情况下,加入域的所有计算机(DC 除外)都将放入名为“Computers”的容器中。如果我们检查我们的 DC,我们会看到一些设备已经存在:

我们可以看到与我们网络中的用户相对应的一些服务器、一些笔记本电脑和一些PC。将我们所有的设备放在那里并不是最好的主意,因为您很可能希望为您的服务器和普通用户日常使用的计算机制定不同的策略。 虽然如何组织机器没有黄金法则,但一个很好的起点是根据设备的用途对其进行隔离。一般来说,您期望看到的设备至少分为以下三个类别:
1. Workstations
工作站是 Active Directory 域中最常见的设备之一。域中的每个用户都可能登录到工作站。这是他们用来完成工作或正常浏览活动的设备。这些设备不应该让特权用户登录。
2. Servers
服务器是 Active Directory 域中第二常见的设备。服务器一般用来为用户或其他服务器提供服务。
3. Domain Controllers
域控制器是 Active Directory 域中第三种最常见的设备。域控制器允许您管理 Active Directory 域。这些设备通常被认为是网络中最敏感的设备,因为它们包含环境中所有用户帐户的哈希密码。 由于我们正在整理 AD,因此我们为工作站和服务器创建两个单独的 OU(域控制器已位于 Windows 创建的 OU 中)。我们将直接在 thm.local 域容器下创建它们。最后,您应该具有以下 OU 结构:

现在,将个人计算机和笔记本电脑从计算机容器移至工作站 OU,将服务器移至服务器 OU。这样做将使我们能够稍后为每个 OU 配置策略。
5.Group Policies
到目前为止,我们将用户和计算机组织在 OU 中只是为了它,但这背后的主要思想是能够为每个 OU 单独部署不同的策略。这样,我们就可以根据用户的部门向他们推送不同的配置和安全基线。 Windows 通过组策略对象 (GPO) 管理此类策略。 GPO 只是可应用于 OU 的设置的集合。 GPO 可以包含针对用户或计算机的策略,允许您在特定计算机和身份上设置基线。 要配置 GPO,您可以使用组策略管理工具(可从开始菜单访问):

打开它时,您首先看到的是完整的 OU 层次结构,如之前所定义。要配置组策略,首先在组策略对象下创建一个 GPO,然后将其链接到要应用策略的 GPO。例如,您可以看到您的计算机中已经存在一些 GPO:

我们可以在上图中看到已经创建了 3 个 GPO。其中,默认域策略和 RDP 策略作为一个整体链接到 thm.local 域,默认域控制器策略仅链接到域控制器 OU。需要记住的重要一点是,任何 GPO 都将应用于链接的 OU 及其下的任何子 OU。例如,销售 OU 仍将受到默认域策略的影响。 让我们检查默认域策略以了解 GPO 内部的内容。选择 GPO 时您将看到的第一个选项卡显示其范围,即 GPO 在 AD 中链接的位置。对于当前策略,我们可以看到它仅链接到 thm.local 域:

正如您所看到的,您还可以将安全过滤应用于 GPO,以便它们仅应用于 OU 下的特定用户/计算机。默认情况下,它们将应用于经过身份验证的用户组,其中包括所有用户/PC。 “设置”选项卡包含 GPO 的实际内容,并让我们知道它应用的具体配置。如前所述,每个 GPO 都有仅适用于计算机的配置和仅适用于用户的配置。在这种情况下,默认域策略仅包含计算机配置:

请随意探索 GPO 并使用每个配置右侧的“显示”链接扩展可用项目。在这种情况下,默认域策略指示应适用于大多数域的真正基本配置,包括密码和帐户锁定策略:

由于此 GPO 适用于整个域,因此对其进行的任何更改都会影响所有计算机。让我们更改最小密码长度策略,要求用户的密码至少包含 10 个字符。为此,右键单击 GPO 并选择编辑:

这将打开一个新窗口,我们可以在其中导航和编辑所有可用配置。要更改最小密码长度,请转至计算机配置 -> 策略 -> Windows 设置 -> 安全设置 -> 帐户策略 -> 密码策略,然后更改所需的策略值:

正如您所看到的,可以在 GPO 中制定大量策略。虽然在一个房间里解释每一项是不可能的,但请随意探索一下,因为有些政策很简单。如果需要有关任何策略的更多信息,您可以双击它们并阅读每个策略的“解释”选项卡:

GPO分布
GPO 通过名为 SYSVOL 的网络共享分发到网络,该共享存储在 DC 中。域中的所有用户通常都应有权通过网络访问此共享,以定期同步其 GPO。默认情况下,SYSVOL 共享指向网络中每个 DC 上的 C:\Windows\SYSVOL\sysvol\ 目录。 对任何 GPO 进行更改后,计算机可能需要长达 2 小时才能跟上。如果您想强制任何特定计算机立即同步其 GPO,您始终可以在所需计算机上运行以下命令:
PS C:\> gpupdate /force
为 THM Inc. 创建一些 GPO
作为新工作的一部分,我们的任务是实施一些 GPO,以便我们能够:
- 阻止非 IT 用户访问控制面板。
- 让工作站和服务器在用户不活动 5 分钟后自动锁定屏幕,以避免人们暴露其会话。
让我们重点关注其中的每一个,并定义我们应该在每个 GPO 中启用哪些策略以及它们应该链接到哪里。
限制对控制面板的访问
我们希望将所有计算机上的控制面板的访问权限限制为仅属于 IT 部门的用户。其他部门的用户不应该能够更改系统的首选项。 让我们创建一个名为“限制控制面板访问”的新 GPO 并将其打开进行编辑。由于我们希望此 GPO 应用于特定用户,因此我们将在“用户配置”下查看以下策略:

请注意,我们已启用禁止访问控制面板和电脑设置策略。 配置 GPO 后,我们需要将其链接到与无权访问其 PC 控制面板的用户相对应的所有 OU。在本例中,我们将通过将 GPO 拖动到每个 OU 来链接营销、管理和销售 OU:

自动锁屏GPO
对于第一个 GPO,关于工作站和服务器的屏幕锁定,我们可以直接将其应用到我们之前创建的工作站、服务器和域控制器 OU 上。 虽然此解决方案应该有效,但替代方案是简单地将 GPO 应用于根域,因为我们希望 GPO 影响我们的所有计算机。由于工作站、服务器和域控制器 OU 都是根域的子 OU,因此它们将继承根域的策略。 注意:您可能会注意到,如果我们的 GPO 应用于根域,它也将被其他 OU(例如销售或营销)继承。由于这些 OU 仅包含用户,因此 GPO 中的任何计算机配置都将被它们忽略。 让我们创建一个新的 GPO,将其命名为“自动锁定屏幕”,然后对其进行编辑。实现我们想要的策略位于以下路线:

我们将不活动限制设置为 5 分钟,以便在任何用户保持会话打开时计算机会自动锁定。关闭 GPO 编辑器后,我们将 GPO 拖动到根域,将其链接到根域:

将 GPO 应用到正确的 OU 后,我们可以以营销、销售或管理中的任何用户身份登录进行验证。对于此任务,让我们使用 Mark 的凭据通过 RDP 进行连接:
Username | Password |
---|---|
Mark | M4rk3t1ng.21 |
注意:通过 RDP 连接时,请使用 THM\Mark 作为用户名,以指定您要使用 THM 域上的用户 Mark 登录。 如果我们尝试打开控制面板,我们应该收到一条消息,指示管理员拒绝此操作。如果需要,您也可以等待 5 分钟检查屏幕是否自动锁定。 由于我们没有在 IT 上应用控制面板 GPO,因此您仍然应该能够以任何用户身份登录计算机并访问控制面板。注意:如果您创建并链接了 GPO,但由于某种原因,它们仍然不起作用,请记住您可以运行 gpupdate /force 来强制更新 GPO。
6.Authentication Methods
使用 Windows 域时,所有凭据都存储在域控制器中。每当用户尝试使用域凭据对服务进行身份验证时,该服务都需要要求域控制器验证它们是否正确。 Windows 域中可以使用两种协议进行网络身份验证:
- Kerberos:由任何最新版本的 Windows 使用。这是任何最近域中的默认协议。
- NetNTLM:出于兼容性目的而保留的旧版身份验证协议。
虽然 NetNTLM 应被视为已过时,但大多数网络都会启用这两种协议。让我们更深入地了解一下这些协议的工作原理。
Kerberos 身份验证
Kerberos 身份验证是任何最新版本的 Windows 的默认身份验证协议。使用 Kerberos 登录服务的用户将被分配票证。将票据视为先前身份验证的证明。拥有票证的用户可以将其呈现给服务,以证明他们之前已经通过网络身份验证,因此能够使用它。 当使用 Kerberos 进行身份验证时,会发生以下过程:
- 用户将使用从其密码派生的密钥加密的用户名和时间戳发送到密钥分发中心 (KDC),该服务通常安装在域控制器上,负责在网络上创建 Kerberos 票证。 KDC 将创建并发回票证授予票证 (TGT),这将允许用户请求额外的票证以访问特定服务。需要票证才能获得更多票证可能听起来有点奇怪,但它允许用户在每次想要连接到服务时请求服务票证,而无需传递其凭据。与 TGT 一起,还将向用户提供会话密钥,用户将需要该会话密钥来生成以下请求。 请注意,TGT 使用 krbtgt 帐户的密码哈希进行加密,因此用户无法访问其内容。必须知道,加密的 TGT 包含会话密钥的副本作为其内容的一部分,并且 KDC 不需要存储会话密钥,因为它可以在需要时通过解密 TGT 来恢复副本。
- 当用户想要连接到网络上的服务(例如共享、网站或数据库)时,他们将使用 TGT 向 KDC 请求票证授予服务 (TGS)。 TGS 是只允许连接到为其创建的特定服务的票证。要请求 TGS,用户将发送其用户名和使用会话密钥加密的时间戳,以及 TGT 和服务主体名称 (SPN),该名称指示我们打算访问的服务和服务器名称。 因此,KDC 将向我们发送 TGS 以及服务会话密钥,我们需要使用该密钥对我们想要访问的服务进行身份验证。 TGS 使用从服务所有者哈希派生的密钥进行加密。服务所有者是运行服务的用户或计算机帐户。 TGS 在其加密内容上包含服务会话密钥的副本,以便服务所有者可以通过解密 TGS 来访问它。
- 然后可以将 TGS 发送到所需的服务以进行身份验证并建立连接。该服务将使用其配置的帐户的密码哈希来解密 TGS 并验证服务会话密钥。

NetNTLM 身份验证
NetNTLM 使用质询-响应机制来工作。整个流程如下:

- 客户端向他们想要访问的服务器发送身份验证请求。
- 服务器生成一个随机数并将其作为质询发送给客户端。
- 客户端将其 NTLM 密码哈希与质询(和其他已知数据)结合起来,生成对质询的响应,并将其发送回服务器进行验证。
- 服务器将质询和响应转发给域控制器进行验证。
- 域控制器使用质询重新计算响应并将其与客户端发送的原始响应进行比较。如果两者匹配,则客户端通过身份验证;否则,访问将被拒绝。认证结果发送回服务器。
- 服务器将认证结果转发给客户端。
请注意,为了安全起见,用户的密码(或哈希值)永远不会通过网络传输。 注意:所描述的过程适用于使用域帐户时。如果使用本地帐户,服务器可以验证对质询本身的响应,而无需与域控制器交互,因为它的 SAM 上本地存储有密码哈希值。
7.Trees, Forests and Trusts
到目前为止,我们已经讨论了如何管理单个域、域控制器的角色以及它如何连接计算机、服务器和用户。

随着公司的发展,他们的网络也在不断发展。对于一家公司来说,拥有一个域名就足够了,但随着时间的推移,一些额外的需求可能会促使您拥有多个域名。
Trees
例如,想象一下,您的公司突然扩展到一个新的国家。新国家/地区有不同的法律和法规,要求您更新 GPO 以遵守。另外,现在你在两个国家都有IT人员,每个IT团队都需要管理每个国家对应的资源,而不干扰其他团队。虽然您可以创建复杂的 OU 结构并使用委派来实现此目的,但拥有庞大的 AD 结构可能难以管理,并且容易出现人为错误。 对我们来说幸运的是,Active Directory 支持集成多个域,以便您可以将网络划分为可以独立管理的单元。如果您有两个共享相同命名空间的域(在我们的示例中为 thm.local),则可以将这些域连接到树中。 如果我们的 thm.local 域被分为英国和美国分支机构的两个子域,您可以构建一棵树,其中根域为 thm.local,两个子域分别为 uk.thm.local 和 us.thm.local,每个子域都有其 AD 、计算机和用户:

这种分区结构使我们能够更好地控制谁可以访问域中的内容。来自英国的IT人员将拥有自己的DC,仅管理英国资源。例如,英国用户将无法管理美国用户。这样,每个分支机构的域管理员将完全控制各自的 DC,但不能控制其他分支机构的 DC。还可以为树中的每个域独立配置策略。 当谈论树木和森林时,需要引入一个新的安全组。企业管理员组将授予用户对企业所有域的管理权限。每个域仍将拥有对其单个域拥有管理员权限的域管理员以及可以控制企业中所有内容的企业管理员。
Forests
您管理的域也可以配置在不同的命名空间中。假设您的公司继续发展并最终收购了另一家名为 MHT Inc. 的公司。当两家公司合并时,您可能会为每个公司拥有不同的域树,每个公司都由自己的 IT 部门管理。将具有不同名称空间的几棵树联合到同一网络中称为森林。

Trust Relationships
在树和森林中组织多个域可以让您在管理和资源方面拥有良好的划分网络。但在某个时刻,THM UK 的用户可能需要访问 MHT ASIA 服务器之一中的共享文件。为此,排列在树和森林中的域通过信任关系连接在一起。 简单来说,域之间建立信任关系允许您授权 THM UK 域中的用户访问 MHT EU 域中的资源。 可以建立的最简单的信任关系是单向信任关系。在单向信任中,如果域 AAA 信任域 BBB,则意味着 BBB 上的用户可以被授权访问 AAA 上的资源:

单向信任关系的方向与访问方向相反。 还可以建立双向信任关系,以允许两个域相互授权对方的用户。默认情况下,加入树或森林下的多个域将形成双向信任关系。 请务必注意,域之间建立信任关系不会自动授予对其他域上所有资源的访问权限。一旦建立了信任关系,您就有机会跨不同域授权用户,但实际授权与否取决于您。

