Udzielanie praw do zdalnego łączenia się z Service Control Manager

Rozważ funkcje nadawania praw do zdalnego dostępu do listy usług uruchomionych na serwerze przez użytkownika domeny, który nie ma uprawnień lokalnego administratora. Zasadniczo zadaniem jest zapewnienie dostęp do zdalnego połączenia do interfejsu menedżera kontroli usług - Kierownik kontroli usług (SCmanager).

Jak wygląda problem? Załóżmy, że chcemy, aby zdalny użytkownik / lub system monitorowania mógł sprawdzać status usług na serwerze. Z oczywistych powodów ten zdalny użytkownik nie ma uprawnień administracyjnych i lokalnych uprawnień logowania do serwera.

Podczas próby nawiązania połączenia i uzyskania listy usług na komputerze zdalnym za pomocą konsoli services.msc użytkownik otrzymuje błąd:

System Windows nie mógł otworzyć bazy danych menedżera sterowania usługami na nazwa_komputera

Błąd 5: Odmowa dostępu.

Jeśli próbujesz wyświetlić listę usług na zdalnym serwerze za pomocą narzędzia sc.exe, błąd jest następujący:

C: \ Windows \ system32> sc \\ zapytanie obts-01

[SC] OpenSCManager FAILED 5:
Odmowa dostępu.

Możliwość dostępu do listy usług jest kontrolowana przez deskryptor bezpieczeństwa bazy danych Menedżera sterowania usługami, do którego dostęp zdalny dla użytkowników „Uwierzytelnionych użytkowników” był ograniczony w systemie Windows 2003 SP1 (co ogólnie jest logiczne). Tylko członkowie lokalnej grupy administratorów mają prawa do zdalnego dostępu do tej usługi.

Zastanówmy się, jak zapewnić zdalny dostęp do Menedżera sterowania usługami, aby uzyskać listę usług serwerowych i możliwość uzyskania ich statusu dla zwykłych użytkowników (bez uprawnień administratora) na przykładzie systemu Windows Server 2012 R2.

Aktualne uprawnienia Menedżera usług (SCM) można uzyskać za pomocą narzędzia sc.exe, wykonując w wierszu poleceń uruchomionym jako administrator:

sc sdshow scmanager

Polecenie zwróci coś w rodzaju tej linii 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)

W tym przypadku można zauważyć, że domyślnie grupa Użytkownicy uwierzytelnieni (AU) może łączyć się tylko z SCM, ale nie może sondować usług (LC). Skopiuj wiersz do okna dowolnego edytora testów.

Następnym krokiem jest uzyskanie identyfikatora SID użytkownika lub grupy, do której chcemy zapewnić zdalny dostęp do SCM (jak uzyskać identyfikator SID użytkownika według nazwy). Na przykład otrzymujemy SID AD grupy msk-hd w następujący sposób:

Get-ADgroup -Identity 'msk-hd' | wybierz SID

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

W edytorze tekstów w wierszu SDDL musisz skopiować blok  (A ;;CCLCRPRC ;;;IU) - (IU - oznacza użytkowników interaktywnych)), zastąp skopiowany blok IU identyfikatorem SID użytkownika / grupy i wklej otrzymaną linię przed S:.

W naszym przypadku otrzymaliśmy następujący wiersz:

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 ;;;)

A teraz za pomocą sc.exe zmieniamy parametry deskryptora zabezpieczeń Menedżera sterowania usługami:

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) „

String [SC] SetServiceObjectSecurity SUCCESS mówi, że nowe ustawienia zabezpieczeń zostały pomyślnie zastosowane, a my nadaliśmy prawa użytkownika podobne do praw użytkowników uwierzytelnionych lokalnie: SC_MANAGER_CONNECT, SC_MANAGER_ENUMERATE_SERVICE, SC_MANAGER_QUERY_LOCK_STATUS i STANDARD_RIGHTS_READ.

Sprawdź, czy teraz zdalny użytkownik może uzyskać listę usług i ich status za pomocą konsoli zarządzania usługami (services.msc) i zapytania kwerenda sc \\ nazwa-serwera1

Oczywiście nie ma żadnych praw do zarządzania uruchomionymi usługami, ponieważ Dostęp do każdej usługi jest kontrolowany przez indywidualną listę ACL. Aby przyznać użytkownikowi uprawnienia do uruchamiania / zatrzymywania usług serwerowych, należy skorzystać z instrukcji z artykułu Przyznawanie użytkownikowi uprawnień do kontrolowania (uruchamiania, zatrzymywania, restartowania) usług Windows.

Wskazówka. Przypisując uprawnienia do SCManager inne niż standardowe, są one zapisywane w gałęzi HKLM \ SYSTEM \ CurrentControlSet \ Control \ ServiceGroupOrder \ Security. A jeśli wystąpił błąd podczas generowania linii SDDL, możesz zresetować bieżące domyślne uprawnienia, po prostu usuwając tę ​​gałąź i ponownie uruchamiając.