Різниця між обліковим записом "Локальна система" та "Мережевою службою"?


386

Я написав службу Windows, яка породжує окремий процес. Цей процес створює об'єкт COM. Якщо служба працює в обліковому записі "Локальна система", все працює нормально, але якщо служба працює під обліковим записом "Служба мережі", зовнішній процес запускається, але не вдається створити об'єкт COM. Помилка, повернута в результаті створення об'єкта COM, не є стандартною помилкою COM (я думаю, що вона специфічна для створюваного об'єкта COM).

Отже, як визначити, як відрізняються два облікові записи: "Локальна система" та "Мережева служба"? Ці вбудовані акаунти здаються дуже таємничими, і, здається, ніхто про них не знає багато.

Відповіді:


701

Оскільки існує стільки плутанини щодо функціональності стандартних облікових записів сервісу, я спробую швидко спуститися.

Спочатку фактичні рахунки:

  • Обліковий запис LocalService (бажано)

    Обмежений обліковий запис служби, який дуже схожий на мережевий сервіс і призначений для роботи стандартних найменш привілейованих послуг. Однак, на відміну від мережевої служби, вона отримує доступ до мережі як анонімний користувач.

    • Ім'я: NT AUTHORITY\LocalService
    • обліковий запис не має пароля (будь-яка вказана вами інформація про пароль ігнорується)
    • HKCU представляє обліковий запис користувача LocalService
    • має мінімальні привілеї на локальному комп’ютері
    • представляє анонімні облікові дані в мережі
    • СІД : S-1-5-19
    • має свій профіль під ключем реєстру HKEY_USERS ( HKEY_USERS\S-1-5-19)

     

  • Обліковий запис NetworkService

    Обмежений обліковий запис послуг, який призначений для запуску стандартних пільгових послуг. Цей обліковий запис набагато обмежений, ніж локальна система (або навіть адміністратор), але все ж має право на доступ до мережі як машина (див. Попередження вище).

    • NT AUTHORITY\NetworkService
    • обліковий запис не має пароля (будь-яка вказана вами інформація про пароль ігнорується)
    • HKCU представляє обліковий запис користувача NetworkService
    • має мінімальні привілеї на локальному комп’ютері
    • представляє облікові дані комп'ютера (наприклад MANGO$) віддаленим серверам
    • СІД : S-1-5-20
    • має свій профіль під ключем реєстру HKEY_USERS ( HKEY_USERS\S-1-5-20)
    • Якщо ви намагаєтесь запланувати завдання з його допомогою, увійдіть NETWORK SERVICEу діалогове вікно Вибір користувача або групи

     

  • Обліковий запис LocalSystem (небезпечно, не використовуйте!)

    Повністю надійний обліковий запис, тим більше ніж обліковий запис адміністратора. В одному вікні нічого, що цей обліковий запис не може зробити, і він має право на доступ до мережі як машина (для цього потрібна Active Directory та надання дозволу на обліковий запис машини на щось)

    • Ім'я: .\LocalSystem(також можна використовувати LocalSystemабо ComputerName\LocalSystem)
    • обліковий запис не має пароля (будь-яка вказана вами інформація про пароль ігнорується)
    • СІД : S-1-5-18
    • не має власного профілю ( HKCUпредставляє користувача за замовчуванням )
    • має широкі привілеї на локальному комп'ютері
    • представляє облікові дані комп'ютера (наприклад MANGO$) віддаленим серверам

     

Вище, коли ми говоримо про доступ до мережі, це стосується виключно SPNEGO (Negotiate), NTLM та Kerberos, а не будь-якого іншого механізму аутентифікації. Наприклад, обробка, яка працює як і LocalServiceраніше, може отримати доступ до Інтернету.

Загальна проблема із запуском як стандартного нестандартного облікового запису полягає в тому, що якщо ви змінюєте будь-які дозволи за замовчуванням, ви розширюєте набір речей, що працює, як цей обліковий запис. Отже, якщо ви надаєте DBO базі даних, не тільки ваша служба, що працює як локальна або мережева служба, може отримати доступ до цієї бази даних, але і все інше, як і ці облікові записи. Якщо кожен розробник робить це, на комп’ютері з'явиться обліковий запис служби, який має дозволи робити практично будь-що (точніше, набір усіх різних додаткових пільг, наданих цьому акаунту).

З точки зору безпеки завжди бажано працювати як власний обліковий запис сервісу, який має саме ті дозволи, які вам потрібно робити, що робить ваша послуга, і більше нічого. Однак вартість такого підходу - це налаштування вашого облікового запису послуги та керування паролем. Це врівноважуючий акт, яким потрібно керувати кожну програму.

У вашому конкретному випадку проблема, яку ви, мабуть, бачите, полягає в тому, що активація DCOM або COM + обмежена певним набором облікових записів. У Windows XP SP2, Windows Server 2003 і вище дозвіл на активацію значно обмежений. Ви повинні використовувати оснащення MMC Component Services, щоб вивчити ваш конкретний COM-об'єкт і побачити дозволи активації. Якщо ви не маєте доступу до будь-якої мережі в якості облікового запису машини, ви повинні серйозно розглянути можливість використання локальної служби (а не локальної системи, яка в основному є операційною системою).


У Windows Server 2003 ви не можете виконати заплановане завдання як

  • NT_AUTHORITY\LocalService (він же обліковий запис місцевої служби), або
  • NT AUTHORITY\NetworkService (він же обліковий запис мережі).

Ця можливість була додана лише із програмою Task Scheduler 2.0 , яка існує лише в Windows Vista / Windows Server 2008 та новіших версіях.

Служба, що працює, як NetworkServiceпредставляє облікові дані машини в мережі. Це означає, що якщо ваш комп'ютер викликався mango, він відображатиметься як обліковий запис машини MANGO$ :

введіть тут опис зображення


7
Я думаю, що керовані облікові записи сервісу знімають біль від налаштування облікового запису та керування паролем (а точніше передають його адміністратору домену чи делегатові.)
Carl G

1
Привіт, дякую за пояснення. Однак у мене є одне питання - за допомогою облікового запису локальної системи / мережі можна додати / видалити записи до контейнерів у активному каталозі (за умови, що контейнер в активному каталозі надав повні дозволи на комп'ютер, на якому працюють ці служби Windows). Зауважте, що все працює, коли я користувався сервісом як один із користувачів домену, але не як локальна система / послуга мережі (детальніше stackoverflow.com/questions/20943436/… ) З повагою
Dreamer

1
Так, так і повинно. Я відповім на ваше запитання безпосередньо, оскільки це питання є більш абстрактним, і це конкретна реалізація.
Пітер Ехлерт

7
Зауважте, що "анонімний" користувач не тільки, не є членом "автентифікованих користувачів", він не є членом "всіх" у Windows. У мережах Windows "анонімний" має доступ лише до ресурсів, явно наданих "анонімним" - за замовчуванням нічого.
Давид

1
@HakamFostok Я не маю багато посилань. Якщо я пам'ятаю правильно, Деун Браун висвітлював деякі з них у своїй книзі «Програмування безпеки Windows». У довідці про Windows багато і в документах MSDN, але я не маю конкретних посилань. Книги Джеффа Ріхтера про вікна програмування, а також Inside Windows (3-й чи 4-й Ед) Соломана та Русиновича також є деякі.
Пітер Ехлерт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.