Nagios – Checkeando el estado de los Usuarios en el Directorio Activo
Cuando tenemos bastantes usuarios en nuestra organización, o sobre todo, cuando son un poco topos, podemos intentar y controlar sus cuentas del Directorio Activo, para prevenir y monitorizar posibles fallos, esto es, podremos controlar si las cuentas de usuario están deshabilitadas, han caducado sus contraseñas o están cerca de caducar, así como si han llegado a bloquearse, entre otras más opciones.
Gracias a Nagios o Centreon entre otros, podremos monitorizar esto de una forma bastante sencilla y obtener notificaciones en tiempo real en caso que tengamos alguna cuenta de usuario afectada. Mediante NRPE podremos ejecutar un script de PowerShell en cualquier máquina Windows que checkeará el Directorio Activo en búsqueda de usuarios con problemas. Si no tienes ‘check_nrpe’ o necesitas saber cómo instalar el agente necesario, visita este documento Nagios – Monitorizando con NRPE.
Nos basamos en el script ‘lotp_check_ad_accounts.ps1’, que podremos descargar de Exchange Nagios, desde esta misma URL: https://exchange.nagios.org/directory/Plugins/Operating-Systems/Windows-NRPE/Check-Active-Directory-Accounts/details
Podremos verificar:
- Cuentas deshabilitadas –> AccountDisabled
- Cuentas de usuario caducadas –> AccountExpired
- Cuentas de usuario a punto de caducar –> AccountExpiring
- Cuentas inactivas –> AccountInactive
- Cuentas bloqueadas –> LockedOut
- Cuentas con contraseñas caducadas –> PasswordExpired
- Cuentas que nunca le caducan sus contraseñas –>PasswordNeverExpires
Si queremos probarlo desde una PowerShell, deberemos ejecutar el comando con el siguiente formato:
[sourcecode]lotp_check_ad_accounts.ps1 AccountDisabled ‘dc=openservices,dc=local’ subtree 2 3[/sourcecode]
Donde los argumentos anteriores serían, el primero el tipo de checkequeo que se hará, seguido de la cadena de búsqueda, el ámbito de la busqueda (pudiendo ser Base/OneLevel/Subtree) y en números, los valores máximos de resultados para un Warning y Critical.
Si modificamos la siguiente línea del script, podremos hacer un output de los usuarios afectados en cuestión,:
[sourcecode]$output=$state+": "+$result.Count+" "+$action+"|"+$action+"="+$result.Count+";"+$maxWarn+";"+$maxCrit[/sourcecode]
Por la siguiente:
[sourcecode]$output=$state+": "+$result.Count+" "+$action+" "+$result+"|"+$action+"="+$result.Count+";"+$maxWarn+";"+$maxCrit[/sourcecode]
Bueno! Empezamos! Editamos el fichero nsclient.ini como ya sabemos! debemos primero definir el alias y luego el script en cuestión que ejecutará:
[sourcecode][/settings/external scripts/scripts]
check_cuentas = cmd /c echo scripts\\lotp_check_ad_accounts.ps1 $ARG1$ "$ARG2" subtree $ARG3$ $ARG4$; exit ($lastexticode) | powershell.exe –
[/settings/external scripts/alias]
check_cuentas = check_cuentas[/sourcecode]
Como vemos, le podremos pasar 4 argumentos, aún que cada uno puede hacer como quiera! Recordar reiniciar el servicio NSClient ++ tras la modificación del fichero de configuración.
Y luego ya bastará con crear el Servicio que monitorizará cada checkeo sobre los usuarios de nuestro Directorio Activo. Creamos este servicio como es habitual y lo enlazaremos al servidor que ejecutará el script de PowerShell, usaremos el comando chech_nrpe y en mi caso no tengo definidos los argumentos por separado, podremos meterle el churro con todos directamente, o definir el comando check_nrpe para que admita argumentos. Bueno, al tema, en este escenario, quedaría así definido el servicio que checheará en este caso las Cuentas bloqueadas, vamos a “Configuration” > “Services” > “Add” o clonamos uno y le indicamos los siguientes datos al menos:
- Description: El nombre con el que le veremos desde la monitorización, definirá el checkeo realizado, en este caso, ‘AD – Cuentas bloqueadas me valdrá’.
- Template: Normalmente, seleccionamos ‘generic-active-service-custom’.
- Check Command: Seleccionamos de la lista de comandos, ‘check_nrpe’.
- Args: Debemos cumplimentar aquí el alias que definimos en el archivo INI, en este documento pasaremos mediante NRPE el check ‘check_cuentas’. Y seguido de un ‘-a’ para pasarle argumentos, quedaría de la siguiente manera: check_cuentas -a LockedOut “dc=openservices,dc=local” 2 3
Y grabamos con “Save”! Cearemos tantos servicios como tipo de checkeos queramos hacer en nuestro entorno!
Y bueno, como siempre, si exportamos los datos de Centreon y reiniciamos el engine, podremos ya desde “Monitoring” > “Status Details” comprobar cada servicio monitorizado, tendremos ya controladas y monitorizadas las cuentas de usuario de nuestro Active Directory con Nagios o Centreon! Evitaremos sustos indebidos, cierto?? Espero os sea de utilidad, gracias a todos por compartir!