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

计算机帐户(或 LocalSystem 帐户)具有对本地计算机上几乎所有资源的访问权限的高度特权。 该帐户未与已登录用户帐户相关联。 服务以 LocalSystem 访问网络资源的形式运行,方法是将计算机凭据以格式 <domain_name>\\<computer_name>$呈现给远程服务器。 计算机帐户预定义名称为 NT AUTHORITY\SYSTEM。 可以启动服务并为该服务提供安全上下文。

计算机帐户上本地服务列表的屏幕截图。

使用计算机帐户的好处

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

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

计算机帐户安全状况评估

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

计算机帐户问题 缓解措施
计算机帐户在计算机离开并重新加入域时,会被删除然后重新创建。 确认将计算机添加到 Active Directory 组的要求。 若要验证添加到组的计算机帐户,请使用以下部分中的脚本。
如果将计算机帐户添加到组,则在该计算机上作为本地系统(LocalSystem)运行的服务将获取组访问权限。 对计算机帐户组的成员权限要仔细选择。 不要将计算机帐户设为域管理员组的成员。 关联的服务具有对 AD DS 的完整访问权限。
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)
  • 使用具有运行服务所需的权限的域用户帐户

后续步骤

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