Guida passo-passo: estensione dello schema, permessi sulle OU, GPO, lettura e rotazione delle password, verifica tramite eventi

Windows LAPS (Local Administrator Password Solution) è la funzionalità gratuita di Microsoft che gestisce in automatico la password di un account amministratore locale sui computer Windows: la genera casuale e diversa per ogni PC, la cambia periodicamente e la salva in Active Directory (o in Microsoft Entra ID), dove possono leggerla solo gli utenti autorizzati.

Senza LAPS capita spesso che tutti i PC abbiano la stessa password di amministratore locale: basta comprometterne uno per muoversi lateralmente su tutti gli altri (attacchi pass-the-hash). Con LAPS ogni computer ha una password unica e a scadenza, e la gestione manuale, impraticabile su molti PC, non serve più.

Indice

1. Windows LAPS e Legacy LAPS

Esistono due versioni di LAPS. Questa guida tratta la nuova Windows LAPS, integrata direttamente in Windows.

Legacy LAPS (Microsoft LAPS)Windows LAPS
Installazione sul clientPacchetto MSI da distribuire su ogni PCIntegrata nel sistema operativo, nessuna installazione
Attributi in Active Directoryms-Mcs-AdmPwd, ms-Mcs-AdmPwdExpirationTimemsLAPS-Password, msLAPS-EncryptedPassword, msLAPS-PasswordExpirationTime e altri
Password crittografata in ADNo (testo in chiaro protetto solo dai permessi)Sì, se abilitato e con livello funzionale del dominio 2016 o superiore
Cronologia passwordNoSì (password crittografate precedenti)
Account DSRM dei domain controllerNoSì
Backup in Microsoft Entra IDNoSì
GestioneGPO e modulo AdmPwd.PSGPO/Intune e modulo PowerShell LAPS

Una novità importante è la possibilità di gestire anche la password dell'account DSRM (Directory Services Restore Mode) dei domain controller, che con Legacy LAPS restava esclusa.

⚠️ Se usi ancora Legacy LAPS

Legacy LAPS è deprecata. Durante la migrazione non configurare Legacy LAPS e Windows LAPS sullo stesso account dello stesso computer: le due soluzioni cambierebbero la password a vicenda. Usa account diversi oppure migra un gruppo di computer alla volta.

2. Requisiti

  • Computer membri di un dominio Active Directory (oppure aggiunti a Microsoft Entra ID, scenario non trattato qui).
  • Sistemi operativi supportati: Windows 10, Windows 11, Windows Server 2019 e Windows Server 2022 (e versioni successive), aggiornati almeno con gli aggiornamenti cumulativi di aprile 2023, che hanno introdotto Windows LAPS.
  • Windows LAPS protegge un solo account locale per computer.
  • L'account amministratore locale da gestire deve già esistere: LAPS ne gestisce la password, non lo crea (vedi sezione 5).
  • Lo schema di Active Directory va esteso con gli attributi di Windows LAPS (sezione 3): serve un account membro di Schema Admins.
  • Per salvare le password crittografate il livello funzionale del dominio deve essere Windows Server 2016 o superiore.
  • La configurazione dei client avviene tramite GPO (sezione 5).

💡 Account dedicato o Administrator integrato?

Puoi gestire l'account Administrator integrato oppure un account amministratore locale dedicato (nella guida lapsadmin). Un account dedicato, con l'Administrator integrato disabilitato, rende più difficile indovinare il nome dell'account da attaccare.

3. Estensione dello schema di Active Directory

Collegati a un domain controller (o a un server con il modulo PowerShell LAPS e gli strumenti RSAT per Active Directory) con un account Schema Admins e apri PowerShell come amministratore. Esegui:

PowerShell
Update-LapsADSchema

Il comando aggiunge allo schema gli attributi usati da Windows LAPS e chiede conferma per ciascuno: rispondi Y (sì) oppure A (sì a tutto).

  • msLAPS-PasswordExpirationTime – data di scadenza della password;
  • msLAPS-Password – password in chiaro (usata solo se la crittografia è disabilitata);
  • msLAPS-EncryptedPassword e msLAPS-EncryptedPasswordHistory – password crittografata e relativa cronologia;
  • msLAPS-EncryptedDSRMPassword e msLAPS-EncryptedDSRMPasswordHistory – password dell'account DSRM dei domain controller;
  • il diritto esteso msLAPS-Encrypted-Password-Attributes, che controlla chi può leggere le password crittografate.
PowerShell: Update-LapsADSchema aggiunge allo schema di Active Directory gli attributi msLAPS e il diritto esteso per le password crittografate
Figura 1 – Estensione dello schema con Update-LapsADSchema

ℹ️ Un'operazione da fare una volta sola

L'estensione dello schema vale per tutta la foresta ed è irreversibile, ma è un'aggiunta di attributi che non modifica gli oggetti esistenti. Va eseguita una sola volta; ripeterla con una versione più recente del modulo aggiunge gli eventuali attributi introdotti in seguito (vedi l'evento 10108 in sezione 8).

4. Permessi sulle OU

4.1 Permesso dei computer di scrivere la propria password

Ogni computer deve poter aggiornare i propri attributi LAPS. Concedi il permesso sull'OU che contiene i computer da gestire (indicando il nome dell'OU o il suo distinguished name):

PowerShell
Set-LapsADComputerSelfPermission -Identity "OU=,DC=,DC="

Il permesso viene ereditato dalle OU figlie: se i computer sono suddivisi in più OU, basta applicarlo all'OU padre.

4.2 Chi può leggere le password

Per impostazione predefinita le password possono essere lette solo da Domain Admins. Per delegare la lettura a un altro gruppo (ad esempio l'help desk) usa:

PowerShell
Set-LapsADReadPasswordPermission -Identity "OU=,DC=,DC=" -AllowedPrincipals "\"

Per controllare chi ha i diritti estesi di lettura sull'OU:

PowerShell
Find-LapsADExtendedRights -Identity "OU=,DC=,DC="

💡 Password crittografate

Con la crittografia attiva, oltre ai permessi sull'attributo conta anche l'impostazione GPO Configure authorized password decryptors, che indica il gruppo autorizzato a decrittografare (per impostazione predefinita Domain Admins). Se un gruppo delegato vede l'attributo ma non riesce a leggere la password, controlla anche questa impostazione (sezione 5).

5. Creazione della GPO

La GPO contiene solo impostazioni computer: creala con Gestione Criteri di gruppo (gpmc.msc) e collegala all'OU dei computer della sezione 4. Le impostazioni si trovano in:

Configurazione computer > Criteri > Modelli amministrativi > Sistema > LAPS (Computer Configuration > Policies > Administrative Templates > System > LAPS).

Configura almeno queste tre impostazioni:

ImpostazioneValoreNote
Configurare la directory di backup delle password (Configure password backup directory)Abilitato – Active DirectorySenza questa impostazione LAPS non gestisce la password. In alternativa: Azure Active Directory (Microsoft Entra ID).
Impostazioni password (Password Settings)AbilitatoComplessità, lunghezza ed età massima in giorni della password (predefiniti: 4 tipi di caratteri, 14 caratteri, 30 giorni).
Nome dell'account amministratore da gestire (Name of administrator account to manage)Abilitato – nome dell'account (es. lapsadmin)Se non configurata, LAPS gestisce l'account Administrator integrato. L'account indicato deve esistere sul PC.
Report della GPO con le impostazioni LAPS: directory di backup Active Directory, impostazioni password e nome dell'account amministratore da gestire
Figura 2 – Impostazioni LAPS nella GPO

⚠️ Lunghezza della password

Nell'esempio la lunghezza è impostata a 8 caratteri. È consigliabile non scendere sotto il valore predefinito di 14 caratteri e mantenere più tipi di caratteri: la password non va mai digitata a memoria, quindi la lunghezza non pesa sugli utenti.

Altre impostazioni utili nella stessa cartella:

  • Enable password encryption – salva la password crittografata (richiede livello funzionale del dominio 2016+); attiva per impostazione predefinita quando il requisito è soddisfatto.
  • Configure authorized password decryptors – gruppo autorizzato a decrittografare le password (vedi sezione 4.2).
  • Configure size of encrypted password history – quante password precedenti conservare.
  • Do not allow password expiration time longer than required by policy – impedisce di impostare manualmente scadenze più lunghe dell'età massima.
  • Post-authentication actions – dopo un accesso con l'account gestito, al termine di un periodo di tolleranza cambia la password ed eventualmente disconnette l'utente o riavvia il PC.
  • Enable password backup for DSRM accounts – da applicare con una GPO sui domain controller per gestire la password DSRM.

Applica la configurazione sui client con gpupdate /force (oppure attendi il normale aggiornamento dei criteri). Per forzare subito l'elaborazione di LAPS senza attendere puoi usare anche:

PowerShell
gpupdate /force
Invoke-LapsPolicyProcessing

6. Lettura della password

6.1 Da Utenti e computer di Active Directory

Nelle proprietà dell'oggetto computer in Utenti e computer di Active Directory (dsa.msc) compare la scheda LAPS, con la scadenza della password corrente, il nome dell'account gestito e la password, visualizzabile con Mostra password o copiabile con Copia password. La scheda è popolata solo dopo che il client ha applicato la GPO e salvato la prima password.

Utenti e computer di Active Directory: scheda LAPS di un computer con scadenza, nome account e password gestita
Figura 3 – Scheda LAPS di un computer in ADUC

6.2 Da PowerShell

PowerShell
Get-LapsADPassword -Identity "" -AsPlainText

Restituisce nome dell'account, password, data di aggiornamento e scadenza. Senza -AsPlainText la password viene mostrata come SecureString. Con -IncludeHistory vengono restituite anche le password precedenti conservate nella cronologia.

7. Rotazione della password

La password viene cambiata automaticamente alla scadenza impostata nella GPO. Puoi anticipare la rotazione, ad esempio dopo aver usato la password per un intervento:

  • da ADUC, scheda LAPS: Fai scadere ora oppure imposta una nuova data di scadenza e premi Applica (vedi Figura 3);
  • da PowerShell, impostando la scadenza a ora:
PowerShell
Set-LapsADPasswordExpirationTime -Identity ""

Il client cambierà la password al successivo ciclo di elaborazione dei criteri (puoi forzarlo con Invoke-LapsPolicyProcessing). Eseguito sul computer gestito, come amministratore, il comando seguente cambia la password immediatamente:

PowerShell
Reset-LapsPassword

💡 Rotazione automatica dopo l'uso

Invece di ricordarsi di far scadere la password, puoi usare l'impostazione Post-authentication actions (sezione 5): dopo ogni accesso con l'account gestito la password viene cambiata automaticamente allo scadere del periodo di tolleranza.

8. Verifica e monitoraggio

8.1 Elenco dei computer con LAPS attivo

Lo script seguente elenca i computer di un'OU che hanno una password LAPS crittografata salvata in Active Directory, con la relativa scadenza:

PowerShell
# Importa il modulo Active Directory
Import-Module ActiveDirectory

# OU in cui cercare i computer
$OU = "OU=,DC=,DC="

# Computer dell'OU con gli attributi LAPS
$computers = Get-ADComputer -SearchBase $OU -Filter * -Properties 'msLAPS-EncryptedPassword', 'msLAPS-PasswordExpirationTime'

# Tiene solo i computer con la password LAPS popolata
$lapsEnabledComputers = foreach ($computer in $computers) {
    if ($computer.'msLAPS-EncryptedPassword') {
        [PSCustomObject]@{
            Computer = $computer.Name
            Scadenza = [DateTime]::FromFileTime($computer.'msLAPS-PasswordExpirationTime')
        }
    }
}

# Elenco dei computer con LAPS attivo
$lapsEnabledComputers | Sort-Object Computer | Format-Table -AutoSize

ℹ️ Crittografia disattivata

Se nella GPO la crittografia è disattivata, la password viene salvata nell'attributo msLAPS-Password invece che in msLAPS-EncryptedPassword: in quel caso sostituisci il nome dell'attributo nello script.

8.2 Eventi sul client

Windows LAPS registra la propria attività nel registro Applicazioni e servizi > Microsoft > Windows > LAPS > Operational. Per vedere gli ultimi 20 eventi:

PowerShell
Get-WinEvent -LogName "Microsoft-Windows-LAPS/Operational" -MaxEvents 20 | Format-Table TimeCreated, Id, LevelDisplayName, Message -AutoSize
PowerShell: ultimi eventi del registro Microsoft-Windows-LAPS/Operational sul client
Figura 4 – Eventi LAPS sul client
ID eventoSignificato
10003Avvio dell'elaborazione dei criteri LAPS
10004Elaborazione dei criteri completata correttamente
10005Elaborazione dei criteri non riuscita (il codice di errore è nel messaggio)
10009LAPS configurato per il backup delle password in Active Directory
10013Impossibile trovare l'account amministratore locale configurato
10021Riepilogo della configurazione del criterio corrente
10024Criterio LAPS configurato come disabilitato (nessuna directory di backup impostata)
10054Elaborazione avviata in risposta a una notifica di modifica del criterio
10055Domain controller usato per il salvataggio
10108Avviso: un attributo (es. msLAPSCurrentPasswordVersion) non è presente nello schema
10000 / 10002Componente LAPS caricato e inizializzato / scaricato

Nell'esempio della figura l'elaborazione fallisce (10005) perché l'account configurato nella GPO non esiste sul PC (10013): crea l'account oppure correggi il nome nella GPO.

9. Risoluzione dei problemi

SintomoCausa probabileDove intervenire
Scheda LAPS vuota in ADUCGPO non applicata o non ancora elaboratagpresult /r, sezione 5, Invoke-LapsPolicyProcessing
Evento 10024Directory di backup non configurata nella GPOSezione 5
Eventi 10005 + 10013L'account da gestire non esiste sul PCSezione 5, eventi
Errore di accesso negato durante il salvataggioManca il permesso self sull'OUSezione 4.1
GPO non applicata ai PC nel container ComputersLe GPO non si collegano ai containerSezione 4.1
L'help desk non vede la passwordPermessi di lettura o decrittografia mancantiSezione 4.2
Evento 10108Schema esteso con una versione meno recente del moduloSezione 3
Password cambiata di continuo o non validaLegacy LAPS e Windows LAPS sullo stesso accountSezione 1

10. Checklist finale

  1. Schema esteso con Update-LapsADSchema → sezione 3.
  2. Computer in un'OU e permesso self concesso con Set-LapsADComputerSelfPermission → sezione 4.1.
  3. Permessi di lettura delegati ai gruppi che ne hanno bisogno → sezione 4.2.
  4. GPO collegata all'OU con directory di backup, impostazioni password e account da gestire → sezione 5.
  5. Password visibile in ADUC o con Get-LapsADPassword → sezione 6.
  6. Eventi 10004 sui client e nessun errore → sezione 8.2.

Leave A Comment