Búsqueda de sitios web

Cómo encontrar usuarios bloqueados en Active Directory con PowerShell


¿Los usuarios de su organización alguna vez olvidan sus contraseñas? ¡Seguramente no! ¿Un usuario de Active Directory ha bloqueado su cuenta? ¡De ninguna manera! ¡Veamos qué podemos hacer para encontrar usuarios bloqueados en Active Directory con PowerShell!

Deje de tener problemas con las llamadas para restablecer contraseñas y los bloqueos de cuentas en Active Directory. Obtenga una prueba GRATUITA de Specops uReset.

¿Alguna vez su red ha sido infectada con malware que intenta autenticarse con tantas cuentas de usuario de dominio como sea posible? Espero que no, pero lo he visto suceder varias veces. Los usuarios y los gusanos son sólo dos de las razones por las que una o más cuentas de AD pueden quedar bloqueadas. Dependiendo de su política de contraseñas, los bloqueos pueden ocurrir a diario o solo ocurrir ocasionalmente.

Independientemente del motivo o situación, los bloqueos de cuentas afectan a sus usuarios. Dado que dependen de su cuenta de dominio de Active Directory para casi todo, notarán inmediatamente cuando esté bloqueada. Su servicio de asistencia técnica puede volver a habilitar la cuenta, pero ¿qué pasa si vuelve a suceder? …y otra vez. …y otra vez. Es importante descubrir la causa raíz de este problema.

Una forma de hacerlo es utilizar PowerShell y el módulo ActiveDirectory. Al utilizar el cmdlet Search-AdAccount dentro del módulo de Active Directory, puede rastrear fácilmente todas las cuentas que actualmente están bloqueadas en su dominio.

Relacionado: Cómo instalar el módulo PowerShell de Active Directory

Encuentre usuarios bloqueados en Active Directory con PowerShell

Para buscar cuentas bloqueadas, puede ejecutar el comando Search-AdAccount usando el parámetro LockedOut. Esto devolverá a todos los usuarios actualmente bloqueados y usted tiene derecho a verlo.

Search-AdAccount -LockedOut

Este comando es excelente, pero ¿qué pasa si tienes una cuenta que se bloquea continuamente y necesitas averiguar de qué sistema proviene? Esta es una tarea común siempre que tenga una infección de malware en algún lugar de su red o tal vez cuando tenga un administrador olvidadizo que olvidó cerrar sesión en una sesión de escritorio remoto. Eso nunca ha sucedido, ¿verdad?

Para encontrar el origen de un bloqueo de Active Directory, primero deberá asegurarse de estar consultando el controlador de dominio correcto. En este caso, este será el controlador de dominio con la función de emulador de PDC.

Encuentre el titular del rol de PDCe

Toda la autenticación de contraseña llegará a este DC que tiene la función PDCe, por lo que siempre es el mejor lugar para verificar. Para encontrar el controlador de dominio con la función PDCe, puede verificar la propiedad PDCEmulator devuelta por el cmdlet Get-ADDomain.

$pdce = (Get-ADDomain).PDCEmulator

Explorando el registro de eventos en busca de bloqueos

Una vez que el DC tenga la función PDCe, deberá consultar el registro de eventos de seguridad (registros de seguridad) de este DC para obtener el ID del evento 4740. El ID del evento 4740 es el evento que se registra cada vez que se bloquea una cuenta. Haga esto con el cmdlet Get-WinEvent.

Get-WinEvent -ComputerName $pdce -FilterHashTable @{'LogName' ='Security';'Id' = 4740}

¡Estás mucho más cerca de encontrar a esos usuarios bloqueados en Active Directory con PowerShell!

Analizando el nombre de usuario y la ubicación

Esto devolverá todos los eventos de bloqueo, pero no muestra inmediatamente los nombres de usuario y las computadoras en las que se realizó el bloqueo. Para encontrar el nombre de usuario, deberá profundizar un poco más en una propiedad que Get-WinEvent devuelve llamada Properties.

$filter = @{'LogName' = 'Security';'Id' = 4740}
$events = Get-WinEvent -ComputerName $pdce -FilterHashTable $filter
$events | Select-Object @{'Name' ='UserName'; Expression={$_.Properties[0]}}, @{'Name' ='ComputerName';Expression={$_.Properties[1]}}

Puede ver que moví el filtro de tabla hash para evitar el ajuste del código y, lo que es más importante, utilicé las propiedades calculadas de Select-Object para extraer el nombre de usuario y el nombre de la computadora de las Propiedades propiedad. En cada uno de estos eventos, el nombre de usuario que se bloqueó es siempre el primer elemento de la matriz Properties, mientras que el segundo elemento es siempre el nombre de la computadora donde se realizó el bloqueo.

Aprovechando PowerShell para desbloquear cuentas AD

Ahora que ha encontrado a sus usuarios de AD bloqueados, ¿cómo puede desbloquear las cuentas? El módulo ActiveDirectory en PowerShell ofrece el comando Unlock-ADAccount que agiliza la tarea de hacer que un cliente vuelva a trabajar. Como se muestra a continuación, use PowerShell para desbloquear cuentas AD. Este comando funciona tanto en Windows PowerShell como en PowerShell 7, una vez cargado a través del módulo ActiveDirectory.

Unlock-ADAccount -Identity 'lockeduser'

Quizás esté buscando desbloquear todos los usuarios bloqueados a la vez, use Search-ADAccount con el parámetro -LockedOut y canalice los resultados a Unlock-ADAccount. código> comando, como se muestra a continuación.

Search-ADAccount -LockedOut | Unlock-ADAccount

Reduzca las llamadas al servicio de atención al cliente y actualice las credenciales de caché para usuarios remotos incluso sin VPN con una solución de autoservicio para restablecer contraseñas. ¡Obtenga una demostración de Specops uReset!

Resumen

A estas alturas, debería poder identificar rápidamente todas las cuentas que actualmente están bloqueadas en su dominio, así como ver un historial de todos los bloqueos de cuentas. Ahora es el momento de hablar severamente con Joe sobre dejar abiertas esas sesiones de RDP...

Artículos relacionados