Add six-month domain and broker monitoring
This commit is contained in:
@@ -105,6 +105,21 @@ to `OU=Laboratorio`; it suppresses first-logon/privacy/diagnostic prompts,
|
||||
disables location, and enforces always-on display, sleep, and hibernation
|
||||
settings for managed clients.
|
||||
|
||||
The domain controller is also the source-initiated Windows Event Collector for
|
||||
managed laboratory computers. Kerberos-authenticated WEF sends only selected
|
||||
logon/logoff, failed-logon, reconnect/disconnect, and operating-system power
|
||||
events to `ForwardedEvents`. Daily EVTX archives are retained for 183 days, and
|
||||
a five-minute server-side inventory records WinRM reachability and AD last-logon
|
||||
metadata. Session-duration reports correlate Windows logon IDs; no password or
|
||||
SGU HTTP payload is included in this monitoring path.
|
||||
|
||||
Broker diagnostics use the dedicated `SGU Auth Broker` Windows log with stable
|
||||
event IDs for authorization outcomes, SGU network/timeout failures, unexpected
|
||||
profile HTML, partial enrichment, and AD synchronization warnings. The same
|
||||
daily maintenance task archives that log for 183 days. Messages identify the
|
||||
institutional user and role but never include passwords, password verifiers, or
|
||||
raw SGU HTML.
|
||||
|
||||
Per-user synchronization is serialized inside the broker to prevent concurrent
|
||||
create/reset races. Production deployments should run the broker as a gMSA with
|
||||
delegated create-user, move-user, write-property, enable-account, and reset-password
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
# Monitoreo y registros de uso
|
||||
|
||||
El dominio usa **Windows Event Forwarding (WEF)** y el servicio nativo
|
||||
**Windows Event Collector (Wecsvc)**. No instala un agente de telemetría y no
|
||||
registra contraseñas, contenido de escritorio ni páginas visitadas.
|
||||
|
||||
## Datos recopilados
|
||||
|
||||
La suscripción `SGU-Lab-Monitoring` recibe desde los equipos de
|
||||
`OU=Laboratorio`:
|
||||
|
||||
- inicios de sesión correctos y fallidos (`4624` y `4625`);
|
||||
- cierre de sesión, desconexión y reconexión (`4634`, `4647`, `4778`, `4779`);
|
||||
- arranque, apagado, reinicio y apagado inesperado (`12`, `13`, `41`, `1074`,
|
||||
`6005`, `6006`, `6008`).
|
||||
|
||||
Con el identificador de sesión de Windows se obtiene quién usó qué equipo,
|
||||
hora de entrada, hora de salida y duración. Los eventos fallidos conservan el
|
||||
estado de Windows, pero nunca la contraseña introducida.
|
||||
|
||||
El broker escribe un registro separado de Windows llamado `SGU Auth Broker`.
|
||||
Cada solicitud válida queda correlacionada mediante usuario institucional,
|
||||
rol, `TraceId`, resultado y tiempo total. Los Event ID estables distinguen:
|
||||
|
||||
- `1000` autorización completada; `1001` credenciales rechazadas; `1002`
|
||||
servicio no disponible; `1003` solicitud inválida;
|
||||
- `1100` SGU aceptó la autenticación; `1101` timeout; `1102` fallo de red/DNS;
|
||||
- `1200` enriquecimiento completado y cantidad de campos; `1201` HTML sin los
|
||||
IDs admitidos; `1202` timeout; `1203` excepción; `1204` página opcional no
|
||||
disponible;
|
||||
- `1300` fallo de sincronización AD; `1301` metadatos opcionales no aplicados;
|
||||
`1302` membresía RDP opcional no aplicada.
|
||||
|
||||
No se almacena HTML, contraseña, hash de contraseña ni contenido de la
|
||||
respuesta SGU.
|
||||
|
||||
## Retención
|
||||
|
||||
`ForwardedEvents` tiene un límite de 512 MB. La tarea
|
||||
`SGU-Monitoring-Retention` lo archiva diariamente en:
|
||||
|
||||
```text
|
||||
C:\ProgramData\SGU\Monitoring\Archive
|
||||
```
|
||||
|
||||
El mismo ciclo archiva `SGU Auth Broker` en `Archive\Broker`. Solo elimina
|
||||
archivos `.evtx` cuya antigüedad supera **183 días**. La tarea
|
||||
`SGU-Monitoring-Inventory` actualiza cada cinco minutos el inventario en:
|
||||
|
||||
```text
|
||||
C:\ProgramData\SGU\Monitoring\Reports\machine-status.json
|
||||
C:\ProgramData\SGU\Monitoring\Reports\machine-status.csv
|
||||
```
|
||||
|
||||
`Encendida` significa que WinRM respondió en TCP 5985. `Apagada o inaccesible`
|
||||
también puede significar que el equipo está arrancando, perdió la red o tiene
|
||||
el puerto bloqueado; Active Directory por sí solo no conoce el estado eléctrico
|
||||
instantáneo de un PC.
|
||||
|
||||
## Consultas
|
||||
|
||||
En el servidor, como administrador:
|
||||
|
||||
```powershell
|
||||
# Estado actual de las máquinas
|
||||
Get-Content 'C:\ProgramData\SGU\Monitoring\Reports\machine-status.json' -Raw |
|
||||
ConvertFrom-Json | Format-Table ComputerName,Status,IPv4Address,LastDomainLogon
|
||||
|
||||
# Uso de los últimos seis meses
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguUsageReport.ps1' |
|
||||
Format-Table User,Computer,StartedAt,EndedAt,DurationMinutes,Result
|
||||
|
||||
# Un usuario o una máquina
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguUsageReport.ps1' -UserName AL201428
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguUsageReport.ps1' -ComputerName LCI-W11-01
|
||||
|
||||
# Diagnóstico del broker; admite -UserName, -Level, -EventId y -Text
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguBrokerLog.ps1' -UserName AL201428 |
|
||||
Format-Table TimeCreated,Level,EventId,EventName,Message -Wrap
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguBrokerLog.ps1' -Level Warning
|
||||
|
||||
# Exportación
|
||||
& 'C:\ProgramData\SGU\Monitoring\Get-SguUsageReport.ps1' `
|
||||
-OutputCsv 'C:\ProgramData\SGU\Monitoring\Reports\usage.csv'
|
||||
```
|
||||
|
||||
Para revisar la salud del colector:
|
||||
|
||||
```powershell
|
||||
Get-Service Wecsvc
|
||||
wecutil enum-subscription
|
||||
wecutil get-subscriptionruntimestatus SGU-Lab-Monitoring
|
||||
Get-WinEvent -LogName ForwardedEvents -MaxEvents 20
|
||||
Get-WinEvent -LogName 'SGU Auth Broker' -MaxEvents 20
|
||||
Get-ScheduledTask -TaskName 'SGU-Monitoring-*'
|
||||
```
|
||||
|
||||
> **Windows Server 2025:** no consultes `ForwardedEvents` mediante
|
||||
> `-FilterHashtable` ni XPath. Algunas compilaciones tienen una regresión que
|
||||
> termina el servicio Windows Event Log (`wevtsvc.dll`, `0xc0000420`). El
|
||||
> reporte incluido lee el canal sin consulta estructurada y aplica los filtros
|
||||
> en memoria.
|
||||
|
||||
El bootstrap del servidor crea el colector, la suscripción y las tareas. El GPO
|
||||
`SGU - Windows client experience` publica el Subscription Manager por FQDN. El
|
||||
bootstrap y la reparación diaria del cliente habilitan las subcategorías de
|
||||
auditoría y el acceso de `NETWORK SERVICE` al registro Security.
|
||||
|
||||
La suscripción usa `ContentFormat=Events`: conserva el XML original que emplea
|
||||
el reporte y evita que cada cliente tenga que renderizar texto localizado antes
|
||||
de enviarlo.
|
||||
|
||||
Referencias de Microsoft:
|
||||
|
||||
- <https://learn.microsoft.com/en-us/windows/win32/wec/setting-up-a-source-initiated-subscription>
|
||||
- <https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/wecutil>
|
||||
- <https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4624>
|
||||
- <https://learn.microsoft.com/en-us/windows/security/threat-protection/auditing/event-4634>
|
||||
Reference in New Issue
Block a user