使用 Active Directory 保护本地计算机帐户

计算机帐户(或 LocalSystem 帐户)是对本地计算机上几乎所有资源具有访问权限的高度特权帐户。 该帐户与已登录的用户帐户不关联。 以 LocalSystem 身份运行的服务通过向远程服务器按格式 <domain_name>\\<computer_name>$ 提供计算机凭据来访问网络资源。 计算机帐户预定义的名称为 NT AUTHORITY\SYSTEM。 可以启动某个服务,并为该服务提供安全性上下文。

Screenshot of a list of local services on a computer account.

使用计算机帐户的优势

计算机帐户具有以下优势:

  • 不受限制的本地访问–计算机帐户提供对计算机本地资源的完全访问权限
  • 自动化密码管理–无需手动更改密码。 此帐户是 Active Directory 的成员,它的密码会自动更改。 使用计算机帐户时,无需注册服务主体名称。
  • 有限的计算机外访问权限–Active Directory 域服务 (AD DS) 中的默认访问控制列表允许对计算机帐户进行有限的访问。 在未经授权的用户访问期间,服务对网络资源的访问权限有限。

计算机帐户安全状况评估

使用下表查看潜在的计算机帐户问题和缓解措施。

计算机帐户问题 缓解操作
在计算机离开并重新加入域时,系统会删除并且重新创建计算机帐户。 确认将计算机添加到 Active Directory 组的要求。 若要验证添加到组的计算机帐户,请使用以下部分中的脚本。
如果你将计算机帐户添加到某个组,则在该计算机上以 LocalSystem 帐户身份运行的服务将获取访问权限。 对计算机帐户组成员身份具有选择性。 不要使计算机帐户成为域管理员组的成员。 关联的服务具有对 AD DS 的完全访问权限。
LocalSystem 的网络默认值不准确。 不要假设计算机帐户对网络资源具有默认的有限访问权限。 反之,请确认帐户的组成员身份。
以 LocalSystem 身份运行的未知服务。 确保在 LocalSystem 帐户下运行的服务都是 Microsoft 服务或受信任服务。

查找服务和计算机帐户

若要查找在计算机账户下运行的服务,请使用以下 PowerShell cmdlet:

Get-WmiObject win32_service | select Name, StartName | Where-Object {($_.StartName -eq "LocalSystem")}

若要查找属于特定组成员的计算机帐户,请运行以下 PowerShell cmdlet:

Get-ADComputer -Filter {Name -Like "*"} -Properties MemberOf | Where-Object {[STRING]$_.MemberOf -like "Your_Group_Name_here*"} | Select Name, MemberOf

若要查找作为标识管理员组的成员的计算机帐户(域管理员、企业管理员和管理员),请运行以下 PowerShell cmdlet:

Get-ADGroupMember -Identity Administrators -Recursive | Where objectClass -eq "computer"

计算机帐户建议

重要

计算机帐户具有高特权,因此请当你的服务需要对计算机上的本地资源进行无限制访问以及你无法使用托管服务帐户 (MSA) 时使用它。

  • 使用 MSA 确认服务所有者的服务运行
  • 使用组托管服务帐户 (gMSA),或独立托管服务帐户 (sMSA)(如果你的服务支持它)
  • 使用具有运行服务所需权限的域用户账户

后续步骤

若要详细了解如何保护服务帐户,请参阅以下文章: