Migration LAPS Legacy zu LAPS native

13.04.2023 | Autor: Mark Heitbrink

LAPS - Local Admin Password Solution

das frei verfügbare und voll supportete LAPS, das seit 05/2015 als Produkt verfügbar ist wird etwas aufpoliert. Es bekommt lang vermisste Funktionen die teilweise schon in der Kaufvariante von LAPS aka LAPS-E, AdmPwd.E zu finden waren.

By popular demand: Windows LAPS available now! - Microsoft Community Hub

Die Kennworte werden jetzt verschlüsselt im AD gespeichert. Das Active Directory Users und Computers Interface bekommt einen neuen Karteireiter auf den Computer Konten/Eigenschaften für LAPS verpasst. Es gibt eine Historie der Kennworte und sie können sowohl im AD onPrem, als auch im Azure AD in der Cloud gespeichert werden. Das DSRM Kennwort kann ebenfalls auf den DCs festgelegt werden.

Es gibt auch eine unter MIT Lizenz ausgeliefert "SimpleLapsGUI" auf Github
GitHub - htcfreek/SimpleLapsGui: A simple and fast GUI for Microsoft LAPS (legacy) and Windows LAPS. With this tool you can query passwords and change the expiration timestamp.

Bedingungen:

  • DFL 2016 um die Kennworte zu verschlüsseln. Sonst geht nur Plaintext
  • DC 2016: Das Schema Update wird von einem W11 Client oder MemberServer 2019 ausgeführt. Die Kennwort Encryption muss explizit deaktiviert werden. Sonst ging es bei mir nicht.
  • DFL 2016 und DC Operating System 2019 oder höher, dann kömnen die PoSH Befehle am DC ausgeführt werden. Das Kennwort kann verschlüselt gespeichert werden, Das DSRM Kennwort kann gesetzt werden.
  • Der Rest geht auch mit Server 2003, wenn er noch supported wäre :-)

Die wichtigste Frage ist wohl gerade, was mache ich wenn es schon LAPS im Unternehmen gibt und was passiert, wenn ich das neue einführe?

Ihr müsst euch am Client für eine der beiden Varianten entscheiden, denn beide LAPS Versionen ändern das Kennwort eines Lokalen Accounts, idR das des Administrators. Sind beide Versionen parallel im Einsatz gewinnt halt der Last Writer.

Don't Panic

Egal, welche LAPS Version am Client gewinnt, in beiden Fällen steht das Kennwort im Active Directory in den Attributen des Computerobjekts. LAPS legacy und LAPS nativ verwenden unterschiedliche AD Attribute, sodass es nicht zu einer Überschneidung/Überschreibung kommen kann. Ebenfalls verwenden sie unterschiedliche Richtlinien/Registry Einträge am Client, sodass es auch hier zu keiner Kollision kommen kann.

AD Attribute:
     msLAPS-EncryptedDSRMPasswordHistory
     msLAPS-EncryptedDSRMPassword
     msLAPS-EncryptedPasswordHistory
     msLAPS-EncryptedPassword
     msLAPS-Password = legacy: ms-Mcs-AdmPwd
     msLAPS-PasswordExpirationTime = legacy: ms-Mcs-AdmPwdExpirationTime

Es gibt Stand April 2023 einen Konflikt, wenn das alte LAPS Legacy auf einem Rechner installiert wird, auf dem schon der Patch von 04-2023 ausgerollt ist. Im Deployment wird der Rechner meist komplett gepatcht und dann erst kommt die Software. Aus dem Grund ändere ich die Reihenfolge der Punkte zu der folgenden. Der Bug betrifft NICHT! die Rechner, die schon seit lange mit LAPS bestückt sind.

Probleme und Kommentare findet ihr im Blog von Jay Simmons und bei Günter Born:
By popular demand: Windows LAPS available now! - Microsoft Community Hub
LAPS-Integration per April 2023-Update in Windows – Ärger für Administratoren | Borns IT- und Windows-Blog (borncity.com)

Wer das neue LAPS Native schon integrieren möchte, aber noch nicht aktiviert haben will, der kann schon wie vorher die Funktion per Richtlinie steuern. Die Formulierung ist nicht direkt offensichtlich:

Computerkonfiguration\Administrative Vorlagen\System\LAPS
Kennwortsicherungsverzeichnis konfigurieren = Aktiviert
     Sicherungsverzeichnis = 0=Deaktiviert (Kennwort wird nicht gesichert)
     Kommentar: oder per RegHack HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\LAPS, DWord BackupDirectory = 0

Step 1:

LAPS Legacy an den Clients deaktivieren und/oder das MSI deinstallieren. Es wird nichts passieren und es geht nichts verloren. Für einen kurzen Moment werden keine Kennworte des definierten Lokalen Kontos aktualisiert. Es bleibt am System wie es ist und damit bleibt es auch im AD wie es dort gespeichert ist. Es ist dieselbe Situation, wie ein Offline Client, der lange keinen Kontakt zum AD hatte. 
Anstelle der Deinstallation könnt ihr auch LAPS Legacy per Richtlinie deaktivieren. was mein präferierter Vorgang ist, da es idR leichter ist.

Step 2:

Das Update 04-2023 auf allen Rechnern installieren, auch dem Domänen Controller.

Step 3:

Als Schema Admin auf dem Schemamaster anmelden und LAPS konfigurieren, wie schon zuvor das LAPS Legacy.

Short Track:

3a: Schema Update

 

Update-LapsADSchema -Confirm:$false -verbose

 

Wer die Rechte am Compterobjekt im AD Schema noch nicht korrigiert hat und plant die Kennworte aus welchen Gründen auch immer unverschlüsselt zu speichern:
LAPS Security Concern : Computers joiners are able to see LAPS Password - Azure Cloud & AI Domain Blog (azurecloudai.blog)
(A;;RPCRLCLORCSDDT;;;CO) wird zu (A;;RPLCLORCSDDT;;;CO). Das "CR" wird herausgenommen.

3b: Die Computer benötigen das Schreibrecht an den Attributen in ihren eigenen AD Konto. In meinem Fall liegen alle System in diversen OUs unterhalb des genannten DN. Ich erlaube es pauschal allen Computerobjekten in meiner Struktur.

 

Set-LapsADComputerSelfPermission -Identity "OU=Das Dorf,DC=gallier,DC=ads"

 

3c: Festlegung der Benutzersicherheitsgruppe, die das Kennwort des jeweiligen Zielsystems auslesen darf. Die 01-Admins sind in meinem Fall die Verwalter der Server (Tier 1), die 02-Admins verwalten die Clients (Tier 2). Achtung! Es kann nur eine Gruppe für die "Decyption" definiert werden, evtl baut man hier eine explizite PasswortReader Gruppe, die nicht noch andere Aufgaben hat. In dieser Gruppe können dann wieder die Gallier\01-Admins und Domänen-Admins Mitglied sein, wenn die Überschneidung gewünscht ist.

 

Set-LapsADReadPasswordPermission -Identity "OU=Server,OU=Das Dorf,DC=gallier,DC=ads" -AllowedPrincipals Gallier\01-Admins
Set-LapsADReadPasswordPermission -Identity "OU=Computer,OU=Das Dorf,DC=gallier,DC=ads" -AllowedPrincipals Gallier\02-Admins

 

3d: wie 3c, aber eventuell unterscheidet sich die Erlaubnis zum Reset des Kennworts von den Gruppen in 3c

 

Set-LapsADResetPasswordPermission -Identity "OU=Server,OU=Das Dorf,DC=gallier,DC=ads" -AllowedPrincipals Domänen-Admins,Gallier\01-Admins
Set-LapsADResetPasswordPermission -Identity "OU=Computer,OU=Das Dorf,DC=gallier,DC=ads" -AllowedPrincipals Domänen-Admins,Gallier\02-Admins

 

Step 4: Update der ADMx Vorlagen auf dem Server. Ich gehe davon aus, das ihr mit einem Central Store umgehen könnt.

Central Store für Administrative Vorlagen - Gruppenrichtlinien

Das neue LAPS.admx und das LAPS.adml findet ihr auf jedem System, auf dem 04-2023 installiert ist. Ich habe es von einer Windows 11 Maschine kopiert und %windir%\Policydefinitions\LAPS.admx, %windir%\Policydefinitions\de-DE\LAPS.adml und %windir%\Policydefinitions\en-US\LAPS.adml mitgenommen.
Achtung! Microsoft hat im initialen Rollout mal wieder nur an en-US gedacht. Auf lokalisierten Systemen gibt es ein Durcheinander, was die Exitstenz der ADMx/ADMl Dateien angeht und auch die lokalisierten Meldungen im Eventlog fehlen u.A. an einem 2019 Memberserver, wohingegen sie auf dem DC 2019 vorhanden sind. Auf lokalisierten Windows 10/2019 fehlen teilweise die *.adml oder sind nur in en-us vorhanden. 
"Andy" hat den Begriff "LAPSus" auf Günter Borns Blog eingführt, weil es nur in englisch funktioniert. Ich mag den Begriff :-D

Step 5: Die wichtigsten Richtlinien konfigurieren und passend verlinken

Computerkonfiguration\Administrative Vorlagen\LAPS
Enable local admin password management = Deaktiviert
     
Kommentar: Es gibt LAPS Legacy Clients, zB Server 2016, dann sollte man 2 Richtlinien bauen. Je eine für Legacy und eine für Native und diese je nach Struktur nach OU abgrenzen oder per WMI Filter.

Computerkonfiguration\Administrative Vorlagen\System\LAPS
Aktionen nach der Authentifizierung = Aktiviert
     Karenzzeit (Stunden):    24
     Aktionen:    Kennwort zurücksetzen und verwaltetes Konto abmelden
     Kommentar: Das ist der Defaultwert. Gesetzt nur zur Erinnerung. Neue Funktion, vorher musste man einen Workflow etablieren.

Autorisierten Kennwortdecryptor konfigurieren = Aktiviert    
     Autorisierter Kennwortdecryptor    Gallier\02-Admins
     Kommentar: DomänenAdmins können das Kennwort per Default entschlüsseln, wenn keine Gruppe definiert ist. Die Gruppe kann auch als SID definiert werden und nach Tier/OU gesteuert werden

Größe des verschlüsselten Kennwortverlaufs konfigurieren = Aktiviert
Größe des verschlüsselten Kennwortverlaufs    6
     Kommentar: Historie, bei 180 Tage reichen wohl 6. Ansicht der History nur über die Powershell: Get-LapsADPassword -IncludeHistory -AsPlainText

Kennworteinstellungen = Aktiviert
     Kennwortkomplexität    Große Buchstaben + kleine Buchstaben + Ziffern
     Kennwortlänge    20
     Kennwortalter (Tage)    180
     Kommentar: Immer streitbar, aber Sonderzeichen weglassen und Länge erhöhen hat sich bewährt. Kein Mensch weiss wo das Britische Pfund Zeichen auf der Tastatur ist ;-)

Kennwortsicherungsverzeichnis konfigurieren = Aktiviert
     Sicherungsverzeichnis    Active Directory
     Kommentar: alternativ im AAD

Kennwortverschlüsselung aktivieren = Aktiviert oder Nicht konfiguriert
     Kommentar: Die Verschlüsselung ist per Default aktiv. Sie erfordert FFL/DFL 2016. Siehe thematik PasswordReader bei dem PoSH cmdlet. Es kann nur für eine Gruppe vorgegeben werden.