Incluir manager al exportar un listado de usuarios

Un requisito muy común a la hora de exportar un listado de usuarios del Active Directory es incluir el manager o responsable de una persona dentro del listado.

Hacer esto con PowerShell es muy sencillo, utilizando nuestro viejo ActiveRoles podemos ejecutar el siguiente comando:

Get-QADUser | Select-Object Name,Department,Title,Manager,Company

¿Problema? El comando nos devuelve todos los datos, pero el manager viene con su Distinguished Name (DN: CN=El Jefe,OU=Mi OU,DC=MiDominio,DC=Root). Esto puede que sea correcto, pero no nos es de mucha utilidad a la hora de pasarle la información al auditor que necesita este listado para ayer por la mañana 🙂 .

Para solucionar este detalle podemos hacer dos cosas, decirle al auditor que es “eche e o que hai”, con lo que seguramente te mirará con mala cara y luego se chivará con el jefe, o entregarle un listado en condiciones. Para esto último tenemos que usar las propiedades calculadas de la siguiente forma:

Get-QADUser | Select-Object Name,Department,Title,@{Expression={(Get-QADUser $_.Manager).Name};Label="Manager"},Company

Listo, puedes entregarle la información la información al auditor y seguir tomándote el café mientras le cuentas a tus compis lo mal que lo ha hecho Lenovo con todo el rollo de Superfish.

Universal Forwarder no envía logs al servidor de Splunk

Hoy estuve mas tiempo del que quería instalando el Forwarder de Splunk en un nuevo servidor. Aparentemente, en algún momento entre la versión 6.1 y 6.2.1 cambiaron las configuraciones por defecto.

Al ejecutar netstat el cliente aparecía conectado al servidor, sin embargo, no se estaban recibiendo los logs de [WinEventLog://Security].

El culpable es el inputs.conf de %ProgramFiles%\SplunkUniversalForwarder\etc\apps\Splunk_TA_windows\default\ que ahora viene con el parámetro index = wineventlog por defecto.

Para solucionarlo solo hay que poner en %ProgramFiles%\SplunkUniversalForwarder\etc\apps\Splunk_TA_windows\local\inputs.conf, debajo de [WinEventLog://Security] el parametro index = main (o el nombre de tu índice) y reiniciar el servicio SplunkForwarder

Active Directory, el atributo pwdLastSet y cómo extender tiempo de expiración de una contraseña

Hoy quiero hablar un poco sobre el atributo pwdLastSet y su importancia.

Este es uno de esos atributos que no se suele mirar mucho, pero que puede ser de mucha utilidad si se sabe usar.

Cada vez que cambiamos nuestra contraseña en Active Directory se modifica este atributo y se guarda el Time Stamp correspondiente a la fecha/hora de ese momento. Este valor solo puede ser asignado por SYSTEM, por lo que las únicas formas de cambiarlo son:

  1. Cambiando la contraseña
  2. Marcando la casilla el “El usuario debe cambiar la contraseña en el siguiente inicio de sesión”

Si pedimos que el usuario cambie contraseña en el próximo inicio de sesión el sistema cambia el valor de este atributo a 0.

pwdLastSet1

Si tenemos aplicada una política que pide que los usuarios cambien de contraseña a cada X días el sistema lo que hace es calcular si la contraseña está caducada en base a este atributo, restándole el valor al Time Stamp del momento en el que iniciamos sesión y convirtiendo este valor a días.

Teniendo en cuenta esto útlimo, aquí va el tip:

Supongamos tenemos una política que pide cambio cada 30 días, ahora imagina la siguiente situación.

El CEO se va de vacaciones cuando han pasado 29 días desde que cambió la contraseña. Al día siguiente te llama de emergencia porque el móvil no le sincroniza el correo o no se puede conectar a la VPN corporativa. ¿Cómo hacemos para extenderle el tiempo de caducidad de la contraseña sin cambiarla?

Tenemos tres posibilidades:

  1. Te da su contraseña y le das a cambiar contraseña poniendo la misma que tenía, violando seguramente la política de seguridad de la empresa.
  2. Editamos la cuenta del usuario marcando la casilla “La contraseña nunca expira”, violando nuevamente la política de seguridad.
  3. Le extiendes el tiempo de caducidad a la contraseña actual.

¿Cómo hacemos esto último? Muy facil, hay un tercer posible valor que le podemos asignar al atributo pwdLastSet. Si colocamos el valor -1 utilizando el editor de atributos del ADUC (Active Directory Users and Computers) el sistema convierte este número al Time Stamp actual, dándole a la contraseña otros 30 días de vigencia.

Un punto importante es que no le podemos asignar el valor -1 directamente. Primero hay que asignarle 0, guardar y salir de la cuenta, enterar nuevamente y cambiar el valor a -1. Esto lo podemos hacer más rápidamente con el siguiente script de Powershell.


$cuenta = "usuario del CEO"
Set-QADUser -Identity $cuenta -ObjectAttributes @{pwdLastSet='0'}
Set-QADUser -Identity $cuenta -ObjectAttributes @{pwdLastSet='-1'}

Referencia