Búsqueda de sitios web

Cómo encontrar cuentas de usuarios inactivos en Active Directory


¿Sabía que las cuentas de usuario inactivas pueden generar importantes riesgos de seguridad?

El Centro para la Seguridad de Internet dice que "es más fácil para un actor de amenazas obtener acceso no autorizado a través de credenciales de usuario válidas que a través de cuentas pirateadas".

Esta es sólo una de las razones por las que debería buscar en Active Directory cuentas de usuarios inactivos y deshabilitarlas periódicamente.

Creo que te sorprenderá la cantidad de cuentas inactivas e inactivas que encontrarás.

En esta guía, le mostraré dos métodos para encontrar estas cuentas riesgosas.

Tabla de contenido:

  • ¿Cómo se identifican las cuentas de usuarios inactivos?
  • Por qué deberías eliminar las cuentas de usuarios inactivos
  • Mejores prácticas para eliminar cuentas inactivas
  • Ejemplo 1: buscar cuentas de usuario inactivas con PowerShell
  • Ejemplo 2: busque cuentas de usuario inactivas con la herramienta de limpieza de AD (además, busque cuentas deshabilitadas, caducadas y sin historial de inicio de sesión)

¿Cómo se identifican las cuentas de usuarios inactivos?

Esta parte es un poco larga pero explica qué atributo de usuario se utiliza para encontrar cuentas de usuario inactivas. Si no está interesado en esto, pase a los ejemplos.

Las cuentas de usuario tienen un atributo llamado "lastLogonTimeStamp". El propósito de este atributo es ayudar a identificar cuentas de usuario y de computadora inactivas. Sí, también se puede utilizar para cuentas de computadora.

Hay ciertos tipos de inicio de sesión que actualizarán el atributo lastLogonTimeStamp: inicios de sesión interactivos, de red y de servicio. Lo que le importa es el inicio de sesión interactivo, esto es cuando alguien inicia sesión en una consola.

Veamos este atributo en ADUC GUI.

Abra una cuenta, haga clic en la pestaña Editor de atributos y vaya al atributo lastLogonTimestamp.

¿Para qué se utiliza el valor lastLogon?

Puede ver en la captura de pantalla anterior que también hay un valor lastLogon, que también verá cuando use PowerShell. El valor de lastLogon no se replica en todos los controladores de dominio donde está lastLogonTimestamp. Esto es importante porque con el atributo lastLogon tendría que consultar cada controlador de dominio para saber cuándo inició sesión un usuario. Microsoft entendió esto y es por eso que introdujo el atributo lastLogonTimestamp allá por 2003.

Técnicamente, podrías usar lastLogon para encontrar una cuenta inactiva, pero es mucho más difícil.

Ahora veamos este valor con PowerShell.

Por alguna razón, Microsoft cambió el nombre de este valor a LastLogonDate en PowerShell.

Por qué no tengo idea pero es el mismo valor. Si sabe por qué Microsoft le cambió el nombre en PowerShell, comente a continuación.

Abra PowerShell y ejecute este comando.

get-aduser -identity username -properties *

Aquí hay una captura de pantalla de la misma cuenta en mi dominio.

Puede ver que lastLogonTimestamp y LastLogonDate tienen los mismos datos y hora.

Sólo recuerda esto.

PowerShell=LastLogonDate
ADUC GUI=lastLogonTimestamp

Utilizando estos atributos podemos buscar en Active Directory cuentas de usuarios inactivos.

Si desea conocer todos los aspectos técnicos sobre el atributo lastlogonTimestamp, consulte este artículo de Ned Pyle (empleado de Microsoft): El atributo LastLogonTimeStamp: para qué fue diseñado y cómo funciona

Por qué debería eliminar las cuentas de usuario inactivas

La seguridad es la razón número uno para limpiar cuentas de usuarios inactivos. Aquí está la lista completa.

  1. Riesgos de seguridad : los controles CIS n.º 5 dicen: "Hay muchas formas de obtener acceso encubierto a cuentas de usuario, incluidas contraseñas débiles, cuentas que aún son válidas después de que un usuario abandona la empresa, cuentas de prueba inactivas o persistentes, cuentas compartidas". que no se han modificado en meses o años, cuentas de servicio integradas en aplicaciones para scripts”. Le recomiendo que descargue los controles CIS, es una excelente fuente para ayudar a defender y proteger entornos.
  2. Problemas de inventario y seguimiento: Active Directory es una base de datos centralizada. No sólo puede utilizarlo para realizar un seguimiento de sus activos, sino que también puede integrarse con otros sistemas para obtener una solución completa de gestión de activos. Si no limpia sus activos de AD, su sistema de inventario será inexacto.
  3. Facilidad de gestión: más o menos en la misma línea que el n.º 2. Un entorno de AD desordenado conduce a un entorno difícil y estresante de gestionar. Piense en ejecutar un script de PowerShell o intentar implementar software en cientos de computadoras o usuarios. Recibirá muchos errores al intentar administrar un entorno con cuentas obsoletas e inactivas.
  4. Integridad de los datos : muchos de ellos tienen lo mismo: integridad de los datos. Nuevamente, AD es una base de datos centralizada y se puede integrar con muchos sistemas. Si los datos en AD son incorrectos, todos los sistemas conectados a AD serán incorrectos.
  5. Licencia: aquí se muestra un ejemplo del mundo real. Sus cuentas de usuario de AD se sincronizan con un sistema de terceros como McAfee. Mcafee le cobra según las cuentas de usuario. Si tiene cientos de cuentas inactivas sincronizadas con productos de terceros, podría estar pagando por muchas licencias adicionales que no necesita. Este también es el caso cuando se sincroniza AD con productos en la nube.

Mejores prácticas para eliminar cuentas de usuarios inactivos

A continuación se presentan algunas prácticas recomendadas para limpiar usuarios o cuentas de computadora inactivos.

  • Nunca elimine inmediatamente cuentas identificadas como inactivas. Los desactivé primero durante al menos 30 días (más tiempo, mejor).
  • Busque cuentas con un lastLogonTimestamp que tenga 45 días o más, lo que significa que la cuenta AD no muestra actividad de inicio de sesión durante 45 días o más.
  • Deshabilite las cuentas durante al menos 30 días, normalmente uso 60. Con acceso remoto, VPN y computadoras portátiles, a veces AD no se actualiza. Al deshabilitar una cuenta primero, es muy fácil volver a habilitarla y devolverle al usuario su acceso.
  • Agregue una descripción a la cuenta con la fecha deshabilitada y sus iniciales. Esto es muy útil para otros administradores en caso de que alguien pregunte por qué una cuenta está deshabilitada.
  • Una cuenta local inactiva puede no significar una cuenta de Office 365 inactiva. Esto sería para entornos híbridos que se sincronizan con Office 365. Deshabilitar la cuenta frente a eliminarla inmediatamente es fundamental para este tipo de entornos. Podría tener usuarios trabajando desde casa que nunca se autentican en el entorno AD local pero inician sesión en Office 365 diariamente.
  • Ejecute el proceso de limpieza todos los meses.

Ejemplo 1: buscar cuentas de usuario inactivas con PowerShell

Para encontrar cuentas inactivas con PowerShell, necesitará tener instaladas las herramientas RSAT o ejecutar estos comandos en el controlador de dominio.

Todos estos ejemplos utilizan el atributo LastLogonDate que analicé en la primera parte de este artículo.

Encuentra cuentas inactivas en los últimos 60 días


$When = ((Get-Date).AddDays(-60)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

Encuentra cuentas inactivas en los últimos 30 días


$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

Aquí hay un ejemplo de mi dominio.

Puede exportar los resultados a CSV agregando | export-csv -ruta c:\ps\inactiveusers.csv

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | export-csv -path c:\ps\inactiveusers.csv

Para limitar el alcance a una unidad organizativa, utilice el parámetro SearchBase con el nombre completo de la unidad organizativa.

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -SearchBase "OU=Accounting,OU=ADPRO Users,DC=ad,DC=activedirectorypro,DC=com" -Properties * | select-object samaccountname,givenname,surname,LastLogonDate

Encuentra usuarios inactivos y desactiva las cuentas.

$When = ((Get-Date).AddDays(-30)).Date
Get-ADUser -Filter {LastLogonDate -lt $When} -Properties * | select-object samaccountname,givenname,surname,LastLogonDate | Disable-ADAccount

En el ejemplo anterior, agregué | Disable-ADAccount al final para desactivar todas las cuentas inactivas.

También puede usar estos comandos para buscar cuentas de computadora, simplemente cambie Get-ADUser a Get-ADComputer

Como puede ver, es fácil identificar cuentas de usuarios inactivos con PowerShell filtrando por LastLogonDate del usuario. Si te gusta PowerShell, puedes crear una herramienta muy poderosa para limpiar AD.

Si no le gusta PowerShell o simplemente desea una herramienta GUI simple, consulte el ejemplo 2.

Ejemplo 2: buscar cuentas de usuario inactivas con la herramienta de limpieza de AD

La herramienta de limpieza de AD hace que sea extremadamente fácil encontrar cuentas de usuarios inactivos. La herramienta también se puede utilizar para buscar computadoras inactivas en Active Directory. También agregué filtros para encontrar rápidamente usuarios caducados, discapacitados y usuarios sin historial de inicio de sesión. A menudo se trata de cuentas olvidadas que también deberían formar parte del proceso de limpieza.

Veamos un ejemplo

Para encontrar todas las cuentas inactivas durante los últimos 30 días, simplemente ingrese 30 en las opciones de búsqueda y haga clic en ejecutar. Puede ingresar cualquier número en el cuadro de opciones de búsqueda.

De forma predeterminada, esta herramienta mostrará tanto los usuarios como las computadoras inactivos. Para ver solo cuentas de usuario, desmarque "mostrar computadoras" en el menú desplegable de filtros.

Esto busca en todo el dominio.

Puede limitar la búsqueda eligiendo una unidad organizativa o un grupo. Por ejemplo, quiero comprobar si hay cuentas inactivas en todos mis grupos de seguridad contable. Hago clic en Examinar y ahora puedo seleccionar todos mis grupos o cualquier unidad organizativa.

Para deshabilitar o mover las cuentas, selecciónelas y luego haga clic en el botón de acción.

Voy a mover estas cuentas a una unidad organizativa inactiva que creé. Hago clic en el botón mover y luego selecciono la unidad organizativa.

Ahora revisaré ADUC para verificar que las cuentas se hayan movido. Esto facilita ver todas las cuentas que voy a deshabilitar porque están identificadas como inactivas.

Si desea encontrar todas las cuentas de usuario deshabilitadas, simplemente despliegue la lista de filtros y seleccione usuarios deshabilitados.

En la captura de pantalla anterior también puede mostrar rápidamente todas las cuentas de usuario caducadas y los usuarios sin historial de inicio de sesión simplemente seleccionándolos en el filtro. Luego puede tomar medidas sobre estas cuentas moviéndolas o deshabilitándolas.

Hay muchas opciones con esta herramienta y la interfaz fácil de usar le ahorra un tiempo valioso a la hora de limpiar su entorno AD.

Resumen

Les mostré dos ejemplos para buscar y eliminar cuentas de usuarios inactivos en Active Directory. Le recomiendo encarecidamente que agregue esto a su lista de verificación de mantenimiento mensual. La seguridad es una gran preocupación con Active Directory pero, como señalé, hay varias razones por las que esta es una tarea importante. PowerShell es una excelente opción para encontrar cuentas inactivas, pero requiere conocimientos de secuencias de comandos. Para aquellos que no están interesados en las secuencias de comandos o simplemente desean una solución rápida y sencilla, existe la herramienta GUI de limpieza de AD.

Artículos relacionados