Enforce SGU sign-in and session policies

This commit is contained in:
2026-09-01 15:48:26 -06:00
parent 0391320a3e
commit a166193b66
9 changed files with 227 additions and 29 deletions
+38 -10
View File
@@ -57,7 +57,8 @@ powershell.exe -NoProfile -ExecutionPolicy Bypass `
Orden de la transacción:
1. instala .NET y los binarios versionados;
2. registra COM y configura SGU como proveedor predeterminado;
2. registra COM, configura SGU como proveedor predeterminado y oculta el
último usuario que cerró sesión;
3. instala el guard de autorreparación;
4. exige health mTLS del broker y ejecuta las comprobaciones locales;
5. configura DNS del dominio;
@@ -65,8 +66,25 @@ Orden de la transacción:
7. al arrancar, el guard habilita RDP, NLA y WinRM y comprueba el estado final.
La directiva de Windows **Assign a default credential provider** selecciona SGU
por defecto. No se instala ningún filtro: el proveedor de contraseña de
Microsoft permanece disponible para cuentas creadas manualmente y recuperación.
por defecto. El instalador también habilita **Interactive logon: Don't display
last signed-in** y deshabilita **Enumerate local users on domain-joined
computers**. De este modo un usuario SGU desaparece después de cerrar sesión y
permanece el mosaico genérico **Other user**. No se instala ningún filtro: el
proveedor de contraseña de Microsoft permanece disponible para cuentas creadas
manualmente y recuperación.
En el controlador de dominio, aplicar una vez la directiva de usuario al árbol
completo `Usuarios-SGU`:
```powershell
.\Set-SguDomainUserPolicies.ps1
```
El script crea y vincula de forma idempotente el GPO
`SGU - User session restrictions` y configura `DisableLockWorkstation=1` para
Administrativos, Alumnos y Docentes. La directiva elimina la acción manual de
bloqueo; no sustituye otras directivas independientes de protector de pantalla,
inactividad o desconexión de RDP.
## 3. Verificación y reparación
@@ -82,21 +100,31 @@ Start-ScheduledTask -TaskName SGU-CredentialProvider-EnrollmentGuard
```
Un resultado válido exige simultáneamente binario y registro COM, configuración,
certificados, .NET 10, proveedor SGU predeterminado y proveedor de contraseña de
Microsoft preservado. El script de reparación se encuentra en
certificados, .NET 10, proveedor SGU predeterminado, último usuario oculto,
enumeración local deshabilitada y proveedor de contraseña de Microsoft
preservado. El script de reparación se encuentra en
`C:\ProgramData\SGU\Enrollment` con ACL exclusiva para `SYSTEM` y
administradores.
## 4. Experiencia de LogonUI
El proveedor usa un mosaico genérico dedicado, no una credencial asociada al SID
anónimo de **Other user**. Windows puede mostrar ahora la imagen institucional y
la etiqueta `Universidad La Salle · Acceso SGU`, además del encabezado
`Acceso institucional SGU`. El orden visual exacto de los iconos de opciones lo
decide Windows; lo administrable y exigido es cuál aparece seleccionado por
defecto.
anónimo de **Other user**. Windows muestra la imagen institucional y la etiqueta
`Universidad La Salle · Acceso SGU`; el encabezado `Acceso institucional SGU`
se publica como `CPFT_LARGE_TEXT` solamente en el mosaico seleccionado. LogonUI
elige la familia, el peso y el tamaño final y no expone opciones de tipografía a
un Credential Provider.
La configuración soportada garantiza que SGU queda seleccionado por defecto y
que no se conserva el último usuario. El orden vertical exacto de mosaicos lo
decide LogonUI y no tiene una directiva pública. Por seguridad no se filtra ni
se elimina **Other user**: Microsoft recomienda conservar al menos un proveedor
del sistema como ruta de recuperación.
Referencias de Microsoft:
- <https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-admx-credentialproviders#defaultcredentialprovider>
- <https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-windowslogon#enumeratelocalusersondomainjoinedcomputers>
- <https://learn.microsoft.com/en-us/windows/client-management/mdm/policy-csp-admx-ctrlaltdel#disablelockcomputer>
- <https://learn.microsoft.com/en-us/windows/win32/api/credentialprovider/ne-credentialprovider-credential_provider_field_type>
- <https://learn.microsoft.com/en-us/windows/win32/api/credentialprovider/nf-credentialprovider-icredentialprovidercredential2-getusersid>