Propósito
[01] Preparar el AD
Debemos tener la plantilla preparada para la gestión del LAPS:
|
Copy
from: C:\Windows\PolicyDefinitions\LAPS.admx C:\Windows\PolicyDefinitions\<language>\LAPS.adml
|
Copy
to: \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\ \\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\<language>\ |
Verifica que el esquema de AD tiene los atributos del
nuevo LAPS
Ejecuta en tu DC:
COMANDO: Get-ADObject -SearchBase
"CN=Schema,CN=Configuration,DC=Midomino,DC=com" -LDAPFilter
"(lDAPDisplayName=msLAPS-EncryptedPassword)"
COMANDO: Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -LDAPFilter "(|(name=*laps*)(name=*admPwd*))" | Select-Object name
Si no lo tiene hay que prepararlo
Es recomendable que el usuario que lo vaya a configurar pertenezca a los grupos:
· Scheme Administrator / Organization Administrator
Para que la configuración no de problemas se debe hacer desde un Controlador de Dominio que tenga el módulo de LAPS instalado.
ç Empezamos. NO debes ejecutarlo si:
El esquema ya fue actualizado previamente (solo se hace una vez por bosque).
Tu dominio ya tiene los atributos de LAPS nuevo (Windows Server 2019/2022 + actualizaciones ya los incluyen).
Estás usando LAPS Legacy (el antiguo) y no piensas migrar.
Esta configuración podría cambiar en función a la evolución que de Microsoft a este servicio. Mucho cuidado en configurar el LAPS sin haber tenido en cuenta los puntos anteriores.
Preparamos el AD
C:\> Update-LapsADSchema
Debemos crear 2 nuevos grupos de usuarios, uno que solo podrá leer las contraseñas y otro para gestionar el LAPS
[] Permiso de lectura
COMMAND: PS C:\> Set-LapsADReadPasswordPermission -Identity "OU=LAPS,DC=midominio,DC=com" -AllowedPrincipals @("laps\LapsPasswordReadersGroup")
[] Permitir acceso a contraseñas cifradas (Password Encryption Allowed Principals)
Para visualizar contraseñas cuando LAPS está configurado con cifrado, los usuarios deben pertenecer a un grupo autorizado.
COMMAND: Set-LapsADPasswordEncryptionAllowedPrincipals
-Identity "OU=LAPS,DC=midominio,DC=com" -AllowedPrincipals
"Domain Admins","Grupo_Laps_Management"
Members of the Domain Admins group already have password query permission by default.
[] Consultar permisos extendidos (Query Extended Rights Permissions)
Este comando permite verificar qué grupos o usuarios tienen permisos avanzados sobre la OU, incluyendo lectura de contraseñas y escritura de atributos gestionados por LAPS.
COMMAND: Find-LapsADExtendedRights -Identity
Command: PS C:\> Import-Module LAPS
Hay que autorizar a un grupo del AD de usuarios para poder leer las contraseñas del LAPS
En cada OU que queramos que se le aplique la GPO hay que autorizarla por comandos, con Set-LapsADComputerSelfPermission -Identity
Por ejemplo:
Set-LapsADComputerSelfPermission -Identity OU=Bcn,OU=Spain,OU=EquiposCoorp,DC=salvadorescoda,DC=com
[03] Script para consultar la OU autorizadas por LAPS
Se recorre el AD y mira todas las OU, saca las que con el comando anterior han sido autorizadas
|
Import-Module
ActiveDirectory
#
GUID del atributo especÃfico $lapsEncryptedGuid
= [guid]"f3531ec6-6330-4f8e-8d39-7a671fbac605"
#
Obtener todas las OUs del dominio $OUs = Get-ADOrganizationalUnit
-Filter *
$ousWithWritePermission = foreach
($OU in $OUs) {
# Leer ACL de la OU usando ADSI $entry =
[ADSI]"LDAP://$($OU.DistinguishedName)"
$acl = $entry.ObjectSecurity
# Filtrar ACEs con WriteProperty sobre el
GUID especÃfico $writeAce = $acl.Access | Where-Object { ($_.ActiveDirectoryRights -band
[System.DirectoryServices.ActiveDirectoryRights]::WriteProperty) -and $_.ObjectType -eq $lapsEncryptedGuid
}
if ($writeAce) { foreach ($ace in $writeAce) { [PSCustomObject]@{ OU = $OU.DistinguishedName Trustee = $ace.IdentityReference Inherited = $ace.IsInherited } } } }
#
Mostrar lista única de OUs con permisos WRITE if ($ousWithWritePermission) {
$ousWithWritePermission | Sort-Object OU -Unique | Format-Table -AutoSize } else {
Write-Output "No se encontraron OUs con permisos WRITE sobre ms-LAPS-Encrypted-Password-Attributes." } |
|
Write-Host "Ejecutando v3.1..." Write-Host "Hay que asegurarse que
las OUs donde hay equipos LAPS este autorizadas con:
Set-LapsADComputerSelfPermission y que recorre todas las Sub-OUS, este proceso
puede durar varios minutos. " # --- Configuración --- $ou = "OU=Equipos,DC=midominio,DC=com" # Fecha y hora para el nombre del archivo $timestamp =
Get-Date -Format "yyyyMMdd_HHmm" $csvPath =
"C:\scripts\Computer_LAPS_with_assigned_passwd_$timestamp.csv" # --- Obtener equipos de la OU --- $computers =
Get-ADComputer -SearchBase $ou -Filter * -Properties Description, MemberOf,
DistinguishedName # --- Lista de resultados --- $resultados = @() foreach ($computer in $computers) {
try {
# Intenta obtener la contraseña con el nuevo esquema de LAPS
$laps =
Get-LapsADPassword -Identity $computer.Name -ErrorAction Stop if ($laps) { # Obtener OU desde el DN $computerOU =
($computer.DistinguishedName -split ",",2)[1] # Obtener grupos del AD $groups = $computer.MemberOf | ForEach-Object { ($_ -split ",")[0]
-replace "^CN=" } $resultados += [PSCustomObject]@{ ComputerName = $computer.Name Description = $computer.Description OU = $computerOU ADGroups = ($groups -join ";") PasswordSet = $true Expiration = $laps.ExpirationTimestamp } }
}
catch {
# No se añade a la lista
} } # --- Exportar a CSV --- $resultados |
Export-Csv -Path $csvPath -NoTypeInformation -Encoding UTF8 Write-Host "Archivo CSV generado correctamente: $csvPath" Write-Host "Total de filas exportadas: $($resultados.Count)" |
COMANDO: Get-LapsDiagnostics
Get-LapsDiagnostics:
all data for this run was written to the following zip file:
[06] Como comprobar si un PC tiene LAPS
COMANDO: Get-ADComputer PC001 -Properties msLAPS-PasswordExpirationTime, msLAPS-EncryptedPassword
Si esos atributos tienen valores, LAPS está aplicado
y funcionando.
Si aparecen vacíos o null, el equipo no ha
aplicado la GPO o no ha podido escribir en AD.
[07] GPO

%20-%20Word.jpg)


%20-%20Word.jpg)
%20-%20Word.jpg)
%20-%20Word.jpg)

%20-%20Word.jpg)






No hay comentarios:
Publicar un comentario