Предоставяне на права за отдалечена връзка с Service Control Manager

Помислете за характеристиките на предоставяне на права за отдалечен достъп до списък на услуги, изпълнявани на сървър от потребител на домейн, които нямат права на локален администратор. По същество задачата е да се осигури достъп до отдалечена връзка към интерфейса на мениджъра за управление на услуги - Мениджър за контрол на услуги (SCManager).

Как изглежда проблемът Да предположим, че искаме отдалечен потребител / или система за мониторинг, за да можем да заявим състоянието на услугите на сървър. По очевидни причини този отдалечен потребител няма административни права и права за локално влизане на сървъра.

При опит за свързване и получаване на списъка с услуги на отдалечения компютър с помощта на конзолата services.msc, потребителят получава грешка:

Windows не можа да отвори база данни на мениджъра на услуги за управление на име на компютър

Грешка 5: Достъпът е отказан.

Ако се опитате да изброите услугите на отдалечения сървър с помощта на помощната програма sc.exe, грешката е следната:

C: \ Windows \ system32> sc \\ obts-01 заявка

[SC] OpenSCManager FAILED 5:
Достъпът е отказан.

Възможността за достъп до списъка с услуги се контролира от дескриптора на сигурността на базата данни на Service Control Manager, отдалечен достъп до който за потребителите на „Удостоверени потребители“ е ограничен в Windows 2003 SP1 (което по принцип е логично). Само членове на групата местни администратори имат права за отдалечен достъп до тази услуга.

Нека помислим как да осигурим отдалечен достъп до Service Control Manager, за да получим списък на сървърните услуги и възможността за получаване на техния статус за обикновените потребители (без права на администратор), използвайки примера на Windows Server 2012 R2.

Текущите разрешения на Service Manager (SCM) могат да бъдат получени с помощта на помощната програма SC.Търсейки, чрез изпълнение на командния ред, стартиран като администратор:

sc sdshow scmanager

Командата ще върне нещо като този ред SDDL:

D: (A;; CC;;; AU) (A; CCLCRPRC;;; IU) (A;; CCLCRPRC;;; SU) (A;; CCLCRPWPRC;;; SY) (A;; KA ;;; BA) (A;; CC;;; AC) S: (AU; FA; KA;;; WD) (AU; OIIOFA; GA;;; WD)

В този случай може да се види, че по подразбиране групата с удостоверени потребители (AU) е позволена да се свързва само към SCM, но не и да извършва анкети (LC) услуги. Копирайте реда в прозореца на всеки тестов редактор.

Следващата стъпка е да получим SID на потребителя или групата, на която искаме да осигурим отдалечен достъп до SCM (Как да получим SID на потребителя по име). Например, получаваме SID AD на msk-hd групата по този начин:

Get-ADgroup -Identity 'msk-hd' | изберете SID

SID
---
S-1-5-21-2470146451-3958456388-2988885117-23703978

В текстов редактор в реда SDDL трябва да копирате блока  (A ;;CCLCRPRC ;;;IU) - (IU - означава интерактивни потребители)), заменете в копирания IU блок с SID на потребителя / групата и поставете получения ред преди S:.

В нашия случай получихме следния ред:

D: (A;; CC;;; AU) (A; CCLCRPRC;;; IU) (A;; CCLCRPRC;;; SU) (A;; CCLCRPWPRC;;; SY) (A;; KA ;;; BA) (A ;; CC;;; AC) (A ;; CCLCRPRC ;;;S-1-5-21-2470146451-3958456388-2988885117-23703978)S: (AU; FA; KA;;; WD) (AU; OIIOFA; GA;;; WD)

И сега, използвайки sc.exe, променяме параметрите на дескриптора на сигурност на Service Control Manager:

sc sdset scmanager „D: (A;; CC;;; AU) (A;; CCLCRPRC;;; IU) (A;; CCLCRPRC;;; SU) (A;; CCLCRPWPRC;;; SY) (A ;; KA;;; BA) (A;; CC;; AC) (A; CCLCRPRC ;;; S-1-5-21-2470146451-3958456388-2988885117-23703978) S: (AU; FA; KA ;; ; WD) (AU; OIIOFA; GA;;; WD) “

ред [SC] SetServiceObjectSecurity УСПЕХ казва, че новите настройки за защита бяха приложени успешно и ние предоставихме правата на потребителя, подобни на правата на локално удостоверени потребители: SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE, SC_MANAGER_QUERY_LOCK_STATUS и STANDARD_RIGHTS_READ.

Проверете дали сега отдалеченият потребител може да получи списъка с услуги и тяхното състояние с помощта на конзолата за управление на услуги (services.msc) и с помощта на заявката sc \\ server-name1 заявка

Естествено, няма права за управление на работещи услуги, защото Достъпът до всяка услуга се контролира от индивидуален ACL. За да предоставите потребителски права за стартиране / спиране на сървърни услуги, трябва да използвате инструкциите от статията Предоставяне на права на потребител за контрол (стартиране, спиране, рестартиране) Услуги на Windows.

съвет. Когато присвоявате права на SCManager, различни от стандартните, те се записват в клона HKLM \ SYSTEM \ CurrentControlSet \ Control \ ServiceGroupOrder \ Security. И ако е направена грешка при генерирането на SDDL линия, можете да нулирате текущите разрешения по подразбиране, като просто изтриете този клон и рестартирате.