Búsqueda de sitios web

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 atributo de usuario lastLogon (solo se actualiza en el controlador de dominio en el que se autentica el usuario) o del atributo lastLogonTimpestamp (se replica entre los DC en un dominio, pero solo en 14 días de manera 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 de los usuarios (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 exitosos 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, 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. Abra la configuración de GPO Política de dominio predeterminada y vaya a Configuración del equipo -> Políticas -> Configuración de Windows -> Configuración de seguridad -> Configuración de política de auditoría avanzada -> Políticas de auditoría -> Iniciar/Cerrar sesión;

  3. Habilite dos políticas de auditoría (Auditoría de inicio de sesión y Auditoría de otros eventos de inicio/cierre de sesión). Seleccione las opciones Éxito y Error en la configuración de la política de auditoría para registrar tanto los inicios de sesión exitosos como los fallidos en el registro de seguridad en los controladores de dominio y las computadoras;

  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, aparece un evento con el ID de evento 4624 (Se inició sesión correctamente en una cuenta) 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, debe verificar el valor del campo Tipo de inicio de sesión. Estamos interesados en los siguientes códigos:

  • Tipo de inicio de sesión 10: inicio de sesión interactivo remoto: un inicio de sesión mediante RDP, conexión oculta o asistencia remota (este evento puede aparecer en un controlador de dominio si un administrador o un usuario que no es administrador que tiene permiso de acceso RDP en DC inicia sesión). Este evento se usa para monitorear y analizar la actividad de los usuarios de Servicios de Escritorio remoto.

  • Inicio de sesión tipo 3: Inicio de sesión en red (se utiliza cuando un usuario se autentica en un DC y se conecta a una carpeta compartida, una impresora o un servicio IIS)

También puede realizar un seguimiento de un evento de emisión de un ticket 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 la cuenta -> Auditoría del servicio de autenticación Kerberos -> Éxito y error.

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).

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

Puede usar el cmdlet de PowerShell Get-Eventlog 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 un computadora utilizada 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
}
}
}
}

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

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 relacionados