Dieser Artikel basiert auf meinem Golem+ (Paywall) Artikel „Vom alten auf das neue LAPS migrieren“ vom 06.09.2023 und wurde komplett überarbeitet und ergänzt.
In der heutigen Zeit gewinnt das Thema IT-Sicherheit immer mehr an Bedeutung. Ein möglicher Angriffspunkt waren schon immer die lokalen Administrator-Passwörter. Oftmals waren diese fest im Installationsimage verankert und wurden seit Jahren nicht mehr geändert. Dies stellt nicht nur ein Risiko durch ehemalige Mitarbeiter dar, sondern auch laterale Bewegungen können eine Gefahr darstellen. Dabei springt der Angreifer von einem System zum anderen und nutzt den erbeuteten Account, um sich von Rechner zu Rechner zu bewegen. Ein solcher Angriff kann über lokale Administratorkonten erfolgen. Oft wird das gleiche Passwort auf mehreren Systemen verwendet. Angreifer, die ein solches Passwort oder Token erlangen, können sich dann als Administrator ausgeben und auf weitere Systeme zugreifen. Dort können sie Daten ausspionieren, Schadsoftware installieren und sich weiter vorarbeiten. Möglicherweise war dies auch eine Möglichkeit beim Bundestagshack 2015.
Viele Unternehmen nutzten bereits Gruppenrichtlinien, um lokale Passwörter regelmäßig zu ändern. Allerdings wurden die neuen Passwörter dort im Klartext angezeigt, was Microsoft dazu zwang, im Mai 2014 diese Möglichkeit abzuschalten. Hierzu gibt es auch einen alten KB-Artikel KB2962486 / MS14-025.
Um dieses Problem zu lösen, hat Microsoft am 1. Mai 2015 LAPS veröffentlicht. Die erste Version hatte die Versionsnummer 6.0.1.0 (6.0 passend zur Betriebssystemversion). Ich habe 2017 einen Artikel zum Thema „Local Administrator Password Solution (LAPS)“ geschrieben.
Rückblick, was ist Microsoft Local Administrator Password Solution (LAPS)
Die Local Administrator Password Solution (LAPS) ändert automatisch die Passwörter eines lokalen Kontos und speichert sie im Active Directory. Hierfür werden eine Client Side Extension (CSE) und eine Active Directory Schema Extension verwendet. Das Passwort auf dem Computer wird erst nach erfolgreicher Änderung im Active Directory geändert. Die Verwendung von Active Directory-Berechtigungen auf die verwendeten AD-Attribute ermöglichte nicht nur das Auslesen von Passwörtern, sondern es konnte auch protokolliert werden, wer Zugriff hatte. Ich habe diese Möglichkeit in Kombination mit WinRM (über HTTPs) genutzt, um Skripte remote als lokaler Administrator auszuführen und das Passwort direkt ändern zu lassen. Dadurch musste ich mich nicht mit einem Domänenbenutzer mit Adminrechten anmelden. Außerdem ist im EventLog ersichtlich, in welchem Zeitraum ich das Passwort des Accounts kannte. Somit ist nachvollziehbar, wer mit dem nicht personalisierten Account gearbeitet hat (IT-Grundschutz€ OPS.1.1.2 Ordnungsgemäße IT-Administration).
Aber es gab auch Schattenseiten von LAPS:
- Keine Passworthistorie. Es kann schwierig sein, alte Backups wiederherzustellen, wenn sich das Passwort des Rechners geändert hat und die Anmeldung an der Domäne nicht mehr funktioniert.
- Die Verwendung eines lokalen Active Directorys und dessen Verbindung ist zwingend erforderlich (VPN kann je nach GPO-Einstellungen ein Problem darstellen). AzureAD wird nicht unterstützt.
- Passwörter werden im AD im Klartext gespeichert und nur durch die Access Control List (ACL) geschützt.
- Wenn das System auf einem Domänencontroller eingesetzt wird, wird das Konto „Administrator“ in der Domäne behandelt. Es kann schwierig sein, das zuletzt gesetzte Kennwort auf einem der 20 DCs zu finden.
Windows LAPS – Ein Überblick
Windows LAPS ist eine konzeptionelle Weiterentwicklung von Microsoft LAPS. Es wurde mit den folgenden April-Updates 2023 freigegeben:
- Windows 10 (21H2 und 22H2) KB5025221
- Windows 11 (22H1) KB5025224
- Windows 11 (22H2) KB5025239
- Windows Server 2019 KB5025229 (Auch Windows 10 Enterprise LTSC 2019)
- Windows Server 2022 KB 5025230
Andere Versionen werden nicht unterstützt. Microsoft LAPS ist weiterhin für diese Versionen erforderlich.
Windows LAPS wurde komplett überarbeitet und bietet nun einige neue Funktionen. Dazu gehört unter anderem die Verwendung von AzureAD als Zielspeicher (derzeit noch in einer Preview-Version). In der On-Premise-Welt kann nun auch das Active Directory Services Restore Mode (DSRM) Passwort von Domain Controllern verwaltet und gesichert werden. Bei einer Wiederherstellung des Active Directory oder bei Problemen mit einem Domänencontroller wird dieses Passwort benötigt. Es sollte individuell sein und regelmäßig geändert werden. Oft ist es in einem Skript fest definiert und bleibt seit der Erstellung des Skripts gleich.
Weitere Neuerungen sind die Möglichkeit, das Passwort zu verschlüsseln, und die automatische Änderung des Passworts nach Gebrauch. Die Passworthistorie kann jetzt bis zu 12 Passwörter enthalten. Eine der wichtigsten Änderungen ist, dass LAPS jetzt nativ in Windows enthalten ist. Es muss keine DLL- oder MSI-Datei mehr verteilt werden, um LAPS zu installieren.
Für Administratoren ändert sich auch einiges. Aus Kompatibilitätsgründen gibt es neue Gruppenrichtlinien und neue AD-Schema-Attribute.
Einige Funktionen haben spezifische Anforderungen. Zum Beispiel erfordern verschlüsselte Passwörter eine Domänenfunktionsebene von Windows Server 2016 (auch bekannt als WinThreshold), für die Microsoft die Data Protection API verwendet. Zum Beispiel erfordern verschlüsselte Passwörter eine Domänenfunktionsebene von Windows Server 2016 (auch bekannt als WinThreshold), für die Microsoft die Data Protection API verwendet. Für Administratoren gibt es ein neues PowerShell-Modell und einen neuen Reiter für LAPS in der Konsole Active Directory Users and Computers.
Darüber hinaus gibt es einen eigenen Eventlog-Kanal für das neue LAPS.
Der Weg von Microsoft (Legacy) LAPS zu Windows LAPS
Microsoft empfiehlt allen Kunden, auf die neue Lösung zu migrieren.
Zum einen hat Microsoft einen Legacy-Modus eingebaut. Der neue Windows Local Administrator Password Solution (LAPS) Client verhält sich wie der alte Microsoft LAPS Client, einschließlich der Art der Passwortspeicherung. Dies ist für Unternehmen gedacht, die etwas Zeit für die Umstellung benötigen. Es gibt jedoch einige Stolpersteine. Es gibt jedoch einige Dinge zu beachten:
- Microsoft LAPS darf nicht installiert sein, ansonsten wird Windows LAPS automatisch deaktiviert.
- Es stehen die alten Funktionen und Methoden sowie der Legacy Client bzw. das Legacy PowerShell Modul und das neue PowerShell Modul zum Auslesen von Passwörtern zur Verfügung.
- Dies ist nur für eine Übergangsphase gedacht, d.h. bis den alten Client überall entfernt wurde.
- Nach der Installation des Updates kann der Legacy Microsoft LAPS nicht mehr korrekt installiert werden. Die Softwareverteilung bzw. das Deployment von LAPS muss daher entsprechend angepasst werden.
Für diesen Artikel wird davon ausgegangen, dass die Updates mit Windows LAPS noch nicht ausgerollt wurden. Der Artikel ist jedoch auch für Umgebungen geeignet, in denen die Updates bereits ausgerollt wurden. In diesem Fall können einige Schritte entfallen und die Reihenfolge kann bei Bedarf geändert werden. Das Betriebssystem, das verwendet wird, ist Windows Server 2022. Die Funktionsebene für Forrest und Domäne befinden sich auf Windows Server 2016, derzeit die höchste verfügbare Version.
Zunächst wird die Umgebung für Windows LAPS vorbereitet, dann werden die Systeme angepasst und anschließend werden die einzelnen Organisationseinheiten auf Windows LAPS umgestellt.
Hier sind die Schritte in der richtigen Reihenfolge:
- Prüfen des Legacy LAPS vor der Umstellung auf den Legacy Mode mit Windows LAPS
- Update mit Microsoft LAPS ausrollen (bei einigen bereits unwissentlich geschehen)
- Aktualisierung der Gruppenrichtlinienvorlagen (ADMX)
- Deaktivieren der Verteilung von Legacy Microsoft LAPS
- überprüfen, ob Windows LAPS korrekt installiert und deaktiviert ist
- Deinstallation von Legacy Microsoft LAPS
- Prüfen, ob Windows LAPS im Legacy Modus läuft
- Umstellung der Gruppenrichtlinien von Legacy LAPS auf Windows LAPS
Vorbereitungen für den Umstieg auf Windows LAPS
Prüfen des Legacy LAPS vor der Umstellung auf den Legacy Mode mit Windows LAPS
Vor Beginn der Migration sollte überprüft werden, ob der LAPS ordnungsgemäß funktioniert. Die Überprüfung kann am einfachsten mit Hilfe der PowerShell durchgeführt werden. Hierfür muss das Legacy LAPS PowerShell-Modul auf dem Rechner installiert sein und der Benutzer muss über die entsprechenden Rechte verfügen, um die LAPS-Passwörter anzuzeigen.
Der Befehl lautet:
Get-AdmPwdPassword -ComputerName * | ft -AutoSize
Achtung: Falls die Domänencontroller ebenfalls ein Passwort besitzen, muss das Passwort des Domänenbenutzers „Administrator“ geändert werden, da es auf Domänencontrollern keine lokalen Benutzerkonten gibt. Überprüfen Sie, welches das richtige Passwort ist und ändern Sie es dann. Mein Tipp: Machen Sie aus dem Administrator ein Notfallkonto mit einem langen, zufällig generierten Passwort. Sie die Zugangsdaten in einem versiegelten Umschlag im Safe auf.
Interessanterweise werden auch Group Managed Service Accounts (GMSA) Konten angezeigt. Ich vermute, dass dies aufgrund des ‚$‘ im Benutzernamen geschieht.
Update mit Microsoft LAPS ausrollen
Die installierten Hotfixes können am einfachsten mit dem PowerShell Befehl ‚Get-Hotfix‘ überprüft werden. Da nicht alle Hotfixes durch die kumulativen Updates aufgelistet werden, ist dies jedoch nicht zu 100% aussagekräftig. Alternativ können Sie prüfen, ob die aktuellen Windows-Updates installiert sind, oder Sie können die Gruppenrichtlinienvorlagen wie im nächsten Schritt beschrieben überprüfen.
Oder prüfen, ob der Event-Kanal für das Windows LAPS existiert. Der PowerShell Befehl „get-winevent -ProviderName Microsoft-Windows-LAPS -MaxEvents 5“ ermöglicht eine einfache Durchführung.
Importieren der Gruppenrichtlinienvorlage in den Central Store
Mit dem Update auf dem Server werden auch die lokalen Vorlagen für die Gruppenrichtlinien aktualisiert. Diese befinden sich im Ordner „C:\Windows\PolicyDefinitions“.
Am
einfachsten geht das mit der PowerShell:
Get-ChildItem -Path "C:\Windows\PolicyDefinitions" -Filter "Laps.adm*" -Recurse | ForEach-Object {
$destination = $_.FullName.Replace("C:\Windows\PolicyDefinitions", "C:\Windows\SYSVOL\domain\Policies\PolicyDefinitions")
$destinationDir = Split-Path -Path $destination -Parent
if (!(Test-Path -Path $destinationDir)) { New-Item -ItemType Directory -Path $destinationDir | Out-Null }
Copy-Item -Path $_.FullName -Destination $destination
}
Wenn die GPO-Vorlagen veraltet sind, sollten sie vollständig aktualisiert werden. Weitere Informationen zu verschiedenen Gruppenrichtlinienvorlagen finden Sie im Artikel „Liste verschiedener Gruppenrichtlinien Vorlagen“ . Dort sind auch Gruppenrichtlinienvorlagen von anderen Herstellern wie Google, Adobe, Mozilla und vielen anderen aufgeführt.
Nach dem der Installation von Microsoft LAPS
Nach dem Update mit Microsoft LAPS ändert sich das Verhalten von LAPS. Es wird ein neues EventLog namens ‚Microsoft-Windows-LAPS‘ hinzugefügt, welches mit folgendem PowerShell Befehl aufgerufen werden kann:
get-winevent -ProviderName Microsoft-Windows-LAPS -MaxEvents 10 | ft -AutoSize
Das EventLog des Legacy LAPS kann mithilfe des folgenden PowerShell-Befehls aufgerufen werden:
get-winevent -ProviderName AdmPwd -MaxEvents 10 | ft -AutoSize
Die Event-IDs für Windows LAPS werden im Kapitel „EventIDs von Windows LAPS“ beschrieben.
Steuerung über Legacy LAPS GPO
Wenn Sie nun das Passwort mit dem Legacy LAPS PowerShell-Befehl ändern, hängt der Ablauf davon ab, ob das Legacy LAPS noch installiert ist oder der Windows LAPS im Legacy-Modus arbeitet. Das Endergebnis, das geänderte Passwort, bleibt jedoch dasselbe.
Ereignisse mit Legacy LAPS installiert
Wenn der Legacy LAPS installiert ist, ist er das führende System. Der Windows LAPS hingegen ist passiv. Den genauen Ablauf im Hintergrund zur Microsoft LAPS können Sie bei Bedarf in meinem Artikel „Local Administrator Password Solution (LAPS)“ nachlesen.
Das AdmPwd Log enthält die üblichen Einträge, der Legacy LAPS arbeitet ganz normal.
Im neuen LAPS-Log gibt es einen Eintrag mit der EventID 10033 und der Meldung „The machine is configured with legacy LAPS policy settings but a legacy LAPS product appears to be installed. The configured account’s password will not be managed by Windows until the legacy product is uninstalled. Alternatively you may consider configuring the newer LAPS policy settings.“. Was genau das ist, was erwartet wird.
Ereignisse nach der Deinstallation vom Legacy LAPS
Nach der Deinstallation des Legacy LAPS ist das alte Log nicht mehr vorhanden. Später in diesem Artikel wird erklärt, wie dies am einfachsten durchgeführt werden kann.
Das EventLog des Windows LAPS zeigt, wie es jetzt im Legacy-Modus arbeitet.
In beiden Fällen werden die lokalen Administratorpasswörter geändert.
Das neue PowerShell-Modul für Windows LAPS ermöglicht auch das Abfragen von Passwörtern des Legacy Microsoft LAPS.
Befehle im Windows LAPS PowerShell Modul
Das PowerShell-Modul ist verfügbar, sobald Windows LAPS mit dem Update installiert wurde. Eine nachträgliche Installation für ältere Management-Plattformen ist nicht vorgesehen und wird nicht unterstützt. Einige der neuen PowerShell-Befehle funktionieren mit dem Legacy LAPS und den Legacy LAPS-Einstellungen, wie zum Beispiel Get-LapsADPassword. Leider funktionieren nicht alle, wie zum Beispiel Set-LapsADPasswordExpirationTime.
In der Übergangsphase bei manuellen Tätigkeiten oder vorhandener Automatisierung muss sorgfältig geprüft werden, ob alles korrekt funktioniert.
Im Folgenden finden Sie eine Gegenüberstellung der alten und neuen PowerShell-Befehle.
Windows LAPS Cmdlet | Legacy Microsoft LAPS Cmdlet | Beschreibung (Windows LAPS) |
---|---|---|
Find-LapsADExtendedRights | Find-AdmPwdExtendedRights | Wird verwendet, um herauszufinden, welche Identitäten Berechtigungen für eine Organisationseinheit (OU) im On-Premise Active Directory erhalten haben. |
Get-LapsAADPassword | Nichtzutreffend | Wird verwendet, um das Azure Active Directory nach Windows LAPS Passwörtern zu durchsuchen. |
Get-LapsADPassword | Get-AdmPwdPassword | Wird verwendet, um das On-Premise Active Directory nach Windows LAPS Passwörtern zu durchsuchen. |
Get-LapsDiagnostics | Nichtzutreffend | Wird verwendet, um diagnostische Informationen zur Untersuchung von Problemen zu sammeln. |
Invoke-LapsPolicyProcessing | Nichtzutreffend | Wird verwendet, um einen Richtlinienbearbeitungszyklus zu starten. |
Reset-LapsPassword | Nichtzutreffend | Wird verwendet, um eine sofortige Passwortrotation zu initiieren. Wird nur verwendet, wenn das Passwort entweder im Azure Active Directory oder im On-Premise Active Directory gespeichert ist. |
Set-LapsADAuditing | Set-AdmPwdAuditing | Dient zur Konfiguration der Windows LAPS-bezogenen Überwachung von OUs im On-Premise Active Directory. |
Set-LapsADComputerSelfPermission | Set-AdmPwdComputerSelfPermission | Wird verwendet, um eine OU im On-Premise Active Directory so zu konfigurieren, dass Computerobjekte ihre Windows LAPS-Passwörter aktualisieren können. |
Set-LapsADPasswordExpirationTime | Reset-AdmPwdPassword | Wird verwendet, um die Gültigkeitsdauer des Windows LAPS-Kennworts eines Computers im On-Premise Active Directory zu aktualisieren. |
Set-LapsADReadPasswordPermission | Set-AdmPwdReadPasswordPermission | Wird verwendet, um die Berechtigung zum Lesen der Windows LAPS-Kennwortinformationen im On-Premise Active Directory zu erteilen. |
Set-LapsADResetPasswordPermission | Set-AdmPwdResetPasswordPermission | Wird verwendet, um die Berechtigung zu erteilen, die Gültigkeitsdauer des Windows LAPS-Kennworts im On-Premise Active Directory zu aktualisieren. |
Update-LapsADSchema | Update-AdmPwdADSchema | Wird verwendet, um das On-Premise Active Directory Schema mit Windows LAPS Schema Attributen zu erweitern. |