Hay varias herramientas diferentes para obtener información sobre la hora de inicio de sesión de un usuario en un dominio de Active Directory. La hora de la última autenticación de usuario exitosa en un dominio AD puede obtenerse del usuario lastLogon atributo, solo se actualiza en el controlador de dominio en el que el usuario está autenticado) o lastLogonTimpestamp atributo (se replica entre los controladores de dominio en un dominio, pero solo en 14 días de forma predeterminada). Puede comprobar el valor del atributo de usuario mediante el editor de atributos de AD o con el cmdlet Get-ADUser de PowerShell. Sin embargo, a veces es posible que desee ver el historial de la actividad del usuario (inicios de sesión) en un dominio durante un largo período de tiempo.
Puede obtener información sobre los eventos de inicio de sesión de usuario (autenticación) correctos de los registros del controlador de dominio. En este artículo, mostraremos cómo realizar un seguimiento del historial de inicio de sesión del usuario en el dominio mediante PowerShell. De esta manera, puede obtener un historial completo de la actividad del usuario en el dominio, la hora en que un usuario comienza a trabajar e inicia sesión en las computadoras.
Política de auditoría de inicio de sesión de usuarios de Active Directory
Para que la información sobre el inicio de sesión exitoso / fallido se recopile en los registros del controlador de dominio, habilite la política de auditoría de los eventos de inicio de sesión del usuario.
- Abra la consola de administración de GPO del dominio (
GPMC.msc
); - Abre el Política de dominio predeterminada Configuración de GPO y vaya a Configuración del equipo -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Configuración avanzada de políticas de auditoría -> Políticas de auditoría -> Inicio / Cierre de sesión;
- Habilite dos políticas de auditoría (Inicio de sesión de auditoría y Auditar otros eventos de inicio / cierre de sesión). Seleccione Éxito y Falla opciones en la configuración de la política de auditoría para registrar inicios de sesión exitosos y fallidos en el registro de seguridad en los controladores de dominio y computadoras;
- Guarde los cambios en GPO y actualice la configuración de políticas en sus controladores de dominio usando el siguiente comando: gpupdate / force (o espere 90 minutos, el tiempo de replicación de DC no se tiene en cuenta).
Cuando un usuario inicia sesión en cualquier computadora en el dominio de Active Directory, un evento con el ID de evento 4624 (Se inició sesión con éxito en una cuenta) aparece en el registro del controlador de dominio que ha autenticado al usuario (Servidor de inicio de sesión). En la descripción del evento se muestra una cuenta autenticada con éxito (nombre de cuenta), un nombre de computadora (nombre de estación de trabajo) o una dirección IP (dirección de red de origen) de una computadora utilizada para iniciar sesión.
Además, debe verificar el valor de la Tipo de inicio de sesión campo. Estamos interesados en los siguientes códigos:
Además, puede realizar un seguimiento de un evento de emisión de tickets de Kerberos al autenticar a un usuario. El ID de evento 4768 es Se solicitó un vale de autenticación Kerberos (TGT). Para hacerlo, habilite la auditoría de eventos en la política Inicio de sesión de cuenta -> Auditar servicio de autenticación Kerberos -> Éxito y fracaso.
El evento 4768 también contiene un nombre (dirección IP) de una computadora y una cuenta de usuario (Nombre de cuenta o ID de usuario) que recibió un ticket Kerberos (ha sido autenticado).
Obtener el historial del último inicio de sesión del usuario con PowerShell
Puedes usar el Get-Eventlog Cmdlet de PowerShell para obtener todos los eventos de los registros de eventos del controlador de dominio, filtrarlos por el EventID que desee y mostrar información sobre la hora en que un usuario se autenticó en el dominio y una computadora que usó para iniciar sesión. Dado que puede haber varios controladores de dominio en su dominio y es posible que desee obtener un historial de inicio de sesión de cada uno de ellos, use el cmdlet Get-ADDomainController (del módulo AD para Windows PowerShell). El cmdlet permite obtener la lista de todos los controladores de dominio en su dominio.
El siguiente script de PowerShell le permite obtener todos los eventos de inicio de sesión de un usuario en un dominio AD desde todos los controladores de dominio. Como resultado, obtendrá una tabla con el historial de inicio de sesión del usuario y las computadoras desde las que un usuario se autenticó.
# a username, whose logon history you want to view
$checkuser="*jbrown*"
# getting information about the user logon history for the last 2 days (you can change this value)
$startDate = (get-date).AddDays(-2)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs){
$logonevents = Get-Eventlog -LogName Security -InstanceID 4624 -after $startDate -ComputerName $dc.HostName
foreach ($event in $logonevents){
if (($event.ReplacementStrings[5] -notlike '*$') -and ($event.ReplacementStrings[5] -like $checkuser)) {
# Remote (Logon Type 10)
if ($event.ReplacementStrings[8] -eq 10){
write-host "Type 10: Remote Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
# Network(Logon Type 3)
if ($event.ReplacementStrings[8] -eq 3){
write-host "Type 3: Network Logon`tDate: "$event.TimeGenerated "`tStatus: Success`tUser: "$event.ReplacementStrings[5] "`tWorkstation: "$event.ReplacementStrings[11] "`tIP Address: "$event.ReplacementStrings[18] "`tDC Name: " $dc.Name
}
}
}
}
Obtener el historial de inicio de sesión del usuario del dominio basado en eventos de Kerberos
También puede obtener un historial de autenticación de usuario en el dominio basado en el evento de un problema de ticket de Kerberos (Solicitud TGT - EventID 4768). En este caso, se mostrarán menos eventos en la salida (se excluyen los inicios de sesión de red, así como los eventos de acceso a las carpetas de DC durante la obtención de archivos GPO o la ejecución de scripts de inicio de sesión). El siguiente script de PowerShell mostrará la información sobre todos los inicios de sesión de los usuarios durante las últimas 24 horas:
$alluserhistory = @()
$startDate = (get-date).AddDays(-1)
$DCs = Get-ADDomainController -Filter *
foreach ($DC in $DCs){
$logonevents = Get-Eventlog -LogName Security -InstanceID 4768 -after $startDate -ComputerName $dc.HostName
foreach ($event in $logonevents){
if ($event.ReplacementStrings[0] -notlike '*$') {
$userhistory = New-Object PSObject -Property @{
UserName = $event.ReplacementStrings[0]
IPAddress = $event.ReplacementStrings[9]
Date = $event.TimeGenerated
DC = $dc.Name
}
$alluserhistory += $userhistory
}
}
}
$alluserhistory
Tenga en cuenta que en este caso no verá ningún evento de inicio de sesión de los usuarios autenticados desde clientes o aplicaciones que usan NTLM en lugar de Kerberos.