Microsoft LAPS (Local Admin Password Solution)

Microsoft LAPS permette di gestire il cambio password regolare per un account Local Admin di computer/server appartenenti ad un dominio AD.

Logica:

Laps installa una .dll che scatena il cambio password dell’utente Local Admin ad una scadenza e con una complessità decisa tramite apposita GPO.

Il computer effettua il push della password in un attributo di Active Directory confidenziale insieme alla data di scadenza.

Questi attributi possono quindi essere letti da utenti appositamente autorizzati tramite comandi PS.

Prerequisiti:

  1. Richiede un dominio AD
  2. Richiede configurazione GPO
  3. Richiede diritti di Enterprise Admin per il setup (estensione Schema)
  4. RSAT o accesso a DC

Limiti:

  1. Gestisce un solo account local admin
  2. Solo per computer a dominio

Avvertenze:

  1. Attenersi alle best practices per la sicurezza delle password e limitare l’accesso agli utenti preposti
  2. Non installare LAPS nei DC (rischio di reset Domain Admin password!)
  3. DC ROC: richieste modifiche nei parametri di replica

Sono presenti online numerose guide su LAPS. Si riassumono qui i passaggi principali.

1.1 Setup:

Scaricare il tool dal sito ufficiale MS: https://www.microsoft.com/en-us/download/details.aspx?id=46899 

Versione: al momento della scrittura del presente documento la versione disponibile è la 6.2 del 06/10/2020.

Sono inclusi i documenti tecnici ed una guida operativa.

Da un pc/server con diritti amministrativi lanciare il setup relativo alla propria versione di processore (x86 o x64 o ARM)

Il setup è composto dalle seguenti parti:

  • AdmPwd GPO Extension: Estensione CSE per l’applicazione delle GPO. E’ la DLL che verrà distribuita ai pc/server.
  • Fat Client UI: Interfaccia grafica per il controllo/reset della password
  • PowerShell module: moduli PS per il setup
  • GPO Editor templates: ADMX per la creazione delle policy. Da caricare poi nei DC.


Se non si specificano parametri, il setup di default installa solo la GPO Extension (la DLL).

1.2 Aggiornamento Schema:

Nel pc/server di management installare tutto (tranne la DLL eventualmente) ed eseguire un powershell con diritti amministrativi.

Importare il modulo con il comando: Import-Module AdmPwd.PS

Eseguire quindi Update-AdmPwdADSchema per aggiornare lo Schema coi due nuovi attributi:

L’attributo ms-Mcs-AdmPwdExpirationTime dove verrà salvata la data di scadenza password. È un campo non confidenziale

L’attributo ms-Mcs-AdmPwd dove verrà salvata la password (campo confidenziale)

1.3 Permessi Computer Account:

È necessario ora dare ai computer il diritto di scrivere in questi due attributi, dal momento che di default hanno solo diritto di lettura.

Con il comando successivo daremo all’account SELF (il computer stesso) i permessi di aggiornare questi valori. L’account SELF permette di aggiornare i propri attributi e non quelli degli altri naturalmente.

Nota bene: il comando va lanciato con riferimento alla/e OU dove risiedono i computer account. In base alla politica aziendale, è possibile lanciare il comando per singola OU (per restringere il campo di applicazione) o a livello di dominio e quindi per tutte le OU figlie.

Prima di eseguire il comando, ricordarsi, se non già fatto precedentemente, d’importare il modulo AdmPwd.ps

Il comando è: Set-AdmPwdComputerSelfPermission -Identity “Nome OU”

ad esempio: Set-AdmPwdComputerSelfPermission -Identity “OU=Computers,DC=Dominio,DC=Local”

È possibile lanciare il comando anche con il semplice nome della OU e non con il distinguishedName, purché sia un nome univoco all’interno del dominio, altrimenti verrà restituito un avviso d’inserire il distinguishedName.

1.4 Permessi Utenti:

Di default solo i Domain Admins hanno il diritto di lettura e modifica degli attributi relativi al LAPS in quanto è un campo confidenziale e fa parte degli Extended Rights. E’ possibile estendere questo diritto ad altri utenti per mansioni amministrative, distinguendo anche chi può leggere il dato e chi può modificarlo.

Si consiglia quindi la creazione di due distinti gruppi, ad esempio “Role_LAPS_Readers” e “Role_LAPS_Writers”

Una volta inseriti gli utenti preposti nei relativi gruppi, eseguire i seguenti comandi dal pc/server in cui si è caricato il setup di LAPS:

Per i permessi di sola lettura:

Set-AdmPwdReadPasswordPermission –Identity “Nome OU” –AllowedPrincipals “Utente o Gruppo”

ad esempio:

Set-AdmPwdReadPasswordPermission –Identity “Computers” –AllowedPrincipals “Role_LAPS_Readers”

Per i permessi di change:

Set-AdmPwdResetPasswordPermission –Identity “Nome OU” -AllowedPrincipals “Utente o Gruppo”

ad esempio:

Set-AdmPwdResetPasswordPermission –Identity “Computers” –AllowedPrincipals “Role_LAPS_Writers”

Si ricorda che i permessi vengono dati a livello di OU, di conseguenza vanno applicati alle OU dei computers o a livello superiore qualora non ci siano restrizioni particolari nelle politiche di sicurezza aziendale.

E’ possibile verificare in qualsiasi momento chi dispone dei permessi relativi alla lettura di questi attributi.

Da powershell si può utilizzare il comando: Find-AdmPwdExtendedRights –Identity “Nome OU”

Verrà restituita la lista di utenti/gruppi che hanno la possibilità di leggere questi attributi, chiamati “ExtendedRightHolders”, appunto diritti estesi.

Come detto, di Default i Domain Admins hanno questo diritto, insieme ad NT AUTHORIY\SYSTEM.

I diritti assegnati specifici per il LAPS si possono verificare anche da ADUC, tab di security della OU interessata.

Nell’esempio seguente il gruppo “Role_LAPS_Read” ha due permessi sulla OU (e oggetti figli): uno di essi è “Special” ed è relativo alla possibilità di leggere l’attributo della password. L’altro permesso senza descrizione di accesso, è relativo all’attributo della data di scadenza.

Andando in View o Edit è possibile verificare specificamente i due valori, che sono appunto Read ms-Mcs-AdmPwd (diritto extended, quindi speciale)

e Read ms-Mcs-AdmPwdExpiration Time.

Naturalmente il gruppo che avrà diritti di modifica avrà anche il permesso di Write spuntato.

Qualora si siano dati diritti a gruppi/utenti inavvertitamente, è possibile toglierli deselezionando la voce interessata o togliendo i permessi da “All extended rights”.

Nota bene: all extended right abilita/disabilita una serie ampia di diritti che possono influire sulla sicurezza e gestione degli account. Si consiglia di porre attenzione e documentarsi prima di modificare tali permessi. Non verrà affrontato l’argomento nella presente guida

2.1 Deploy e configurazione GPO

Una volta configurato lo Schema, i diritti e i relativi gruppi, è possibile passare alla creazione delle policies per la distribuzione e attivazione del tool. 

Si consiglia di attivare le policies sempre prima su una OU di test e una volta verificato il corretto funzionamento, distribuirlo all’organizzazione.

Dal computer utilizzato per il setup, installare se non già effettuato, la componente “GPO Editor Templates”

Ricercare nel computer, in C:\Windows\PolicyDefinitions il file AdmPwd.admx e relativo file .adml presente nella sottocartella en-US.

Copiare il file .admx nella cartella di distribuzione degli admx, solitamente presente nella sysvol del dominio, quindi: \\domain.fqdn\SYSVOL\domain.fqdn\Policies\PolicyDefinitions

Copiare il file .adml nella relativa sottocartella en-US

Aprire quindi Group Policy Management e creare una nuova policy per la configurazione dei parametri del LAPS.

Si tratta di una Computer Policy, quindi troveremo i parametri in Computer Configuration > Policies > Administrative Templates > LAPS

Parametri:

  • Passwor Settings: (Richiesto) imposta lunghezza, durata e complessità della password.
  • Name of administrator account to manage: (Opzionale) inserire il nome dell’account local admin che si intende gestire. Nota bene: se si tratta del built-in administrator, non inserire nulla, anche se è stato rinominato. LAPS lo identificherà in base al SID noto. Se invece è un utente creato manualmente, inserirne il nome. E’ possibile gestire un solo local admin.
  • Do not allow password expiration time longer than required by policy: (Opzionale, consigliata) Forza la scadenza del local admin alla durata della GPO, anche se è stata configurata una scadenza più lunga nel pc.
  • Enable local admin password management: (Richiesto) abilita la gestione del local admin.

Una volta configurata la policy, linkarla alla/e OU interessate.

2.2 Distribuzione LAPS nei computers

LAPS nei computer può essere installato manualmente, tramite GPO o altri sistemi di distribuzione software. Nella presente guida effettueremo la distribuzione tramite una GPO.

E’ sufficiente pubblicare il pacchetto .msi tramite Computer Policy. Da Computer Configuration > Policies > Software Settings > Software Installation pubblicare i due pacchetti .msi per coprire sia la versione 64 che 32 bit. Naturalmente i pacchetti di installazione devono risiedere in una share raggiungibile dai computer interessati.


Il pacchetto installerà di default la sola AdmPwd.dll necessaria all’attivazione della policy. Si può controllare l’installazione verificandone l’esistenza in C:\Program Files\LAPS\CSE.

3.1 Verifica attivazione LAPS

Affinché il computer inizi ad attivare LAPS, saranno necessari due riavvii, una per l’installazione della dll ed uno per l’attivazione delle regole.

Una volta applicate si potrà verificare il corretto funzionamento controllando che gli attributi di AD siano stati popolati, come nell’immagine seguente:

4.1 Lettura Password LAPS

È possibile trovare la password di un determinato computer in tre modi:

  1. Verifica dell’attributo in AD
  2. Tramite comando powershell
  3. Tramite GUI di LAPS

il primo metodo è da ritenersi solo a scopo di indagine/troubleshooting in quanto poco agevole.

Il secondo metodo tramite Powershell è possibile sempre importando nel pc dal quale si vuole fare la ricerca, il modulo admpwd.ps. Il comando per effettuare la query dell’attributo è il seguente:

Get-AdmPwdPassword -ComputerName “Nome Computer”


L’output sarà come l’immagine seguente, con password e data di scadenza.

Naturalmente l’utente con cui si esegue il comando dovrà essere o un Domain Admin o un membro del gruppo autorizzato alla lettura degli attributi.

Il terzo metodo è tramite LAPS GUI, installabile sempre dal pacchetto di setup (voce: Fat Client UI)

Eseguito il programma, sarà possibile cercare la password semplicemente inserendo il nome del pc:

4.2 Reset Password tramite LAPS

Gli utenti con diritto di reset possono forzare la scadenza della password al fine di richiedere al PC la generazione di una nuova.

E’ possibile forzare il reset tramite GUI, premendo sul pulsante “Set”

Non appena si preme su “Set” la nuova data di scadenza verrà impostata all’ora indicata ed al successivo refresh della policy, il computer genererà una nuova password e verrà inviata in AD.

Nota tecnica: La password verrà cambiata solo se il computer riceverà la conferma che la stessa è stata correttamente scritta in AD. Questo per evitare che le password tra il computer ed AD siano disallineate con conseguente incapacità di accedere al computer.

Tramite powershell il comando è il seguente: 

Reset-AdmPwdPassword -ComputerName “Nome Computer”

Nell’immagine seguente si può vedere la data di scadenza prima e dopo il reset:

Al comando di reset si può specificare anche una data/ora diversa se non si vuole che il cambio sia immediato, aggiungendo il parametro “-WhenEffective" seguito da data/ora, come nel seguente esempio:

Reset-AdmPwdPassword -ComputerName "Nome Computer" -WhenEffective “31.12.21 18:00”

5.1 Tips, Tricks & Troubleshooting

Di seguito alcune note aggiuntive riguardante il setup di LAPS:

Domain Controller: 

  • E’ caldamente sconsigliato il setup della AdmPwd.dll nei domain controller. Una eventuale attivazione della GPO a livello di root Domain causerebbe il reset della password Domain Admins che nei DC. Nei DC si possono installare eventualmente gli altri componenti in quanto non dannosi ai fini del management.

RODC: 

Script di esporazione password: 

  • E’ possibile programmare l’esportazione di tutte le password dei C.A. per ulteriore misura di sicurezza nello sfortunato caso in cui il dominio diventasse indisponibile. Si rimanda a relativa guida per questa parte (in corso di stesura)

La GUI o powershell non mostra la password ma vedo la data: 

  1. La data non è un campo confidenziale pertanto verrà mostrata
  2. Verificare di eseguire il comando powershell o la GUI con l’utenza (runas) che ha i permessi per vedere l’attributo. 
  3. In ambienti con repliche dai tempi importanti, l’attribuzione dei permessi potrebbe impiegare alcune ore. Attendere quindi i tempi di replica e riprovare.
  4. Verificare in ADUC che i permessi sugli attributi siano corretti.

La GUI o Powershell mi restituiscono la data “01/01/0001 00:00:00”:

  • In questo caso vuol dire che la policy non è applicata al computer. Potrebbe non aver ancora effettuato i riavvii necessari od essere una macchina non gestibile (Linux Server ad esempio) come da immagine:
  • Verificare che siano stati dati i diritti ai computer di scrivere nei rispettivi attributi (vedere paragrafo 1.3)

La GUI o powershell mi restituisce “Computer not found”:

  • Il nome computer non deve essere un FQDN o con qualsiasi ulteriore estensione. Il tool fa una ricerca per distinguishedName di conseguenza deve essere inserito solo il nome del computer.
  • Questo comportamento è da rispettare anche nella ricerca di oggetti nei child domains. LAPS sarà in grado di effettuare il discovery senza inserire l’FQDN.

6.1 LAPS per VDI non persistenti (Citrix, Horizon, etc):

Per le vm VDI persistenti (che non vengono rigenerate ad ogni logoff), che mantengono quindi una vita duratura e con nome univoco,valgono le stesse politiche dei normali computer account.

Per le non persistenti invece (ricreate ad ogni logon con stesso computer name) alla configurazione sopracitata va aggiunto uno script dedicato altrimenti LAPS non funzionerebbe correttamente.

Si rimanda a relativa guida (in corso di stesura)

Taggato , , , , , . Aggiungi ai preferiti : permalink.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *