Comprobación del historial de inicio de sesión del usuario en el dominio de Active Directory con PowerShell

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 de AD se puede obtener del usuario último inicio de sesión atributo solo se actualiza en el controlador de dominio en el que se autentica el usuario) o lastLogonTimpestamp atributo (se replica entre los DC de un dominio, pero solo en 14 días de forma predeterminada). Puede comprobar el valor del atributo de usuario con el editor de atributos de AD o con el cmdlet de PowerShell Get-ADUser. Sin embargo, a veces es posible que desee ver el historial de 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 (autenticación) de usuario 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 forma, puede obtener un historial completo de la actividad del usuario en el dominio, el momento en que un usuario comienza a trabajar y el inicio de sesión en las computadoras.

Política de auditoría de inicio de sesión de usuario de Active Directory

Para que la información sobre el inicio de sesión correcto o 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.

  1. Abra la consola de administración de GPO de dominio (GPMC.msc);
  2. Abre el Política de dominio predeterminada Configuración de GPO y vaya a Configuración de la computadora -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Configuración de política de auditoría avanzada -> Políticas de auditoría -> Inicio/Cierre de sesión;
    Política de auditoría de Active Directory: inicio/cierre de sesión del usuario
  3. Habilitar 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 los inicios de sesión exitosos y fallidos en el registro de seguridad en los controladores de dominio y las computadoras;
    habilitar la política de auditoría de inicio de sesión de usuario en el directorio activo
  4. Guarde los cambios en GPO y actualice la configuración de la política en sus controladores de dominio con 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 (Una cuenta fue iniciada con éxito) 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 la cuenta), un nombre de computadora (Nombre de la 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, es necesario comprobar el valor de la Tipo de inicio de sesión campo. Estamos interesados ​​en los siguientes códigos:

filtre el registro de seguridad de DC por el eventid 4624: una cuenta se inició sesión correctamente

También puede realizar un seguimiento de un evento de emisión de un ticket de Kerberos al autenticar a un usuario. La identificación del evento 4768 es Se solicitó un ticket de autenticación Kerberos (TGT). Para hacerlo, habilite la auditoría de eventos en la política Inicio de sesión de cuenta -> Auditoría del servicio de autenticación Kerberos -> Éxito y falla.

Política de servicio de autenticación Kerberos de auditoría

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 de Kerberos (ha sido autenticado).

Id. de evento de Windows 4768: se solicitó un vale de autenticación de Kerberos

Obtener el último historial de inicio de sesión del usuario con PowerShell

Puedes usar el Obtener registro de eventos Cmdlet de PowerShell para obtener todos los eventos de los registros de eventos del controlador de dominio, filtrarlos por el Id. de evento que desee y mostrar información sobre la hora en que un usuario se autenticó en el dominio y una computadora 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 usuario 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 DC 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 de 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 se autenticó el usuario.

# 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
}
}
}
}

Script de PowerShell: Obtenga el historial de inicio de sesión de los usuarios de AD con las computadoras conectadas

Obtener historial de inicio de sesión de usuario de dominio basado en eventos de Kerberos

También puede obtener un historial de autenticación de usuario en el dominio en función del evento de un problema de ticket de Kerberos (Solicitud TGT: ID de evento 4768). En este caso, se mostrarán menos eventos en la salida (se excluyen los inicios de sesión en la red, así como los eventos de acceso a las carpetas de DC durante la obtención de archivos GPO o la ejecución de secuencias de comandos 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

obtener el historial de inicio de sesión de todos los usuarios según el ticket de Kerberos solicitado eventid 4768

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.

Artículos Interesantes