Das Konto eines Windows-Dienstes wählen — LocalSystem, virtuelle Konten und gMSA

· · Windows, Windows-Dienste, Dienstkonten, gMSA, LocalSystem, Virtuelle Konten, Sicherheit, Active Directory, Geringste Rechte

„Ein interner Dienst, den wir vorerst unter LocalSystem laufen ließen, wurde in der Sicherheitsprüfung als ‚überhöhte Rechte‘ beanstandet. Wohin sollen wir ihn ändern?“ „Der Dienst kam nicht an einen freigegebenen Ordner, also lassen wir ihn als Domänenbenutzer laufen. Wenn das Kennwort abläuft, bleibt der Dienst stehen, also haben wir es nie ablaufen lassen und im Klartext ins Runbook geschrieben.“ — Unter Beratungen rund um Windows-Dienste von Kunden sind diese beiden Klassiker.

Was beide Orte gemeinsam haben: das Anmeldekonto des Dienstes ist als „die Einstellung, die zufällig funktionierte“ eingefroren, nicht als Entwurfsentscheidung. Ein Windows-Dienst läuft immer im Sicherheitskontext irgendeines Kontos, und dieses Konto entscheidet alles: was es lokal tun kann, als wer es von der anderen Seite des Netzwerks aussieht, und wer das Kennwort verwaltet. Lassen Sie das beim Standard, und eine Schwachstelle in einem Dienst führt direkt zur Übernahme der ganzen Maschine, und Klartextkennwörter verstreuen sich in Runbooks und Skripten.

Drei Dinge, die das Anmeldekonto entscheidetEin Dienst läuft immer im Sicherheitskontext eines Kontos, und dieses Konto entscheidet alles, was es lokal tun kann, als wer es von der anderen Seite des Netzwerks aussieht, und wer das Kennwort verwaltetDas Anmeldekonto des DienstesWas es lokal tun kannAls wer es vom Netzwerk aus gesehen wirdWer das Kennwort verwaltet

Abbildung 1: Die Wahl des Anmeldekontos ist eine Entwurfsentscheidung, die zugleich lokale Rechte, Netzwerkidentität und Kennwortverwaltung festlegt.

Es gibt faktisch sechs Wahlmöglichkeiten — LocalSystem, LocalService, NetworkService, ein virtuelles Konto (NT SERVICE\), ein Domänenbenutzer und ein gMSA (gruppenverwaltetes Dienstkonto). An IT-Personal in kleinen und mittleren Unternehmen und an Windows-App-Entwickler gerichtet, ordnet dieser Artikel Rechte, Netzwerkidentität und Kennwortverwaltung dieser sechs in einer Tabelle und fasst einen Entscheidungsfluss zusammen, auf Basis von Microsoft-Learn-Primärquellen Stand August 2026.

Wie man den Dienst selbst baut (Wahl zwischen Aufgabenplanung und Dienst, Umsetzung mit einem .NET Worker Service) behandelt „Windows-Dienste erstellen und betreiben“. Dieser Artikel konzentriert sich auf das „Anmeldekonto“, dort wo die meisten Unfälle passieren.

1. Zuerst das Fazit

  • Im Zweifel ist ein virtuelles Konto der erste Kandidat für einen Dienst, der innerhalb einer Maschine fertig wird, und ein gMSA der erste Kandidat für einen Dienst, der mit einer dienstspezifischen Identität auf eine Ressource in der Domäne zugreift. Microsoft gibt auch die Leitlinie, wo immer möglich ein verwaltetes Konto (MSA / virtuelles Konto) zu nutzen.12
  • Wählen Sie LocalSystem nicht, weil „es funktioniert“. Das Token enthält SYSTEM und BUILTIN\Administrators und hält starke Rechte wie SeDebugPrivilege, daher verliert eine Übernahme fast alles auf dieser Maschine. Dass der Standard von sc.exe create LocalSystem ist, ist der Nährboden für diesen Unfall.34
  • Der Unterschied zwischen LocalService und NetworkService ist die Netzwerkidentität. Lokale Rechte sind bei beiden minimal, aber zur Gegenseite sieht LocalService anonym aus und NetworkService wie das Computerkonto.5
  • **Ein virtuelles Konto (NT SERVICE\) ist der moderne Standard, der Identität pro Dienst trennen kann, ohne Kennwortverwaltung zu brauchen.** Sie können „NT SERVICE\\Dienstname“ direkt auf einer ACL angeben, und das Standard-Dienstkonto von SQL Server ist ebenfalls dieses.[^understand-service-accounts][^sql-service-accounts]
  • Wenn LocalSystem, NetworkService oder ein virtuelles Konto ins Netzwerk gehen, werden sie zum Computerkonto (DOMAIN\Computername$). PC$ auf der ACL eines freigegebenen Ordners oder von SQL Server zu vergeben lässt oft einen Domänenbenutzer entbehrlich.36
  • Eine Konfiguration, die einen Domänenbenutzer für einen Dienst nutzt, wird sowohl bei der Kennwortoperation als auch gegenüber Kerberoasting zur Schuld. Der SCM meldet sich mit dem gespeicherten Kennwort an, daher wird Ablauf zu einem Startfehler, und das „nie ablaufen + Klartextnotiz“, das das vermeidet, wird ein Geschenk an den Angreifer.78
  • Ein gMSA lässt Active Directory das Kennwort automatisch erzeugen und rotieren. Die Anforderungen sind eine Domäne und ein KDS-Stammschlüssel, und Sie setzen den Dienst auf „DOMAIN\Kontoname$“ mit leerem Kennwortfeld. Manche Apps unterstützen es nicht, daher müssen Sie vorab validieren.910
  • Ein Kontowechsel ändert die Annahmen von Profil, %TEMP% und DPAPI. Daten, die mit dem DPAPI des alten Kontos geschützt wurden, kann das neue Konto nicht entschlüsseln.
  • Ein Inventar des Ist-Zustands lässt sich aus den Anmeldekonten der Dienstliste und aus Ereignis-ID 4624 (Anmeldetyp 5) bestätigen.11

In einem Satz lautet das Fazit dieses Artikels: machen Sie eine Konfiguration, die „einem Dienst kein menschliches Kennwort gibt“ (integrierte Konten, virtuelles Konto, gMSA), zum Standard, und behandeln Sie einen Domänenbenutzer als letzten Ausweg.

2. Das Gesamtbild der Wahlmöglichkeiten — sechs Anmeldekonten in einer Tabelle

Zuerst eine Stufe Wiederholung. Beim Dienststart meldet sich der Dienststeuerungs-Manager (SCM) mit dem konfigurierten Konto an und erzeugt bei Erfolg ein Zugriffstoken und weist es dem Dienstprozess zu. Danach entscheidet jeder Ressourcenzugriff — Dateien, Pipes und dergleichen — durch Abgleich dieses Tokens mit der ACL.7 Die Wahl des Anmeldekontos ist also ein Entwurf, der den Inhalt des Tokens entscheidet, das dem Dienstprozess übergeben wird. Hier sind die sechs Wahlmöglichkeiten.

Was der SCM beim Dienststart tutDer SCM meldet sich mit dem konfigurierten Konto an, erzeugt bei Erfolg ein Zugriffstoken und weist es dem Dienstprozess zu, und danach entscheidet Ressourcenzugriff durch Abgleich des Tokens mit der ACLJaNeinSCMAls konfiguriertes Konto anmeldenEin Zugriffstoken erzeugenEs dem Dienstprozess zuweisenZugriff auf eine Datei oder eine PipeErlaubt die ACL es?Zugriff gelingtZugriff wird verweigert

Abbildung 2: Jeder Ressourcenzugriff des Dienstes wird durch Abgleich des Tokens, das der SCM beim Start erzeugt hat, mit der ACL entschieden.

Konto Lokale Rechte Netzwerkidentität Kennwortverwaltung Typische Nutzung
LocalSystem Fast unbegrenzt (SYSTEM+Administrators) Computerkonto (PC$) Nicht nötig (kein Kennwort) Ausnahmedienste, die mit dem OS eins sind
LocalService Minimal (Users-Klasse) Anonym Nicht nötig Lokale Verarbeitung ohne Netzwerkidentität
NetworkService Minimal (Users-Klasse) Computerkonto (PC$) Nicht nötig Verarbeitung mit geringen Rechten, bei der eine Maschinenidentität reicht
Virtuelles Konto NT SERVICE\ Minimal + einzeln auf der ACL vergeben Computerkonto (PC$) Nicht nötig (automatisch verwaltet) Der Standard für einen Geschäftsdienst auf einem Server
Domänenbenutzer Nur was Sie vergeben Dieser Benutzer selbst Manuell (Ablauf, Leck und Rotation bleiben bei Menschen) Letzter Ausweg für eine App, die kein gMSA unterstützt
gMSA Nur was Sie vergeben Dieses gMSA selbst AD erzeugt und rotiert automatisch Wenn eine Domänenumgebung eine dienstspezifische Identität braucht

LocalSystem, LocalService, NetworkService und ein virtuelles Konto haben überhaupt keinen Begriff von einem Kennwort. Die einzigen, die sich mit einem im SCM gespeicherten Kennwort anmelden (= Ablauf und Leck möglich), sind ein Domänenbenutzer und ein lokaler Benutzer.73

Unten gehen wir diese Tabelle Zeile für Zeile durch.

3. Was an LocalSystem falsch ist

3.1. Immer noch stärker als „Als Administrator ausführen“

LocalSystem (Anzeigename Local System, NT AUTHORITY\SYSTEM) ist ein vordefiniertes Konto, das der SCM nutzt, und es hält umfangreiche Rechte auf dem lokalen Computer. Das Token enthält die SIDs von NT AUTHORITY\SYSTEM und BUILTIN\Administrators, und es kann auf die meisten Objekte im System zugreifen. Ferner sind SeDebugPrivilege, das andere Prozesse debuggen kann, und SeTcbPrivilege, das als Teil des OS handelt, standardmäßig aktiviert.3

Diese Stärke ist gleichbedeutend mit der Größe des Schadens bei Übernahme. Hat ein unter LocalSystem laufender Dienst eine Schwachstelle für beliebige Codeausführung, erreicht ein Angreifer in einem Atemzug das Lesen und Verfälschen der Dateien jedes Benutzers auf dieser Maschine (SYSTEM hat standardmäßig Vollzugriff auf NTFS5), das Lesen des Speichers anderer Prozesse über SeDebugPrivilege und das Stehlen von Anmeldeinformationen und die laterale Bewegung von dort (ein Ausgangspunkt für Pass-the-Hash und Ähnliches). Die Kette aus Diebstahl von Anmeldeinformationen und lateraler Bewegung ist in „NTLM und Kerberos anhand von Diagrammen erklärt“ und „Windows LAPS in der Praxis“ behandelt.

Der Schaden, wenn ein LocalSystem-Dienst übernommen wirdHat ein unter LocalSystem laufender Dienst eine Schwachstelle für beliebige Codeausführung, erreicht ein Angreifer das Lesen und Verfälschen der Dateien jedes Benutzers, das Lesen des Speichers anderer Prozesse und das Stehlen von Anmeldeinformationen sowie laterale BewegungEine Schwachstelle für beliebige CodeausführungDer Angreifer erhält SYSTEM-RechteLesen und Verfälschen von DateienLesen des Speichers anderer ProzesseStehlen von AnmeldeinformationenLaterale Bewegung zu einer anderen Maschine

Abbildung 3: Eine Schwachstelle in einem LocalSystem-Dienst lässt einen Angreifer in einem Atemzug zur Übernahme der ganzen Maschine und zu einem Ausgangspunkt für laterale Bewegung gelangen.

3.2. Warum es trotzdem gewählt wird

Der Grund ist einfach: es ist der Standard, und eine Zugriffverweigerung erscheint nie. Der Standard, wenn Sie obj= bei sc.exe create weglassen, ist LocalSystem,4 und viele alte Beispielcodes und Installervorlagen setzen noch LocalSystem voraus. Weil Sie während der Entwicklung frei von Rechtefehlern bleiben können, ist die Struktur da, die „es funktionierte, also lassen“ in Masse erzeugt. Microsofts eigene Dokumentation stellt auch fest, dass die meisten Dienste dieses hohe Rechteniveau nicht brauchen, und dass Sie, wenn Sie es nicht brauchen, LocalService oder NetworkService erwägen sollten.3

Die Struktur, die LocalSystem weiter gewählt werden lässtDer Standard von sc.exe create ist LocalSystem, und alte Beispiele und Vorlagen setzen auch LocalSystem voraus, daher erscheint während der Entwicklung keine Zugriffverweigerung und eine Konfiguration es funktionierte also lassen wird in Masse erzeugtDer Standard von sc.exe createAls LocalSystem erzeugtAlte Beispiele und VorlagenKeine Zugriffverweigerung in der EntwicklungEs funktionierte, also lassenDienste mit überhöhten Rechten werden in Masse erzeugt

Abbildung 4: Der Standard und eine Entwicklungserfahrung „keine Zugriffverweigerung“ erzeugen in Masse Dienste, die als LocalSystem eingefroren sind.

3.3. Der Unterschied zu TrustedInstaller — LocalSystem ist auch nicht unbegrenzt

LocalSystem „das stärkste Konto von Windows“ zu nennen ist nicht genau. Windows-Ressourcenschutz (WRP) seit Windows Vista erlaubt Änderungen an wichtigen Betriebssystemdateien, Ordnern und Registrierungsschlüsseln nur TrustedInstaller (dem Windows-Modules-Installer-Dienst), und selbst SYSTEM oder ein Administrator erhält bei einem Überschreiben Zugriff verweigert.12 Explorers „Sie benötigen eine Berechtigung von TrustedInstaller“ ist dieser Mechanismus. Andersherum: LocalSystem kann fast alles außerhalb des WRP-geschützten Bereichs erreichen, und es gibt gewöhnlich keinen Grund, das einem Geschäftsdienst zu geben.

Die Beziehung zwischen dem WRP-geschützten Bereich und TrustedInstallerÄnderungen an wichtigen Systemdateien und Registrierungsschlüsseln, die WRP schützt, sind nur TrustedInstaller erlaubt, und selbst SYSTEM oder ein Administrator erhält Zugriff verweigertKann ändernZugriff verweigertFast alles ist erlaubtTrustedInstallerWRP-geschützte Systemdateien und dergleichenSYSTEM und AdministratorenAußerhalb des WRP-geschützten Bereichs

Abbildung 5: LocalSystem ist auch nicht unbegrenzt; Änderungen am WRP-geschützten Bereich sind nur TrustedInstaller erlaubt.

3.4. Fälle, in denen LocalSystem vernünftig ist

Ausnahmsweise vernünftig ist ein Dienst, dessen benötigte Rechte von vornherein über Administrator-Klasse hinausgehen — eng mit einem Gerätetreiber arbeiten, das Sicherheitsfundament des OS bedienen, andere Dienste oder Sitzungen verwalten und dergleichen. Software wie ein Sicherungs-Agent oder ein EDR trifft zu. Selbst dann lohnt es, zu bestätigen, dass es einen Codepfad gibt, der dieses Recht wirklich nutzt, und zu erwägen, ob die Arbeit, die das Recht braucht, getrennt werden kann (wie man das erkennt, siehe „Wann sind unter Windows tatsächlich Administratorrechte nötig?“).

4. LocalService und NetworkService — integrierte Konten mit geringsten Rechten

LocalService (NT AUTHORITY\LOCAL SERVICE, SID: S-1-5-19) und NetworkService (NT AUTHORITY\NETWORK SERVICE, SID: S-1-5-20) sind integrierte Konten, die für Dienste mit geringen Rechten vorbereitet sind. Beide halten lokal nur minimale Rechte und können wenig mehr als ein Mitglied der Gruppe Users.51

Der Unterschied zwischen den beiden ist ein Punkt: als wer sie von der anderen Seite des Netzwerks aussehen.5

  • LocalService: Verbindet sich zur Gegenseite mit anonymen Anmeldeinformationen. Es kann nicht auf eine Ressource zugreifen, die Authentifizierung verlangt.
  • NetworkService: Legt der Gegenseite die Anmeldeinformationen des Computers vor (in einer Domänenumgebung DOMAIN\Computername$).

Die Trennung ist LocalService, wenn „es nicht ins Netzwerk geht, oder wenn doch, braucht es keine Identität“, und NetworkService, wenn „Sie mit der Identität der Maschine auf eine Ressource in der Domäne zugreifen wollen“.

Der Unterschied zwischen LocalService und NetworkServiceLokale Rechte sind bei beiden minimal, aber zur Gegenseite verbindet sich LocalService mit anonymen Anmeldeinformationen und NetworkService legt die des Computers vorLocalServiceVerbindet sich mit anonymen AnmeldeinformationenEine Ressource, die Authentifizierung verlangt, ist nicht möglichNetworkServiceLegt die Anmeldeinformationen des Computers vorIn einer Domäne sieht es wie PC$ aus

Abbildung 6: Lokale Rechte sind dasselbe Minimum, aber die von der anderen Seite des Netzwerks sichtbare Identität teilt sich in anonym oder Computerkonto.

Diese beiden haben jedoch aus modernem Blick eine Schwäche. Dasselbe Konto wird von vielen Diensten geteilt. Laufen fünf Dienste als LocalService, können die fünf, solange die ACL pro Konto ist, auf die Ressourcen der jeweils anderen zugreifen. SQL Server unterstützt das Konto Local Service aus demselben Grund nicht: Es ist ein geteiltes Konto und lässt sich nicht von anderen Diensten trennen.1

Ein geteiltes Konto lässt sich nicht trennenTeilen mehrere Dienste dasselbe LocalService, können sie, solange die ACL pro Konto ist, auf die Ressourcen der jeweils anderen zugreifenDienst ADasselbe LocalServiceDienst BDienst CKönnen auf die Ressourcen der jeweils anderen zugreifenWeil die ACL pro Konto ist

Abbildung 7: Dienste, die dasselbe Konto teilen, lassen sich per ACL nicht von den Ressourcen der jeweils anderen trennen.

Dieses „geringere Rechte behalten, aber pro Dienst trennen“ zu lösen ist das nächste Thema, das virtuelle Konto.

5. Virtuelle Konten (NT SERVICE\) — der moderne Standard

5.1. Sie können eine Identität pro Dienst ohne Kennwort haben

Ein virtuelles Konto ist ein „verwaltetes lokales Konto“, verfügbar ab Windows Server 2008 R2 / Windows 7. Es hat drei Eigenschaften.6

  • Das Konto wird automatisch verwaltet; weder Anlegen noch Setzen eines Kennworts ist nötig
  • Der Name ist NT SERVICE\<Dienstname>, und es wird eine jedem Dienst eigene Identität
  • In einer Domänenumgebung kann es mit den Anmeldeinformationen des Computerkontos (DOMAIN\Computername$) auf das Netzwerk zugreifen

Mit anderen Worten: Es behält den Vorzug „keine Kennwortverwaltung“ von LocalService/NetworkService und nimmt den Nachteil „lässt sich nicht trennen, weil das Konto geteilt ist“ weg. Deshalb setzt das SQL-Server-Setup standardmäßig ein virtuelles Konto wie NT SERVICE\MSSQLSERVER.1

Was ein virtuelles Konto vereinbar machtEin virtuelles Konto behält den Vorzug keine Kennwortverwaltung von LocalService und NetworkService, nimmt den Nachteil lässt sich nicht trennen weil geteilt weg und hat eine jedem Dienst eigene IdentitätBehaltenWegnehmenVorzug (keine Kennwortverwaltung)Virtuelles KontoNachteil (lässt sich nicht trennen weil geteilt)Eine jedem Dienst eigene IdentitätWeder Anlegen noch Kennwortsetzen ist nötig

Abbildung 8: Ein virtuelles Konto behält die Vorzüge der integrierten Konten und nimmt nur den Nachteil weg, dass geteilt nicht trennbar ist.

5.2. Sie können „NT SERVICE\Dienstname“ direkt auf eine ACL schreiben

Die praktische Bequemlichkeit ist, dass Sie nur diesen Dienst namentlich zu einer ACL hinzufügen können. „Nur dieser Dienst darf in diesen Datenordner schreiben“ lässt sich ohne Anlegen einer Gruppe und ohne Kennwortverwaltung umsetzen.

# Change the service's logon account to a virtual account
# The value of obj= is "NT SERVICE\service-name". Do not specify a password
sc.exe config MyAppService obj= "NT SERVICE\MyAppService"

# Confirm the configuration (check SERVICE_START_NAME)
sc.exe qc MyAppService

# Grant modify rights on the data folder to this service only
icacls "C:\ProgramData\MyApp" /grant "NT SERVICE\MyAppService:(OI)(CI)M"

In der GUI öffnen Sie in services.msc die Eigenschaften des Dienstes → die Registerkarte „Anmelden“ → geben Sie NT SERVICE\Dienstname unter „Dieses Konto“ ein und lassen Sie die Kennwortfelder leer (für ein virtuelles Konto oder ein MSA ist das Nichtangeben eines Kennworts die Spezifikation des SCM). Nach der Änderung wendet ein Neustart des Dienstes sie an.

5.3. Die Einschränkung — außerhalb der Maschine ist es nicht „dieser Dienst“

Die Identität eines virtuellen Kontos ist maschinenlokal und wird von der Domäne nicht erkannt. Im Netzwerk fällt sie wie später beschrieben auf das Computerkonto zusammen, daher kann die Gegenseite nicht sagen, „welcher Dienst es ist“, und Sie können dieselbe Identität auch nicht über mehrere Server teilen.10

Die Identität eines virtuellen Kontos fällt außerhalb der Maschine zusammenEin virtuelles Konto, das innerhalb der Maschine pro Dienst einzigartig ist, fällt im Netzwerk ebenfalls auf das Computerkonto zusammen, und die Gegenseite kann nicht sagen, welcher Dienst es istVirtuelles Konto AComputerkonto PC$Virtuelles Konto BDie der Gegenseite sichtbare IdentitätKann nicht sagen, welcher Dienst es ist

Abbildung 9: Selbst mit einer einzigartigen Identität innerhalb der Maschine sieht auf der anderen Seite des Netzwerks jeder Dienst wie dasselbe PC$ aus.

Der Moment, in dem diese Einschränkung — Bedarf einer dienstspezifischen Identität auf der anderen Seite des Netzwerks, Bedarf derselben Identität auf mehreren Servern — zum Problem wird, ist der, in dem ein gMSA (Kapitel 8) gerufen wird.

6. Identität beim Gang ins Netzwerk — die Praxis des Computerkontos (PC$)

6.1. „Ein Dienst kann nicht auf einen freigegebenen Ordner zugreifen“ ist ein Missverständnis

Auf einer der Domäne beigetretenen Maschine authentifiziert sich ein Dienst, der als LocalSystem, NetworkService oder virtuelles Konto läuft, beim Zugriff auf eine entfernte Ressource als Computerkonto (DOMAIN\Computername$).36 Viele der Eingangsberatungen „er kam nicht an einen freigegebenen Ordner, also haben wir ihn zum Domänenbenutzer gemacht“ lösen sich tatsächlich damit. Die Ziel-ACL erlaubte PC$ einfach nicht.

Remotezugriff als ComputerkontoEin LocalSystem-, NetworkService- oder virtuelles-Konto-Dienst auf einer der Domäne beigetretenen Maschine authentifiziert sich gegenüber der Gegenseite als Computerkonto, und wenn die Ziel-ACL PC$ erlaubt, kann er zugreifenJaNeinDienst (LocalSystem, ein virtuelles Konto und dergleichen)Als PC$ authentifizierenErlaubt die Ziel-ACL PC$?Zugriff auf einen freigegebenen Ordner oder eine DB gelingtZugriff wird verweigert

Abbildung 10: In einer Domänenumgebung begründet allein das Vergeben von PC$ auf der Ziel-ACL Remotezugriff ohne Domänenbenutzer.

Das Vergeben auf der Dateiserverseite ist dasselbe wie eine gewöhnliche ACL-Operation; geben Sie Computername$ als Kontoname an (im GUI-Objektauswahldialog schließen Sie „Computer“ in die Objekttypen ein).

# On the file-server side: grant a service on APPSV01 modify rights on the shared folder
# You need to grant both share permissions and NTFS permissions
Grant-SmbShareAccess -Name "AppData" -AccountName "CORP\APPSV01$" -AccessRight Change -Force
icacls "D:\Shares\AppData" /grant "CORP\APPSV01$:(OI)(CI)M"

SQL Server ist dasselbe: Legen Sie das Computerkonto als Anmeldung an, und die Verbindungszeichenfolge geht mit Integrated Security=true und ohne Kennwort durch.

-- On the DB-server side: permit Windows integrated authentication from a service on APPSV01
CREATE LOGIN [CORP\APPSV01$] FROM WINDOWS;

6.2. Die Grenzen des PC$-Ansatzes kennen

Dieser Ansatz hat zwei Grenzen.

  1. Die Körnung ist pro Maschine. LocalSystem, NetworkService und jeder virtuelle-Konto-Dienst auf derselben Maschine sehen von der Gegenseite alle wie dasselbe PC$ aus. Sie können auf dem Ziel nicht „nur diesem Dienst erlauben“, und Sie können auch nicht prüfen, welcher Dienst dieses Konto genutzt hat.2
  2. Er lässt sich in einer Arbeitsgruppenumgebung nicht nutzen. Ein Computerkonto ist ein Active-Directory-Objekt, daher hat eine Maschine, die nicht der Domäne beigetreten ist, keines. Sie brauchen ein Design, das die Anmeldeinformationen des Zielkontos explizit behandelt.

Wenn Sie Grenze 1 überschreiten wollen, ist die Antwort 2026 nicht der Domänenbenutzer des nächsten Kapitels … sondern dieses Problem zu überspringen und zu einem gMSA weiterzugehen.

Zwei Grenzen des PC$-AnsatzesAuthentifizierung als PC$ hat Körnung auf Maschinenebene, daher ist weder Erlaubnis noch Prüfung pro Dienst möglich, und in einer Arbeitsgruppe existiert das Computerkonto selbst nicht, daher lässt es sich nicht nutzenDer PC$-AnsatzGrenze 1: pro MaschineGrenze 2: keine ArbeitsgruppeWeder Erlaubnis noch Prüfung pro DienstExplizite Anmeldeinformationen nutzenDarüber hinaus: ein gMSA

Abbildung 11: Wenn Sie die zwei Grenzen Körnung auf Maschinenebene und Domänen-Voraussetzung überschreiten wollen, überspringen Sie den Domänenbenutzer und gehen zu einem gMSA weiter.

7. Das Problem, einen Domänenbenutzer für einen Dienst zu nutzen

7.1. Das strukturelle Problem des Kennworts

Weisen Sie einem Dienst einen Domänenbenutzer (oder einen lokalen Benutzer) zu, speichert der SCM dieses Kennwort und nutzt es bei jedem Start zur Anmeldung. Der SCM verwaltet Ablauf nicht, daher schlägt die Anmeldung fehl, wenn das Kennwort abläuft, und der Dienst startet nicht.7

Von dort beginnt die Abwärtsspirale, die man oft im Feld sieht.

  1. Ein Unfall, dass der Dienst wegen Ablaufs stehen bleibt, tritt ein
  2. Als Wiederholungsvorbeugung wird „Kennwort läuft nie ab“ gesetzt
  3. Ein Änderungsverfahren wird nie etabliert, und dasselbe Kennwort steht im Klartext in den Runbooks, Skripten und der Aufgabenplanung mehrerer Server
  4. Selbst wenn jemand geht, ändert sich das Kennwort nicht (wenn Sie es ändern, wissen Sie nicht, was stehen bleibt)
Die Abwärtsspirale des Betriebs mit einem DomänenbenutzerDas Kennwort läuft ab und der Dienst bleibt stehen, nie-ablaufen wird als Wiederholungsvorbeugung gesetzt, ein Klartextkennwort verbreitet sich in Runbooks und Skripten, und selbst wenn jemand geht, lässt es sich nicht ändern1. Ablauf hält den Dienst an2. Nie-ablaufen wird als Vorbeugung gesetzt3. Ein Klartextkennwort verbreitet sichRunbooks, Skripte, Aufgaben4. Selbst wenn jemand geht, lässt es sich nicht ändern

Abbildung 12: Ausgehend von einem Ablaufunfall verfestigen sich Nie-ablaufen und die Verbreitung eines Klartextkennworts.

Microsoft weist auch darauf hin, dass eine Konfiguration, die ein Domänenkonto für einen Dienst nutzt, erheblichen Betriebsaufwand in der manuellen Verwaltung von Kennwort und SPN kostet und dass Wartung zu einem Dienststopp führen kann.1

7.2. Kerberoasting — ein Dienstkonto wird ins Visier genommen

Ein weiterer, für ein Domänenbenutzer-Dienstkonto spezifischer Angriff ist Kerberoasting. Ein Dienst, der Kerberos-Authentifizierung empfängt, registriert einen SPN (Dienstprinzipalname) auf dem Anmeldekonto. Jeder authentifizierte Benutzer in der Domäne kann ein Dienstticket für ein Konto anfordern, das einen SPN registriert hat, daher holt sich ein Angreifer das Ticket und versucht eine Offline-Brute-Force des Kennworts. Ein 10- bis 16-Zeichen-Kennwort, das ein Mensch entschieden hat, hält diesem Angriff nicht stand.

Der Ablauf von KerberoastingEin Dienstticket zu einem Dienstkonto, das einen SPN registriert hat, kann von jedem authentifizierten Benutzer angefordert werden, daher holt sich ein Angreifer das Ticket und versucht eine Offline-Brute-Force des KennwortsEin authentifizierter Benutzer in der DomäneEin Ticket für den SPN anfordernEin Dienstticket erhaltenOffline-Brute-ForceEtwa 10 bis 16 Zeichen werden geknackt

Abbildung 13: Jeder authentifizierte Benutzer kann ein Ticket anfordern, und ein Kennwort einer von einem Menschen entschiedenen Länge hält einer Offline-Brute-Force nicht stand.

Die wirksame Antwort ist, das Kennwort zu einer Stärke zu machen, die ein Mensch weder erraten noch knacken kann. Microsoft listet auch das Erzwingen eines langen Kennworts und die Nutzung eines gMSA, dessen Kennwort ein langer maschinenerzeugter Zufallswert wird.8 Dasselbe Dokument erwähnt auch Kerberos-Härtung (FAST), aber FAST schützt Vorauthentifizierungsdaten und Widerstand gegen KDC-Täuschung; es verhindert nicht, dass ein authentifizierter Benutzer ein Dienstticket zu einem SPN anfordert, daher ist es kein Ersatz für die Kennwortstärke eines Dienstkontos. Die Beziehung zwischen SPNs und Kerberos und die Bedingungen, unter denen Authentifizierung auf NTLM zurückfällt, sind in „NTLM und Kerberos anhand von Diagrammen erklärt“ dargestellt.

7.3. Wenn Sie trotzdem einen Domänenbenutzer nutzen

Wenn Sie keine Wahl haben als einen Domänenbenutzer zu nutzen, etwa weil die Anwendung kein gMSA unterstützt, behandeln Sie Folgendes als Mindestminderung.

  • Machen Sie das Kennwort zufällig erzeugte 25 Zeichen oder mehr und schreiben Sie es nirgendwo außer in ein Kennwortverwaltungswerkzeug (Runbooks, Skripte, eine geteilte Excel)
  • Machen Sie es zu einem dienstexklusiven Konto und teilen Sie es pro Dienst (teilen Sie es nicht mit einem menschlichen Konto2)
  • Verweigern Sie interaktive Anmeldung und Remotedesktop und erlauben Sie nur „Anmelden als Dienst“
  • Minimieren Sie die Gruppen, denen es angehört (es zu Domain Admins hinzuzufügen kommt nicht in Frage)
  • Etablieren Sie ein periodisches Rotationsverfahren und legen Sie die Stellen, die eine Änderung betrifft, in ein Verzeichnis

All das zu tun ist unsicherer und weniger einfach als die Migration zu einem gMSA — das ist das nächste Kapitel.

8. gMSA — Kennwortverwaltung Active Directory überlassen

8.1. Der Mechanismus und die Wirkung

Ein gMSA (gruppenverwaltetes Dienstkonto) ist ein Domänenkonto, das die Kennwortverwaltung dem Domänencontroller überlässt. Das Kennwort wird vom Domänencontroller aus dem KDS-Stammschlüssel (Key Distribution Service) berechnet, und nur erlaubte Hosts holen es.13

Wie ein gMSA das Kennwort verwaltetDer Domänencontroller berechnet das Kennwort aus dem KDS-Stammschlüssel, nur erlaubte Hosts holen es und nutzen es zum Ausführen des Dienstes, und das Kennwort wird standardmäßig alle 30 Tage automatisch rotiertKDS-StammschlüsselDer DC berechnet das KennwortEin erlaubter Host holt esZum Ausführen des Dienstes genutztAutomatische Rotation alle 30 Tage standardmäßig

Abbildung 14: Der Domänencontroller übernimmt Erzeugung, Verteilung und Aktualisierung des Kennworts, und Menschen können betreiben, ohne das Kennwort zu kennen.

Die Wirkungen sind klar.9

  • Ein 240-Byte zufällig erzeugtes Kennwort: Brute-Force und Wörterbuchangriffe werden unrealistisch, und der Widerstand gegen Kerberoasting steigt erheblich
  • Automatische Rotation alle 30 Tage standardmäßig: Ein Mensch muss keine Änderung planen, und der Dienst muss nicht gestoppt werden
  • Dieselbe Identität kann über mehrere Server geteilt werden: Eine Serverfarm unter Lastausgleich kann sich gegenseitig als derselbe Prinzipal authentifizieren
  • Einfachere SPN-Verwaltung: Registrierung und Verwaltung von SPNs können auch delegiert und vereinfacht werden

Menschen können betreiben, ohne das Kennwort zu kennen — nimmt man es als den Mechanismus, der für ein Dienstkonto tut, was Windows LAPS für ein lokales Administratorkennwort tut, ist die Einordnung leichter zu greifen.

8.2. Anforderungen

Ein gMSA hat Voraussetzungen.10

  • Eine Active-Directory-Domänenumgebung (in einer Arbeitsgruppe nicht möglich)
  • Domänen- und Gesamtstrukturfunktionsebenen Windows Server 2012 oder höher
  • Ein KDS-Stammschlüssel ist bereits angelegt
  • Der gMSA-Name ist in der Gesamtstruktur eindeutig, nicht nur in der Domäne
  • Das Kennwortänderungsintervall kann nur bei der Erstellung gesetzt werden

Das Anlegen des KDS-Stammschlüssels ist eine einmalige Aufgabe, aber bis zu 10 Stunden nach dem Anlegen können Sie kein gMSA anlegen, weil Sie auf Replikation zu jedem Domänencontroller warten. Es ist eine Sicherheitseinrichtung, um den Unfall zu verhindern, dass das Abrufen des Kennworts fehlschlägt, bevor die Replikation fertig ist.14

Vom Anlegen des KDS-Stammschlüssels zum Anlegen eines gMSANach dem Anlegen des KDS-Stammschlüssels warten Sie auf Replikation zu jedem Domänencontroller, daher können Sie bis zu 10 Stunden kein gMSA anlegen; nach Abschluss der Replikation können Sie eines anlegenDen KDS-Stammschlüssel anlegenBis zu 10 Stunden Warten auf ReplikationEine Sicherheitseinrichtung gegen einen Abruf-Fehler-UnfallReplikation zu jedem DC ist abgeschlossenSie können ein gMSA anlegen

Abbildung 15: Das Warten von bis zu 10 Stunden nach dem Anlegen des Stammschlüssels ist Wartezeit, um einen Abruffehlschlag zu verhindern, solange die Replikation nicht fertig ist.

# Run as a domain administrator, on a domain controller (or an administrative
# workstation with the AD PowerShell module)

# Confirm whether a KDS root key exists, and create one if not (once per forest)
Get-KdsRootKey
Add-KdsRootKey -EffectiveImmediately   # Actually usable after up to 10 hours

8.3. Das Verfahren von der Erstellung zur Konfiguration

Das Verfahren hat vier Stufen: „① eine zum Abrufen berechtigte Gruppe anlegen → ② das gMSA anlegen → ③ es auf den Servern installieren → ④ es am Dienst setzen“.10

Die vier Stufen der Einführung eines gMSAEs in vier Stufen einführen: Anlegen einer zum Abrufen des Kennworts berechtigten Gruppe, Anlegen des gMSA, Installieren auf jedem Server und Setzen als Anmeldekonto des Dienstes① Eine zum Abrufen berechtigte Gruppe anlegen② Das gMSA anlegenDie PC$ der Server hinzufügen③ Auf jedem Server installierenAbruf mit dem Test-Befehl prüfen④ Am Dienst setzen

Abbildung 16: Vom Anlegen der Gruppe bis zum Setzen des Dienstes verläuft die Einführung eines gMSA in vier Stufen.

# ① Create a security group permitted to retrieve the password,
#    and add the computer accounts of the servers that will run the service
New-ADGroup -Name "GG-SvcBatchHosts" -GroupScope Global
Add-ADGroupMember -Identity "GG-SvcBatchHosts" -Members "APPSV01$", "APPSV02$"
# Group membership is evaluated at computer logon, so
# restarting the target servers after adding is the reliable approach

# ② Create the gMSA
New-ADServiceAccount -Name "svc-batch" `
    -DNSHostName "svc-batch.corp.example.com" `
    -PrincipalsAllowedToRetrieveManagedPassword "GG-SvcBatchHosts"

# ③ On each server that will run the service, install the gMSA and validate
Install-ADServiceAccount -Identity "svc-batch"
Test-ADServiceAccount -Identity "svc-batch"   # True means retrieval is working

# ④ Set it as the service's logon account. Append $ to the name, and do not specify a password
sc.exe config MyBatchService obj= "CORP\svc-batch$"
Restart-Service MyBatchService

Beim Setzen aus services.msc ist der Kontoname ebenfalls wie CORP\svc-batch$hängen Sie $ am Ende an und lassen Sie die Kennwortfelder leer. Ein Konto der MSA-Familie kann nicht für eine interaktive Anmeldung genutzt werden.1 Danach vergeben Sie CORP\svc-batch$ auf der ACL eines freigegebenen Ordners oder von SQL Server anstelle von PC$, und Netzwerkzugriff mit einer dienstspezifischen Identität ist fertig, ohne Kennwort.

8.4. Manche Apps unterstützen es nicht

Als Vorbehalt: Nicht jede Software läuft als gMSA. Dinge, die die Anmeldeidentität über einen Standardmechanismus konfigurieren — ein Windows-Dienst, ein IIS-Anwendungspool, eine Aufgabe der Aufgabenplanung — sind breit unterstützt, aber es gibt Einschränkungen wie dass Failoverclustering selbst kein gMSA unterstützt und eine App, deren Inneres ein Kennwort verlangt, es nicht nutzen kann.10 Microsoft stellt auch klar, dass Sie das Verhalten als gMSA in einer Testumgebung vor der Produktion bestätigen sollten.9

Unterscheiden, ob etwas ein gMSA unterstütztEine App, die die Anmeldeidentität über einen Standardmechanismus konfiguriert, unterstützt ein gMSA breit, aber Failoverclustering und eine App, deren Inneres ein Kennwort verlangt, können es nicht nutzen, daher in einer Testumgebung vor der Produktion bestätigenStandardmechanismusKennwort verlangtDie Ziel-AppWie wird die Anmeldung gesetzt?gMSA unterstütztDienst, IIS, eine AufgabegMSA nicht möglichFailoverclusteringVor der Produktion testen

Abbildung 17: Eine App, die die Anmeldung über einen Standardmechanismus konfiguriert, ist breit unterstützt, aber manche Entwürfe sind nicht unterstützt, daher ist Validierung vor der Produktion unverzichtbar.

Es gibt auch Geschwister: das sMSA (eigenständiges verwaltetes Dienstkonto) für einen einzelnen Server und das dMSA (delegiertes verwaltetes Dienstkonto, eingeführt in Windows Server 2025, das sich an Geräteidentität bindet, um Diebstahl von Anmeldeinformationen zu begegnen). Für einen Neubau nehmen Sie ein gMSA als Basis und erwägen je nach Anforderungen.6

9. Begleitender Entwurf — Anmelderechte, Profil, DPAPI und Prüfung

Vier weitere Dinge, die sich mit dem Konto ändern, zum Behalten.

9.1. Das Recht „Anmelden als Dienst“ (SeServiceLogonRight)

Um als Dienst zu starten, braucht das Konto das Benutzerrecht „Anmelden als Dienst“. LocalSystem, LocalService und NetworkService haben es eingebaut, aber jedes andere Konto (ein Domänenbenutzer, ein gMSA und dergleichen) braucht eine ausdrückliche Zuweisung.15

Setzen Sie es über die Registerkarte „Anmelden“ der services.msc-GUI, vergibt das Snap-In dieses Recht automatisch. Dagegen prüfen CreateService / ChangeServiceConfig (die APIs, die sc.exe config aufruft) nicht, ob das angegebene Konto dieses Recht hat. Die typische Ursache, dass ein per Skript konfigurierter Dienst beim Start mit „der Dienst wurde aufgrund eines Anmeldefehlers nicht gestartet“ stehen bleibt, ist diese. Verlassen Sie sich nicht auf eine Nebenwirkung eines Werkzeugs; nehmen Sie in das Bereitstellungsverfahren ausdrücklich das Hinzufügen zu „Anmelden als Dienst“ in der lokalen Sicherheitsrichtlinie (secpol.msc) oder die Konfiguration über GPO/Intune auf (in einer Umgebung, die dieses Recht mit Gruppenrichtlinie konfiguriert, wird eine lokale Vergabe überschrieben, wenn die Richtlinie greift, daher braucht das ebenfalls Aufmerksamkeit). Umgekehrt ist der Standardzug für ein dienstexklusives Konto, zugleich „Lokale Anmeldung verweigern“ zu setzen.

Der Unterschied nach dem Konfigurationsweg des Rechts Anmelden als DienstDie services.msc-GUI vergibt das Recht automatisch, aber die API, die sc.exe config aufruft, prüft das Recht nicht, daher hält ein Konto ohne das Recht den Dienst beim Start mit einem Anmeldefehler anJaNeinIn services.msc setzenDas Recht wird automatisch vergebenDer Dienst kann startenMit sc.exe config setzenDas Recht wird nicht geprüftHat es das Recht?Der Dienst kann startenBleibt mit einem Anmeldefehler stehenAusdrücklich mit secpol.msc oder einer GPO vergeben

Abbildung 18: Die GUI vergibt das Recht automatisch, aber eine skriptierte Konfiguration prüft es nicht, daher müssen Sie eine ausdrückliche Vergabe ins Verfahren aufnehmen.

9.2. Profil, %TEMP% und HKEY_CURRENT_USER ändern sich

Der SCM lädt beim Dienststart das Benutzerprofil dieses Kontos.7 Daher sind die echten %TEMP%, %APPDATA% und HKEY_CURRENT_USER pro Anmeldekonto eine andere Sache, und wenn Sie Konten wechseln, sehen Einstellungen und Caches, die im Profil des alten Kontos gespeichert waren, aus, als wären sie „verschwunden“.

Die Entwurfsantwort ist einfach: legen Sie die Daten des Dienstes nicht unter das Profil, sondern auf einen ausdrücklichen Pfad wie C:\ProgramData\<App-Name>, und vergeben Sie diese ACL an das Anmeldekonto. So kommt ein Kontowechsel nicht mit einer Datenmigration.

Profilabhängigkeit und die Antwort der DatenplatzierungDas echte Profil ist pro Anmeldekonto eine andere Sache, daher lässt ein Kontowechsel die Daten des alten Profils aussehen als wären sie verschwunden, aber das Platzieren auf einem ausdrücklichen Pfad und das Vergeben der ACL macht Migration unnötigAntwortWechseln des AnmeldekontosEin anderes Profil wird geladenDie alten Daten sehen aus als wären sie verschwundenUnter ProgramData legenDie ACL an das Anmeldekonto vergebenKeine Migration auch wenn das Konto wechselt

Abbildung 19: Vermeiden Sie das Profil und legen Sie die Daten auf einen ausdrücklichen Pfad, und ein Kontowechsel kommt nicht mehr mit einer Datenmigration.

9.3. Mit DPAPI geschützte Daten sind an das Konto gebunden

Noch leichter zu übersehen ist DPAPI. Daten, die mit benutzerbezogenem DPAPI (CryptProtectData oder .NETs ProtectedData) verschlüsselt wurden, können grundsätzlich nur von demselben Konto entschlüsselt werden, das sie geschützt hat. In dem Moment, in dem Sie das Konto ändern, lässt sich eine gespeicherte Verbindungszeichenfolge oder ein API-Schlüssel nicht mehr lesen — das ist DPAPI, das seine Arbeit korrekt macht, aber wenn es nicht im Migrationsverfahren steht, wird es zum Vorfall.

Die Beziehung zwischen DPAPI-geschützten Daten und einem KontowechselDaten, die mit benutzerbezogenem DPAPI geschützt wurden, können nur von demselben Konto entschlüsselt werden, das sie geschützt hat, daher müssen Sie nach dem Wechsel des Anmeldekontos die Geheimnisse erneut eingebenDasselbe alte KontoDas neue KontoMit dem alten Konto per DPAPI schützenEine geschützte Verbindungszeichenfolge und dergleichenWelches Konto entschlüsselt?Kann entschlüsselnKann nicht entschlüsselnDie Geheimnisse erneut eingeben

Abbildung 20: DPAPI-geschützte Daten sind an das Konto gebunden, das sie geschützt hat, und nach einem Kontowechsel müssen Sie erneut eingeben.

Die Antwort ist, ins Migrationsplan das Verfahren „Geheimnisse nach dem Kontowechsel erneut eingeben“ aufzunehmen (für den Entwurf, wo Sie sie speichern, siehe „Geheimnisse in Windows-Apps speichern“). Auch kann eine Konfiguration, die mit integrierter Windows-Authentifizierung als gMSA oder PC$ fertig wird, das Speichern des Geheimnisses selbst beseitigen. Die richtige Reihenfolge ist, zuerst „können wir ohne Speichern auskommen“ zu erwägen, bevor „wo speichern wir es“.

Und wenn der Dienst „mit den Rechten des aufrufenden Benutzers“ verarbeiten will, nutzen Sie Identitätswechsel statt das Konto stärker zu machen. Dazu siehe „Windows-Identitätswechseltoken richtig handhaben“.

9.4. Prüfung — 4624 Anmeldetyp 5 ansehen

Ein Dienststart wird im Sicherheitsereignisprotokoll als Ereignis-ID 4624 (Ein Konto wurde erfolgreich angemeldet) mit Anmeldetyp 5 (Dienst: der SCM hat einen Dienst gestartet) aufgezeichnet. Das Feld „Virtual Account“ im Ereignis zeigt, ob die Anmeldung durch ein MSA / virtuelles Konto erfolgte, daher kann es auch genutzt werden, um die Nutzung verwalteter Konten zu beobachten.11

Der Ablauf der Prüfung eines DienststartsDass der SCM einen Dienst startet, wird als Ereignis-ID 4624 Anmeldetyp 5 aufgezeichnet, und das Feld Virtual Account kann identifizieren, ob die Anmeldung durch ein verwaltetes Konto erfolgteDer SCM startet einen DienstEreignis-ID 4624 aufzeichnenAnmeldetyp 5 (Dienst)Feld Virtual AccountBeobachten verwalteter Konten

Abbildung 21: Ein Dienststart wird als 4624 vom Anmeldetyp 5 aufgezeichnet, und Sie können sogar die Nutzung verwalteter Konten verfolgen.

Für ein Inventar des Ist-Zustands ist das Aggregieren der Anmeldekonten der Dienstliste die schnelle Methode.

# Aggregate which services are running as which account
Get-CimInstance Win32_Service |
    Group-Object StartName |
    Sort-Object Count -Descending |
    Select-Object Count, Name

# Inventory non-standard services running as LocalSystem (tell in-house / third-party by the path)
Get-CimInstance Win32_Service |
    Where-Object { $_.StartName -eq 'LocalSystem' -and $_.PathName -notlike '*\Windows\*' } |
    Select-Object Name, DisplayName, PathName

Wenn diese Ausgabe „einen Geschäftsdienst, der als LocalSystem läuft“ und „einen Dienst, der als Domänenbenutzer läuft“ aufreiht, ist der Entscheidungsfluss des nächsten Kapitels gerufen.

10. Entscheidungsfluss — mit vier Fragen entscheiden

Hier der Inhalt bisher als Auswahlverfahren. Beantworten Sie vier Fragen der Reihe nach.

Der Entscheidungsfluss für das AnmeldekontoDas Anmeldekonto entscheiden, indem Sie der Reihe nach die vier Fragen nach Netzwerkzugriff, Domänenbeitritt, ob eine Identität auf Maschinenebene reicht, und gMSA-Unterstützung beantwortenNeinJaNeinJaJaNeinJaNeinWin-Auth zu einem Partner?Virtuelles KontoLocalSystem falls nötigDer Domäne beigetreten?Gespeicherte Anmeldeinformationen schützenMaschinenebene genug?Virtuelles Konto + PC$App unterstützt ein gMSA?gMSABenutzer + Minderungen

Abbildung 22: Beantworten Sie die vier Fragen der Reihe nach, und welches der sechs Sie nutzen sollten, ist entschieden.

Frage 1: Greift dieser Dienst mit Windows-Authentifizierung auf eine andere Maschine im Netzwerk zu (einen freigegebenen Ordner, eine DB, eine API und dergleichen)?

Wenn nicht, ist ein virtuelles Konto der Standard. Nur wenn ein besonderes lokales Recht nötig ist, bestätigen Sie diesen Bedarf und erwägen Sie dann LocalSystem.

Frage 2: (Falls es zugreift) Ist die Maschine der Domäne beigetreten?

In einer Arbeitsgruppe können weder PC$ noch ein gMSA genutzt werden. Nutzen Sie ein Design, das die Anmeldeinformationen des Zielkontos explizit behandelt (schützen Sie den Speicher mit DPAPI oder Ähnlichem), oder erwägen Sie den Beitritt zur Domäne.

Frage 3: (In einer Domäne) Reicht eine Identität auf Maschinenebene (PC$)?

Wenn ja, ist ein virtuelles Konto (oder NetworkService) + PC$ auf der Ziel-ACL vergeben fertig. Brauchen Sie eine dienstspezifische Identität oder eine gemeinsame Identität über mehrere Server, gehen Sie zu Frage 4.

Frage 4: Unterstützt die Anwendung ein gMSA?

Wenn ja (Dinge, die die Anmeldung über einen Standardmechanismus konfigurieren — SCM, ein IIS-Anwendungspool, Aufgabenplanung — tun das im Allgemeinen), ein gMSA. Vergessen Sie nicht eine Verhaltensprüfung in einer Validierungsumgebung. Ist es unabhängig davon nicht unterstützt, nutzen Sie nach Anwendung jeder Minderung in Abschnitt 7.3 einen dedizierten Domänenbenutzer.

In einer Tabelle ist es wie folgt.

Situation Empfehlung Hinweise
Nur lokal, gewöhnliche Rechte Virtuelles Konto Die ACL an NT SERVICE\<Name> vergeben
Nur lokal, Recht jenseits Administrator ist erforderlich LocalSystem Zuerst den Bedarf des Rechts prüfen
Lokale Verarbeitung, die keine Netzwerkidentität braucht LocalService Akzeptabel, um einen bestehenden Dienst so zu belassen
Mit der Identität der Maschine auf eine Ressource in der Domäne zugreifen Virtuelles Konto (oder NetworkService) PC$ auf der Ziel-ACL vergeben
Mit einer dienstspezifischen Identität auf eine Ressource in der Domäne zugreifen gMSA KDS-Stammschlüssel + Unterstützung bestätigen
Dieselbe Identität auf mehreren Servern (Lastausgleich und dergleichen) gMSA Mit einem virtuellen Konto nicht möglich
Eine App, die kein gMSA unterstützt + eine bestimmte Identität ist nötig Ein dedizierter Domänenbenutzer Die Minderungen in Abschnitt 7.3 sind erforderlich
Eine Arbeitsgruppe + Remotezugriff ist nötig Explizite Anmeldeinformationen schützen und speichern Auch das Überdenken des Entwurfs erwägen

11. Zusammenfassung

  • Das Anmeldekonto eines Dienstes ist eine Entwurfsentscheidung, die zugleich lokale Rechte, Netzwerkidentität und Kennwortverwaltung entscheidet. Lassen Sie es nicht beim Standard (LocalSystem).
  • LocalSystem hält ein SYSTEM+Administrators-Token und starke Rechte, und der Schaden bei Übernahme ist maximiert. Die meisten Geschäftsdienste brauchen dieses Recht nicht.
  • LocalService und NetworkService sind beide mit geringen Rechten; der Unterschied ist die Netzwerkidentität (anonym oder das Computerkonto). Weil das Konto von mehreren Diensten geteilt wird, lassen sie sich jedoch nicht trennen.
  • Ein virtuelles Konto (NT SERVICE\) ist der moderne Standard, der pro Dienst trennen kann, ohne Kennwortverwaltung zu brauchen. Sie können es direkt auf einer ACL angeben, und die Konfiguration ist nur das Ändern des Anmeldekontonamens.
  • LocalSystem, NetworkService und ein virtuelles Konto gehen in einer Domänenumgebung als DOMAIN\PC$ ins Netzwerk. PC$ auf der ACL eines freigegebenen Ordners oder von SQL Server zu vergeben lässt oft einen Domänenbenutzer entbehrlich.
  • Einen Domänenbenutzer für einen Dienst zu nutzen hat die strukturellen Probleme eines Stopps durch Ablauf, der Verbreitung eines Klartextkennworts und Kerberoasting. Wenn Sie einen nutzen, sind ein dediziertes Konto + ein langes Zufallskennwort + Anmeldebeschränkungen erforderlich.
  • Ein gMSA ist ein Mechanismus, in dem AD das Kennwort automatisch erzeugt und rotiert; die Anforderungen sind eine Domäne, Funktionsebene 2012 oder höher und ein KDS-Stammschlüssel. Setzen Sie den Dienst auf „DOMAIN\Name$“ mit leerem Kennwortfeld.
  • Wenn Sie das Konto ändern, nehmen Sie das Recht „Anmelden als Dienst“, das Verschieben von Profil und %TEMP% und das erneute Eingeben DPAPI-geschützter Daten ins Migrationsverfahren auf. Die Prüfung lässt sich mit Ereignis-ID 4624 Anmeldetyp 5 bestätigen.

Wenn Sie das nächste Mal einen Dienst installieren, halten Sie auf dem Bildschirm der Anmeldeeinstellungen einen Moment inne und fragen Sie das erneut. Als wer, und wie weit, sollte dieser Dienst zugreifen können? Die Antwort sollte irgendeine Zeile der Entscheidungstabelle dieses Artikels sein.

Verwandte Artikel

Verwandte Beratungsbereiche

KomuraSoft LLC übernimmt die Gestaltung des Anmeldekontos und die Härtung auf geringste Rechte für Windows-Dienste und residente Apps, die Migration bestehender, unter der Annahme von LocalSystem gebauter Dienste zu einem virtuellen Konto oder einem gMSA sowie die Untersuchung von Ausfällen durch Zugriff verweigert, DPAPI und das Profil nach einem Kontowechsel. Vom Stadium „wir wurden in einer Prüfung beanstandet, wissen aber nicht, wo wir anfangen sollen“ zu beginnen ist in Ordnung.

Quellen

  1. Microsoft Learn, Configure Windows service accounts and permissions. Dazu, dass das Standard-Dienstkonto von SQL Server ein virtuelles Konto ist (NT SERVICE\MSSQLSERVER und dergleichen), dass Sie beim Angeben eines virtuellen Kontos oder eines MSA das Kennwortfeld leer lassen, dass ein MSA ein Name mit nachgestelltem $ ist und nicht für eine interaktive Anmeldung genutzt werden kann, dass Local Service ein geteiltes Konto ist, sich daher nicht trennen lässt und von SQL Server nicht unterstützt wird, dass die Nutzung eines Domänenkontos Aufwand in der manuellen Verwaltung von Kennwort und SPN kostet und Wartung zu einem Dienststopp führen kann, und dass Sie einen Dienst stets als Konto mit geringsten Rechten ausführen sollten.  2 3 4 5 6

  2. Microsoft Learn, Securing on-premises service accounts. Die Priorität zuerst ein gMSA für einen lokalen Dienst, dann ein sMSA, wenn das nicht nutzbar ist, dann ein Computerkonto und zuletzt ein Benutzerkonto; dass Sie bei Nutzung eines Computerkontos nicht sagen können, welcher Dienst dieses Konto nutzt, und eine Änderung nicht prüfen können; und die Rollen eines Dienstkontos (den Dienst identifizieren, authentifizieren und starten).  2 3

  3. Microsoft Learn, LocalSystem Account. Dazu, dass LocalSystem umfangreiche Rechte auf dem lokalen Computer hält und das Token die SIDs von NT AUTHORITY\SYSTEM und BUILTIN\Administrators enthält, dass es kein Kennwort hat, dass es einem Remoteserver die Anmeldeinformationen des Computers vorlegt, eine Liste von Rechten einschließlich SE_DEBUG_NAME und SE_TCB_NAME, und dass die meisten Dienste dieses Rechteniveau nicht brauchen und LocalService/NetworkService erwägen sollten.  2 3 4 5 6

  4. Microsoft Learn, sc.exe config. Dazu, dass Sie das Anmeldekonto des Dienstes mit dem Parameter obj= angeben, dass der Standard LocalSystem ist, und den Parameter password= bei Nutzung eines anderen Benutzerkontos als LocalSystem.  2

  5. Microsoft Learn, Local accounts. Dazu, dass SYSTEM (S-1-5-18) standardmäßig Vollzugriff auf ein NTFS-Volume hat, dass NETWORK SERVICE (S-1-5-20) einem Remoteserver die Anmeldeinformationen des Computers vorlegt, und dass LOCAL SERVICE (S-1-5-19) lokal minimale Rechte hält und dem Netzwerk anonyme Anmeldeinformationen vorlegt.  2 3 4

  6. Microsoft Learn, Service accounts. Dazu, dass ein virtuelles Konto ein automatisch verwaltetes lokales Konto ist, das keine Kennwortverwaltung braucht, dass der Name die Form NT SERVICE<SERVICENAME> hat, dass es in einer Domänenumgebung mit den Anmeldeinformationen des Computerkontos (\$) auf das Netzwerk zugreift, und die Kriterien für die Wahl unter sMSA, gMSA, dMSA und einem virtuellen Konto.  2 3 4

  7. Microsoft Learn, Service User Accounts. Dazu, dass ein Dienst im Sicherheitskontext eines Benutzerkontos läuft, dass der SCM sich beim Start am Konto anmeldet und ein Zugriffstoken mit dem Dienstprozess verknüpft, dass der SCM das Benutzerprofil lädt, und dass der SCM Kennwortablauf nicht verwaltet, sodass Ablauf die Anmeldung fehlschlagen lässt und der Dienst nicht startet.  2 3 4 5

  8. Microsoft Learn, Protect SMB traffic from interception. Empfehlungen einschließlich eines gMSA als Schutz des Dienstkontos (ein langes maschinenerzeugtes Zufallskennwort, das das Knacken per Brute-Force oder Wörterbuch unrealistisch macht), das Erzwingen eines langen Kennworts und eine Erwähnung von Kerberos-Härtung (FAST).  2

  9. Microsoft Learn, Secure group managed service accounts. Dazu, dass ein gMSA-Kennwort eine 240-Byte-Zufallserzeugung ist, die schwer per Brute-Force oder Wörterbuch anzugreifen ist, dass das Windows-OS das Kennwort alle 30 Tage ändert, sodass ein Administrator keine Änderung planen oder den Dienst stoppen muss, das Bereitstellen in einer Serverfarm und einfachere SPN-Verwaltung, dass Sie, wenn ein Dienst kein gMSA unterstützt, ein sMSA nutzen und wenn das auch nicht möglich ist ein Standardbenutzerkonto mit starker Kennwortverwaltung, und dass Sie das Verhalten als gMSA in einer Testumgebung vor der Produktion bestätigen sollten.  2 3

  10. Microsoft Learn, Manage group Managed Service Accounts. Die Voraussetzungen des gMSA (Domänen-/Gesamtstrukturfunktionsebene 2012 oder höher, Anlegen eines KDS-Stammschlüssels), dass der gMSA-Name in der Gesamtstruktur eindeutig sein muss, dass das Kennwortänderungsintervall nur bei der Erstellung gesetzt werden kann, das Angeben der zum Abrufen des Kennworts berechtigten Gruppe mit -PrincipalsAllowedToRetrieveManagedPassword von New-ADServiceAccount, das Verfahren Install-ADServiceAccount/Test-ADServiceAccount, dass die Identität eines virtuellen Kontos maschinenlokal ist und von der Domäne nicht erkannt wird, dass ein Failovercluster kein gMSA unterstützt, und dass SCM, ein IIS-Anwendungspool und die Aufgabenplanung das Konfigurieren der Anmeldung als gMSA unterstützen.  2 3 4 5

  11. Microsoft Learn, 4624(S): An account was successfully logged on. Dazu, dass Ereignis 4624 auf dem zugegriffenen Computer aufgezeichnet wird, wenn eine Anmeldesitzung erzeugt wird, dass Anmeldetyp 5 einen Dienst bedeutet (der SCM startet einen Dienst), und dass das Feld „Virtual Account“ eine Anmeldung durch ein MSA oder ein virtuelles Konto identifizieren und zur Beobachtung verwalteter Dienstkonten genutzt werden kann.  2

  12. Microsoft Learn, About Windows Resource Protection. Dazu, dass Windows-Ressourcenschutz (WRP) das Ersetzen wichtiger Systemdateien, Ordner und Registrierungsschlüssel verhindert, dass Vollzugriff auf eine WRP-geschützte Ressource auf TrustedInstaller beschränkt ist und eine Änderung nur über den unterstützten Ersatzmechanismus über den Windows-Modules-Installer-Dienst erfolgen kann, und dass eine Anwendung, die eine geschützte Ressource zu ändern versucht, Zugriff verweigert erhält. 

  13. Microsoft Learn, Group Managed Service Accounts overview. Dazu, dass ein gMSA ein Domänenkonto ist, das die Kennwortverwaltung Windows überlässt, dass der Domänencontroller das Kennwort aus dem gemeinsamen Geheimnis des Key Distribution Service (kdssvc.dll) berechnet und ein Mitgliedshost den Domänencontroller nach dem aktuellen und dem vorherigen Kennwort abfragt, und dass es gegenseitige Authentifizierung als derselbe Prinzipal in einer Serverfarm ermöglicht. 

  14. Microsoft Learn, Create a Key Distribution Service (KDS) root key. Dazu, dass ein Stammschlüssel nötig ist, damit der Domänencontroller mit der Erzeugung von gMSA-Kennwörtern beginnt, das Anlegeverfahren mit Add-KdsRootKey -EffectiveImmediately, dass Sie bis zu 10 Stunden nach dem Anlegen kein gMSA anlegen können, weil Sie auf das Zusammenlaufen der AD-Replikation warten, und dass unvollständige Replikation das Abrufen des Kennworts fehlschlagen lassen kann. 

  15. Microsoft Learn, Policy CSP - UserRights: LogOnAsService. Dazu, dass das Recht „Anmelden als Dienst“ einem Sicherheitsprinzipal erlaubt, sich als Dienst anzumelden, dass Local System, Local Service und Network Service dieses Recht eingebaut haben, dass ein als irgendein anderes Konto ausgeführter Dienst dieses Recht zugewiesen braucht, und den Gruppenrichtlinien-Konfigurationspfad. 

Aktuelle Artikel mit denselben Schlagwörtern führen zu verwandten Themen weiter.

Diese Seiten ordnen den Artikel in einen größeren Leistungs- und Entscheidungskontext ein.

Dieser Artikel ist direkt mit den folgenden Leistungen verbunden.

Häufige Fragen

Fragen, die in Beratungen zu diesem Artikelthema häufig gestellt werden.

Soll ich einen Dienst, den ich vorerst unter LocalSystem laufen lasse, sofort ändern?
Eine sofortige Änderung ist nicht in jedem Fall die richtige Antwort. Prüfen Sie zuerst, ob dieser Dienst wirklich LocalSystem-artige lokale Rechte braucht (starke Rechte jenseits eines Administrators). Geht es nur um Dateilesen und -schreiben und Netzwerkkommunikation, ist der Wechsel zu einem virtuellen Konto (NT SERVICE\Dienstname) der erste Kandidat. Bei der Migration prüfen Sie die Vergabe von Zugriff auf benötigte Ordner und Registrierungsschlüssel, den Umgang mit Daten, die von Profil oder DPAPI abhängen, und ob das Recht „Anmelden als Dienst“ vorliegt. Prüfen Sie Start und die Hauptfunktionen in einer Validierungsumgebung, dann stellen Sie die Produktion um.
Soll ich ein virtuelles Konto oder NetworkService wählen?
Für eine neue Wahl empfehlen wir ein virtuelles Konto. Im Netzwerk erscheinen beide als Computerkonto (DOMAIN\Computername$), und beide haben kleine lokale Rechte. NetworkService wird jedoch von mehreren Diensten geteilt, sodass Sie mit einer ACL nicht „nur diesem Dienst erlauben“ trennen können. Ein virtuelles Konto hat eine Identität, die jedem Dienst eigen ist, und Sie können NT SERVICE\Dienstname direkt auf einer ACL angeben. Neuere Microsoft-Produkte wie SQL Server nutzen ebenfalls standardmäßig ein virtuelles Konto.
Kann ich ein gMSA in einer Arbeitsgruppenumgebung (ohne Domäne) nutzen?
Nein. Ein gMSA ist ein Mechanismus, bei dem ein Active-Directory-Domänencontroller das Kennwort erzeugt und verwaltet; eine Domäne und das Anlegen eines KDS-Stammschlüssels sind Voraussetzungen. In einer Arbeitsgruppe ist die Basis, lokale Verarbeitung mit einem virtuellen Konto oder LocalService/NetworkService abzuschließen. Brauchen Sie Zugriff auf eine andere Maschine, brauchen Sie ein anderes Design, etwa die explizite Nutzung der Anmeldeinformationen eines auf dem Ziel vorbereiteten Kontos. Netzwerkzugriff als Computerkonto (PC$) gilt ebenfalls nur in einer Domänenumgebung.
Nachdem ich das Anmeldekonto des Dienstes geändert habe, kann ich gespeicherte Einstellungen und Anmeldeinformationen nicht mehr lesen. Warum?
Weil jedes Anmeldekonto an sein eigenes Benutzerprofil, %TEMP%, HKEY_CURRENT_USER und den DPAPI-Schlüssel gebunden ist. Insbesondere Daten, die mit benutzerbezogenem DPAPI (CryptProtectData und Ähnliches) geschützt wurden, können grundsätzlich nur von demselben Konto entschlüsselt werden, das sie geschützt hat. Dateien unter dem Profil (AppData und Ähnliches) sind vom neuen Konto aus auch ein anderer Pfad. Bevor Sie Konten wechseln, planen Sie das Verfahren zum Neuaufbauen DPAPI-geschützter Daten (erneutes Eingeben von API-Schlüsseln und Ähnliches) und das Migrieren von Dateien unter dem Profil.
Wenn der Dienst nur auf einen freigegebenen Ordner zugreifen soll, brauche ich einen Domänenbenutzer?
In vielen Fällen nein. In einer Domänenumgebung authentifiziert sich ein Dienst, der als LocalSystem, NetworkService oder virtuelles Konto läuft, gegenüber der Gegenseite als Computerkonto (DOMAIN\Computername$). Fügen Sie dieses PC$ den Freigabeberechtigungen und den NTFS-Berechtigungen des freigegebenen Ordners hinzu, und er kann lesen und schreiben. Wollen Sie Zugriffssteuerung mit einer dienstspezifischen Identität oder dieselbe Identität auf mehreren Servern, erwägen Sie ein gMSA statt eines Domänenbenutzers.

Autorenprofil

Profilseite des Artikelautors.

Go Komura

Geschäftsführer von KomuraSoft LLC

Spezialisiert auf Windows-Softwareentwicklung, technische Beratung und Fehleranalyse, insbesondere bei bestehenden Systemen und schwer reproduzierbaren Störungen.

Zurück zum Blog