Häufig werden Service Accounts für den Start von Windows Diensten oder geplanten Aufgaben mit dem Attribut „Passwort läuft nie ab“ konfiguriert und dann jahrelang genutzt. Oft werden solche Service Accounts auch zweck entfremdet und auf vielen Servern für verschiedenste Aufgaben eingesetzt. Service Accounts mit weit reichenden Berechtigungen und nie ablaufenden Passwörtern erleichtern es dann den Angreifern. Eine Alternative sind Group Managed Service Accounts (gMSA-Konten).
Group Managed Service Accounts (gMSA-Konten) eignen sich besser für den Start von geplanten Aufgaben und Diensten als normale Active Directory Benutzerkonten mit nie ablaufenden Passwort. Der Hauptvorteil der gMSA-Konten ist, dass für dieses Konto kein Passwort verwaltet werden muss. gMSA-Konten werden auf den Servern konfiguriert und Windows übernimmt die Passwortverwaltung für das Konto.
Dies erleichtert die Verwaltung von Service Accounts, da keine manuelle Benutzerinteraktion erforderlich ist, um das Kennwort regelmäßig zu ändern. Zusätzlich werden diese Konten auf bestimmte Server eingeschränkt, so lassen sich die gMSA-Konten nicht so leicht zweckentfremden und auf vielen Servern für unterschiedliche Aufgaben nutzen.
Vorbereitung für gMSA-Konten (KDS Root Key)
Damit gMSA-Konten erstellt und genutzt werden können, wird zunächst ein KDS Root Key für das Erzeugen der Passwörter benötigt. Der KDS Root Key lässt sich mit folgendem Befehl erzeugen:
Add-KdsRootKey -EffectiveImmediately
Jetzt müssen 10 Stunden gewartet werden, bevor die ersten Konten erstellt werden können. Hierbei handelt sich um eine Funktion um sicherzustellen, dass alle Domänencontroller die Replikation abgeschlossen haben, bevor die ersten gMSA Konten erstellt werden. Dadurch wird verhindert, dass Passwörter generiert werden, bevor alle Domänencontroller in der Lage sind, die Passwortanfragen / Passwortwechsel zu beantworten. Auch wenn es nur ein Domaincontroller geben sollte, muss hier trotzdem 10 Stunden gewartet werden.
Tipp: Wer keine 10 Stunden warten will, kann den folgenden Befehl benutzen, dies funktioniert aber nur, wenn es noch keinen KDS Root Key gibt:
Add-KdsRootKey -EffectiveTime (Get-Date).AddHours(-10)
Der sichere Weg ist aber die 10 Stunden abzuwarten und die erfolgreiche Replikation zu prüfen, damit es nicht zu Problemen kommt.
gMSA-Konten erstellen
Nachdem die 10 Stunden vergangen sind, können neue gMSA-Konten mit dem folgenden Befehl erzeugt werden:
New-ADServiceAccount -Name msa_ex19ex1 -DNSHostName msa_ex19ex1.frankysweblab.de -PrincipalsAllowedToRetrieveManagedPassword EX19EX1$
Der Parameter „Name“ legt den Names des neuen Kontos fest, für den Parameter „DNSHostName“ sollte der Name des Kontos gefolgt von dem FQDN der Domain gewählt werden. Im DNS muss dieser Eintrag nicht angelegt werden. Der Parameter „PrincipalsAllowedToRetrieveManagedPassword“ gibt an, welche Server das Konto verwenden dürfen (mehrere Server lassen sich durch Komma getrennt angeben).
Das neue Konto findet sich jetzt in der OU „Managed Service Accounts“ im Active Directory:
Das Konto kann nun mit den entsprechenden Berechtigungen ausgestattet werden, damit Scripte oder Dienste ausgeführt werden können. Beispielsweise lässt sich das gMSA-Konto nun zur Exchange Gruppe „View-Only Organization Management“ hinzufügen, somit könnte man mit diesem Konto Scripte starten, welche lesenden Zugriff auf die Exchange Organisation benötigen:
Sollte es nötig sein, dass lokale Administrator Rechte auf dem Server benötigt werden, kann das Konto auch zur lokalen Admin Gruppe des Servers hinzugefügt werden:
Das gMSA-Konto wechselt in der Standardeinstellung alle 30 Tage das Passwort. Der Passwort Wechsel erfolgt automatisch und es nicht manuell eingegriffen werden. Mit dem folgenden Befehl lässt sich lässt sich ein Konto mit 60 Tage Passwortwechsel Intervall erstellen:
New-ADServiceAccount -Name msa_ex19ex1 -DNSHostName msa_ex19ex1.frankysweblab.de -PrincipalsAllowedToRetrieveManagedPassword EX19EX1$ -ManagedPasswordIntervalInDays 60
Um sich alle Attribute eines des Kontos anzuschauen, kann der folgende Befehl verwendet werden:
Get-ADServiceAccount msa_ex19ex1 -Properties *
gMSA-Konten nutzen
Um einen Dienst mit einem gMSA-Konto zu starten muss nur das entsprechende Konto ausgewählt werden, dass Passwort Feld bleibt leer:
Nachdem der Dienst neu gestartet wurde, wird das gMSA-Konto benutzt. Der Abruf und das Wechseln des Passworts nach der festgelegten Zeit, passiert nun automatisch.
Bei einem geplanten Task funktioniert das Zuweisen des Kontos über die Shell mit folgendem Befehl:
schtasks /Change /TN "FrankysWeb Demo" /RU "frankysweblab\msa_ex19ex1$" /RP ""
Einschränkungen
Leider gibt es für gMSA-Konten auch Einschränkungen, für geplante Tasks und Windows Dienste eignen sich diese Konten sehr gut, jedoch können diese Konten nicht in Anwendungen eingetragen und genutzt werden. Beispielsweise benötigen viele Anwendungen einen Service Account um Informationen aus dem Active Directory abrufen zu können, diese Accounts werden dann meistens statisch in der Anwendung eingetragen. Hier funktioniert dann der automatische Passwortwechsel nicht. In diesem Fall helfen nur spezielle, meistens recht aufwendige, PAM-Lösungen oder eine gute Dokumentation verbunden mit sehr viel Disziplin und einem guten Auditprozess.