Atributos de Active Directory: último inicio de sesión
Los objetos de usuario de Active Directory poseen una serie de atributos de metadatos de inicio de sesión que son valiosos para la administración y los informes de auditoría de Active Directory. Por ejemplo, se utilizan comúnmente para identificar cuentas de usuario que han estado inactivas durante un período significativo o como cuentas "obsoletas".
Sin embargo, cada atributo de metadatos de inicio de sesión tiene algunos comportamientos únicos que es necesario comprender. De lo contrario, las organizaciones pueden terminar con informes que, en el mejor de los casos, son confusos y, en el peor, inexactos o engañosos.
Esta publicación de blog explica los comportamientos de cada atributo de metadatos de inicio de sesión de objetos de usuario de Active Directory, los métodos para revisarlos y los posibles usos y abusos de cada uno.
Atributo AD del último inicio de sesión
El atributo Last-Logon contiene una representación FileTime de Windows de la última vez que un controlador de dominio autenticó exitosamente al usuario. Es el abuelo de los metadatos de inicio de sesión de usuarios y existe desde la primera versión de Active Directory.
Con el siguiente comando de PowerShell, puede recuperar la hora del último inicio de sesión y otras propiedades del usuario en un controlador de dominio:
Get-ADUser -Filter * -Properties lastLogon | Select samaccountname, @{Name="lastLogon";Expression={[datetime]::FromFileTime($_.'lastLogon')}}
El atributo Last-Logon se actualiza cada vez que un controlador de dominio procesa con éxito una solicitud de inicio de sesión, por lo que podría parecer que proporciona la manera perfecta de identificar con precisión cuentas de usuario obsoletas. Sin embargo, hay una gran advertencia que es necesario tener en cuenta.
AD Last-Logon no es un atributo replicado; Cada controlador de dominio (DC) mantiene su propia versión del atributo para cualquier usuario específico. Este comportamiento es intencional: el aumento en el tráfico de replicación necesario para mantener este atributo sincronizado en todos los controladores de dominio de una red habría sido abrumador, especialmente en el momento de su introducción hace veinte años. Pero este comportamiento también es la razón por la que es necesario tener cuidado al utilizar este atributo para informar sobre cuentas de usuarios obsoletas.
Debido a que Last-Logon no se replica (los controladores de dominio no intercambian esta información), los valores de los atributos solo se pueden interpretar en el contexto del controlador de dominio que se consulta. Es decir, el valor del atributo no es necesariamente la última vez que el usuario inició sesión, sino la última vez que el usuario se autenticó exitosamente a través del controlador de dominio que se está verificando. De manera similar, el hecho de que el atributo tenga un valor cero no significa necesariamente que el usuario nunca haya iniciado sesión; puede significar que el controlador de dominio que devolvió el valor nunca procesó una solicitud de inicio de sesión de ese usuario.
En resumen, si bien el atributo Last-Logon se puede utilizar para auditorías relacionadas con el inicio de sesión, la generación de informes precisos requerirá consultar a cada controlador de dominio capaz de procesar solicitudes de inicio de sesión para identificar el valor actualizado más recientemente para cualquier cuenta de usuario específica. Alternativamente, puede utilizar una solución de informes de terceros, como se explica más adelante en este artículo.
Marca de tiempo del último inicio de sesión
La marca de tiempo del último inicio de sesión contiene una representación de Windows FileTime de la hora reciente en la que el usuario inició sesión en un dominio. Este atributo de usuario se introdujo con Microsoft Windows Server 2003. A diferencia del antiguo atributo Last-Logon, el atributo Last-Logon-Timestamp es un atributo replicado; su valor para cualquier usuario específico se sincroniza con cada controlador de dominio. Esta es una gran mejora con respecto al atributo Último inicio de sesión. Eso significa que la mejor manera de identificar cuentas de usuario obsoletas es utilizar la marca de tiempo del último inicio de sesión, ¿verdad? Bueno, el uso de este atributo viene con su propia advertencia.
El problema con el atributo Last-Logon-Timestamp es que no siempre se actualiza cuando un controlador de dominio procesa con éxito una solicitud de inicio de sesión. En cambio, el atributo tiene una frecuencia de actualización dinámica que está limitada por el valor del atributo ms-DS-Logon-Time-Sync-Interval, que de forma predeterminada es NO ESTABLECIDO y se trata como 14 días. No es común que este atributo haya sido cambiado, pero si tiene curiosidad, puede identificar fácilmente su valor real usando el siguiente script de PowerShell:
$lastLogonReplicationInterval = (Get-ADDomain).LastLogonReplicationInterval
if( $lastLogonReplicationInterval )
{
Write-Host "ms-DS-Logon-Time-Sync-Interval is set to $($lastLogonReplicationInterval) days"
}
else {
Write-Host "ms-DS-Logon-Time-Sync-Interval is not set and will be treated as 14 days"
}En un dominio con el límite de actualización máximo predeterminado de 14 días, la marca de tiempo del último inicio de sesión se actualiza solo cuando un controlador de dominio procesa con éxito una solicitud de inicio de sesión y el período desde la última actualización del atributo es mayor que entre 9 y 14 días. La variación en ese periodo es resultado de un porcentaje aleatorio que se incluye en la lógica que controla la frecuencia de actualización. Este comportamiento refleja un compromiso entre limitar el tráfico de replicación necesario para mantener este atributo sincronizado en los controladores de dominio de una red y limitar la probabilidad de tener que replicar una cantidad significativa de usuarios cuya marca de tiempo del último inicio de sesión se actualizó aproximadamente al mismo tiempo.
A continuación se muestra un ejemplo simplificado de la lógica que controla la frecuencia de actualización del atributo Last-Logon-Timestamp:
(Current Datetime – Last-Logon-Timestamp) ? (ms-DS-Logon-Time-Sync-Interval – (Random % * 5 days))En la práctica, el atributo Last-Logon-Timestamp simplificará la auditoría y los informes relacionados con el inicio de sesión. El único problema potencial importante tiene que ver con los informes de usuarios inactivos. Cuando se utiliza para identificar usuarios inactivos, el umbral de obsolescencia debe exceder el valor ms-DS-Logon-Time-Sync-Interval del dominio en un tiempo suficiente para garantizar que la replicación haya podido propagar actualizaciones significativas.
Última fecha de inicio de sesión (PowerShell)
Aquellos que estén familiarizados con PowerShell pueden reconocer LastLogonDate, pero no podrán encontrarlo en ninguna parte del esquema del catálogo global de Active Directory. Esto se debe a que LastLogonDate es en realidad un valor calculado localmente que mostrará el valor replicado del atributo Last-Logon-Timestamp en un formato fácil de usar. Como era de esperar, LastLogonDate tiene todos los beneficios y todos los inconvenientes del atributo Last-Logon-Timestamp. Sin embargo, dado que no requiere conversión desde Windows DateTime, es la mejor opción para la mayoría de los informes de auditoría relacionados con el inicio de sesión de los usuarios.
Atributo del último inicio de sesión interactivo exitoso de Active Directory
El atributo ms-DS-Last-Successful-Interactive-Logon-Time se introdujo en Windows Server 2008, pero muchas personas no están familiarizadas con él porque está deshabilitado de forma predeterminada. Cuando está habilitado, contiene la fecha y hora del último inicio de sesión interactivo exitoso de un usuario. Si bien esto parece algo increíblemente útil de habilitar, existen algunas razones de peso para dejarlo deshabilitado, a las que llegaré en un momento.
Si tiene un entorno de laboratorio y desea jugar con el atributo ms-DS-Last-Successful-Interactive-Logon-Time, puede habilitar lo siguiente: ¿Configuración del equipo? ¿Políticas? Plantillas Administrativas ? ¿Componentes de Windows? ¿Opciones de inicio de sesión de Windows? Muestra información sobre inicios de sesión anteriores durante el GPO de inicio de sesión del usuario. Luego fuerce una actualización de la política de grupo. No habilite esta configuración en un dominio de producción por diversión; lo pasarás mal.
El primer problema con el atributo ms-DS-Last-Successful-Interactive-Logon-Time es que su valor se actualiza solo cuando se autentica un inicio de sesión interactivo (piense en los inicios de sesión "Ctrl-Alt-Supr"). . Esto significa que actividades de autenticación importantes, como inicios de sesión en recursos compartidos de red y autenticaciones LDAP, no activarán una actualización. En consecuencia, si utiliza este atributo para generar informes de auditoría relacionados con el inicio de sesión, es probable que obtenga resultados inexactos. Por ejemplo, es probable que los informes que identifican cuentas de usuarios inactivas incluyan cuentas de servicios de dominio, que generalmente son muy activas, sólo que de forma no interactiva. En resumen, este atributo hace que los informes de usuarios obsoletos sean realmente simples y confiables, pero solo para cuentas de usuario que se utilizan para sesiones interactivas.
Resumen
Si necesita generar informes de auditoría de inicio de sesión de Active Directory, probablemente el mejor método sea agregar los registros de eventos del controlador de dominio y procesarlos. Si bien los registros de eventos son increíblemente ruidosos, también son increíblemente confiables y brindan información histórica que Active Directory no puede.
Si eso no es posible, utilice LastLogonDate. O, mejor aún, utilice el cmdlet Search-ADAccount integrado en el módulo PowerShell de Active Directory para obtener la información necesaria y enviarla a un archivo CSV:
Search-ADAccount -AccountInactive -DateTime ((Get-Date).AddDays(-30)) -UsersOnly | Select Name,LastLogonDate,DistinguishedName| Export-CSV c:psinactive_users.csvEl cmdlet Search-ADAccount en realidad aprovecha LastLogonDate detrás de escena. Su período de inactividad es de 15 días por defecto, lo que debería estar bien en la mayoría de los entornos. El ejemplo anterior incluye la sintaxis necesaria para anular el período de inactividad con un valor de 30 días. Para aquellos que prefieren un enfoque sistematizado, existen útiles herramientas gratuitas como Netwrix Inactive User Tracker para recuperar esta información sin tener que convertir valores y analizar archivos csv.
¿Cómo puede ayudar Netwrix?
Revisar periódicamente la fecha del último inicio de sesión de cada usuario en Active Directory puede ayudar al administrador de su dominio a detectar y eliminar cuentas obsoletas que a los adversarios les encantaría comprometer y abusar. Pero eso es sólo una pequeña parte de una estrategia integral de ciberseguridad.
La solución de seguridad Netwrix Active Directory proporciona información detallada no solo sobre la hora del último inicio de sesión para cada cuenta de usuario de Active Directory, sino también sobre toda la actividad en Active Directory. Sus completos informes prediseñados agilizan el seguimiento del inicio de sesión. En particular, el informe Cuentas de usuario: Hora del último inicio de sesión enumera todas las cuentas de usuario, tanto habilitadas como deshabilitadas, con la hora del último inicio de sesión para cada cuenta. Al utilizar la función de suscripción de informes, los administradores de TI pueden recibir el informe por correo electrónico automáticamente en el cronograma que especifiquen, lo que facilita la revisión periódica de acuerdo con las mejores prácticas y les permite eliminar las vulnerabilidades del sistema de manera más eficiente.
Preguntas más frecuentes
¿Cuál es la diferencia entre Lastlogon y lastLogonTimeStamp?
A diferencia del atributo Last-Logon, el atributo Last-Logon-Timestamp es un atributo replicado; su valor para cualquier usuario específico se sincroniza con cada controlador de dominio.
¿Cómo se calcula lastLogonTimeStamp?
DC registra la última marca de tiempo de inicio de sesión (o lastLogonTimeStamp) al iniciar sesión el usuario; sin embargo, este atributo no siempre se actualiza en todos los controladores de dominio cuando un controlador de dominio procesa correctamente una solicitud de inicio de sesión.
¿Qué es la autenticación interactiva?
La autenticación interactiva es un proceso en el que se solicita al usuario que ingrese su ID de usuario y contraseña para iniciar sesión en un dispositivo. Los lugares más comunes donde se produce el inicio de sesión interactivo son la pantalla de inicio de sesión de Windows y la pantalla de bloqueo de Windows.