“本地系统”帐户与“网络服务”帐户之间的区别是什么?

时间:2009-02-04 05:30:33

标签: windows security

我编写了一个Windows服务,它产生了一个单独的进程。此过程创建一个COM对象。如果服务在“本地系统”帐户下运行,一切正常,但如果服务在“网络服务”帐户下运行,则外部进程启动但无法创建COM对象。从COM对象创建返回的错误不是标准的COM错误(我认为它特定于正在创建的COM对象)。

那么,我如何确定两个帐户“本地系统”和“网络服务”的区别?这些内置帐户看起来非常神秘,似乎没有人了解它们。

1 个答案:

答案 0 :(得分:656)

由于标准服务帐户的功能存在很多混淆,我会尝试快速运行。

首先是实际账户:

  • LocalService account(首选)

    有限服务帐户,与网络服务非常相似,旨在运行标准的最低权限服务。但是,与网络服务不同,无法访问网络,因为计算机 Anonymous 用户身份访问网络。

    • 姓名:NT AUTHORITY\LocalService
    • 该帐户没有密码(您提供的任何密码信息都会被忽略)
    • HKCU代表 LocalService 用户帐户
    • 在本地计算机上具有最小权限
    • 在网络上提供匿名凭据
    • SID :S-1-5-19
    • HKEY_USERS 注册表项(HKEY_USERS\S-1-5-19)下有自己的个人资料

  • NetworkService account

    用于运行标准特权服务的有限服务帐户。此帐户比本地系统(甚至管理员)更受限制,但仍有权作为计算机访问网络(请参阅上面的警告)。

    • NT AUTHORITY\NetworkService
    • 该帐户没有密码(您提供的任何密码信息都会被忽略)
    • HKCU代表 NetworkService 用户帐户
    • 在本地计算机上具有最小权限
    • 将计算机的凭据(例如MANGO$)提供给远程服务器
    • SID :S-1-5-20
    • HKEY_USERS 注册表项(HKEY_USERS\S-1-5-20)下有自己的个人资料
    • 如果尝试使用它安排任务,请在选择用户或群组对话框中输入NETWORK SERVICE

  • LocalSystem account (危险,请勿使用!)

    完全信任的帐户,比管理员帐户更多。这个帐户无法在一个盒子上执行任何操作,并且它有权作为计算机访问网络(这需要Active Directory并授予计算机帐户权限)

    • 姓名:.\LocalSystem(也可以使用LocalSystemComputerName\LocalSystem
    • 该帐户没有密码(您提供的任何密码信息都会被忽略)
    • SID :S-1-5-18
    • 没有自己的任何个人资料(HKCU代表默认用户)
    • 在本地计算机上拥有广泛的权限
    • 将计算机的凭据(例如MANGO$)提供给远程服务器

上面谈到访问网络时,这仅涉及SPNEGO(协商),NTLM和Kerberos,而不涉及任何其他身份验证机制。例如,以LocalService运行的处理仍然可以访问互联网。

作为标准开箱即用帐户运行的一般问题是,如果您修改任何默认权限,那么您正在扩展所有以该帐户运行的所有内容。因此,如果您将DBO授予数据库,则作为本地服务或网络服务运行的服务不仅可以访问该数据库,还可以访问作为这些帐户运行的所有其他服务。如果每个开发人员都这样做,那么计算机将拥有一个服务帐户,该帐户有权执行任何操作(更具体地说,是授予该帐户的所有不同附加权限的超集)。

从安全角度来看,最好是以您自己的服务帐户运行,该服务帐户具有您执行服务所需的权限,而不是其他任何权限。但是,此方法的成本是设置您的服务帐户和管理密码。这是每个应用程序需要管理的平衡行为。

在您的特定情况下,您可能会看到的问题是DCOM或COM +激活仅限于给定的一组帐户。在Windows XP SP2,Windows Server 2003及更高版本中,激活权限受到显着限制。您应该使用组件服务MMC管理单元检查您的特定COM对象并查看激活权限。如果您不是作为计算机帐户访问网络上的任何内容,则应认真考虑使用本地服务(不是本地系统,基本上是操作系统)。


在Windows Server 2003中you cannot run a scheduled task

  • NT_AUTHORITY\LocalService(又名本地服务帐户)或
  • NT AUTHORITY\NetworkService(又名网络服务帐户)。

该功能仅在任务Scheduler 2.0中添加,该任务仅存在于Windows Vista / Windows Server 2008及更高版本中。

NetworkService运行的服务显示网络上的计算机凭据。这意味着,如果您的计算机被调用mangoit would present as the machine account MANGO$

enter image description here