Plugin Ldap

Plugin para coger metricas de tu servidor ldap.

Introducción

Ver. 4-08-2021

Con este plug-in podremos ver las metricas de tu servidor ldap.

Tipo: Plug-in de servidor o agente

Matriz de compatibilidad

Sistemas donde se ha probado

CentOS 7, Fedora

Sistemas donde debería funcionar

Cualquier sistema linux 

 

Pre requisitos

Se requiere:

 

*Estas dependencias no son necesarias en la versión binaria del plugin, solo para la versión en python que normalmente es solo de pruebas.

Configuración

 

* En la versión binaria del plugin todo este proceso de instalación de dependencias no es necesario ya que vienen incluidas en el. 

Para poder ejecutar el plugin, debemos tener instalado python3, esto podemos hacerlo con el siguiente comando :

CentOS7

yum install python3

Deberemos instalar el módulo python-ldap en su versión de python 3, esto se hace con el siguiente comando:

yum install python3-ldap

o con pip :

pip3 install python3-ldap

A su vez, para instalar el módulo anterior, necesitaremos las siguientes dependencias:

yum groupinstall "Development tools"
yum install openldap-devel python-devel

Fedora

sudo dnf install python3

Aparte, deberemos tener instalado el modulo python-ldap, esto se instala con :

pip install python-ldap

Fedora necesitara las siguientes dependencias (de ldap) para que se pueda instalar este módulo:

sudo dnf install "@C Development Tools and Libraries" openldap-devel \
    python2-devel python3-devel python3-tox \
    lcov clang-analyzer valgrind

Para otros sistemas puedes ver las dependencias necesarias de python-ldap en : 

https://www.python-ldap.org/en/python-ldap-3.3.0/installing.html

Habilitar monitorización en ldap.

Es un requisito previo que el módulo de monitoreo de OpenLDAP esté habilitado y configurado.

Verifique si su módulo de monitoreo está habilitado en su instalación de OpenLDAP:

ldapsearch -Y EXTERNAL -H ldapi:/// -b "cn=module{0},cn=config"

Si olcModuleLoad: {1}back_monitorse incluye en la respuesta, el módulo de monitoreo está habilitado. Puede saltar al paso 3.

Para habilitar el módulo de monitoreo, cree un module_monitoring.ldifarchivo

 dn: cn=module{0},cn=config
 changetype: modify
 add: olcModuleLoad
 olcModuleLoad: {1}back_monitor

y ejecute el comando:

ldapmodify -Y EXTERNAL -H ldapi:/// -f module_monitor.ldif

Cree una contraseña cifrada para el usuario de supervisión:

slapdpasswd -s <MONITOR_USER_PASSWORD>

Si esto no funciona, pruebe con lo siguiente:

sudo -i slappasswd

Cree un cn_monitor.ldifarchivo

dn: <NEW_MONITORING_USER_DISTINGUISHED_NAME>
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: <COMMON_NAME_OF_THE_NEW_MONITORING_USER>
description: LDAP monitor
userPassword: <ENCRYPTED_PASSWORD>

image-1666876809840.png

y ejecute el siguiente comando para agregar el usuario de supervisión:

ldapadd -x -D <ADMIN_DISTINGUISHED_NAME> -w <ADMIN_PASSWORD> -f cn_monitor.ldif

Cree un database_monitor.ldifarchivo 

dn: olcDatabase={2}Monitor,cn=config
objectClass: olcDatabaseConfig
objectClass: olcMonitorConfig
olcDatabase: {2}Monitor
olcAccess: {0}to dn.subtree="cn=Monitor" by dn.base="<NEW_MONITORING_USER_DISTINGUISHED_NAME>" read by * none

image-1666876795704.png

y ejecute el siguiente comando para configurar la base de datos de monitoreo:

ldapadd -Y EXTERNAL -H ldapi:/// -f database_monitor.ldif

Vista de todos los comandos utilizados 

image-1666876846091.png

Para probar el módulo de monitoreo, ejecute el siguiente comando:

ldapsearch -x -D <NEW_MONITORING_USER_DISTINGUISHED_NAME> -w <MONITOR_USER_PASSWORD> -b cn=Uptime,cn=Time,cn=Monitor -s base '(objectClass=*)' '*' '+'

image-1666876925694.png

 

 

 

  1.  

Parámetros generales del plugin

Ejecución binario 

./pandora_ldap -s <server> -b <binding> -p <password> -a <agent> [--as_agent_plugin] [ -g <group> ] [ --data_dir <data_dir > ]

Ejecución versión python (solo de pruebas)

python3 pandora_ldap.py -s <server> -b <binding> -p <password> -a <agent> [--as_agent_plugin] [ -g <group> ] [ --data_dir <data_dir > ]

Si la ejecución es correcta veremos un 1, al ejecutar el plugin :

image-1628070558781.png

Si queremos ejecutarlo como plugin de agente lo haremos usando el parámetro opcional "as_agent_plugin" con un "1" que nos devolverá un xml con los datos de nuestro servidor :

image-1628070649144.png

Parámetros específicos del plugin

El plug-in cuenta con los siguientes parámetros:

Parámetro

Descripción

-s server, --server server

Es obligatorio. Tienes que introducir tu server con el puerto, por ejemplo, ldap://192.168.1.178:389

-h, --help

Muestra un pequeño mensaje de ayuda (opcional, solo usar para ver la ayuda)

-b binding, --binding binding

Es obligatorio. Tus datos de ldap para conectarte, por ejemplo, cn=ldapadm,dc=sanchez,dc=com

-p password, --password password

Es obligatorio, tu contraseña de ldap

-a agent, --agent agent

Es obligatorio, el nombre del agente que se creará con todos los módulos.

--as_agent_plugin

Es opcional, si quieres que el plugin sea de agente y te meta los módulos en el agente de pandora, ejecuta esto con un 1

-g GROUP, --group GROUP

Grupo de destino de Pandora FMS

--data_dir DATA_DIR

Directorio de datos de Pandora FMS. Por defecto es /var/spool/pandora/data_in/

Ejemplo de ayuda:

image-1628071303165.png

Ejecución manual

Podemos comprobar el plugin desde el terminal para ver si funciona, para comprobarlo, ejecutamos el plugin:

Ejemplo :

Versión binaria del plugin

/usr/share/pandora_server/util/plugin/pandora_ldap -s ldap://localhost.localdomain:389 -b cn=ldapadm,dc=sanchez,dc=com -p redhat -a ldapserver --as_agent_plugin 1

Versión python del plugin (solo para pruebas)

image-1628080159625.png

Con as_agent_plugin:

image-1628080229414.png

Ejemplo de ejecución con ayuda:

image-1628080257810.png

 

Configuración en pandora

Instalación desde consola

Para el registro del plugin, desde la consola, se debe ir al apartado "registrar plugin".

register_plugin.png

Daremos a seleccionar archivo.

register_plugin2.png

Seleccionaremos el fichero.pspz2 que contiene el plugin.

register2_ldap.png

Aparecerá un mensaje que indicará que el plugin se ha subido correctamente.

image-1651071986811.png

Una vez registrado el plugin, lo veremos en el apartado plugins.

serversingles.png

Si pinchamos en su título podremos navegar hacía el menú del plugin.

register3_ldap.png

Se pueden ver los parámetros del plugin en el menú del plugin, saldrán todos, el usuario debe configurarlos según el uso que le vaya a dar el plugin, los únicos imprescindibles son los que salen en el apartado de parámetros como obligatorios.

register4_ldap.png

En el apartado de abajo se le podrá añadir un valor a cada macro.

register5_ldap.png

 

Instalación manual

La mejor forma de manejar plugins de servidor en Pandora es desde "/usr/share/pandora_server/util/plugin" asi que lo enviaremos por pscp a esa ruta :

image-1628157276542.png

Después nos moveremos a la carpeta en la que lo hemos metido ( "/usr/share/pandora_server/util/plugin" es la recomendada").

Recuerda: Tienes que instalar las dependencias que necesita el módulo python ldap en tu sistema, esta explicado en el apartado configuración.

Nos movemos desde home con :

cd /usr/share/pandora_server/util/plugin/

Ejecutamos el plugin para ver que funciona :

python3 pandora_ldap.py -s <server> -b <binding> -p <password> -a <agent> [--as_agent_plugin] [ -g <group> ] [ --data_dir <data_dir > ]

image-1628157577158.png

Con as_agent_plugin 1 podremos ver un XML con los datos que nos saldrán en consola:

image-1628157658264.png

 

Si lo ejecutamos de la primera manera, sin "as_agent_plugin 1" se nos habrá creado un agente del nombre que le hayamos puesto en el parámetro -a con todos los módulos.

De todas formas, por si se prefiere instalarlo manualmente desde la consola, el proceso sería el siguiente:

Como plugin de servidor

Iremos a servidores > plugins:

1.JPG

Pinchamos en añadir:

2.JPG

Le ponemos en nombre y la descripción que se prefiera:

3.JPG

Metemos como comando la ruta al plugin, y como parámetros los que hemos metido ejecutando el plugin, los campos "_field_" son macros definidas más abajo.

4.JPG

Ponemos por cada macro la descripción que se prefiera y como valor los datos de tu servidor ldap.

5.JPG

Hecho esto si ejecutamos el plugin desde el terminal se nos habrá creado el agente con los módulos.

Como plugin de agente

Deberemos habilitar la configuración remota, para habilitarla tenemos que abrir el archivo pandora_agent.conf :

vim /etc/pandora/pandora_agent.conf

Dentro buscamos la línea remote_config, para habilitarla la ponemos en 1.

image-1628158866168.png

Y después de esto reiniciamos el agente :

/etc/init.d/pandora_agent_daemon restart

Se nos habrá activado la configuración remota, vamos al menu de agentes y pinchamos en el icono de configuración remota que es el siguiente :

1.JPG

Luego vamos al menu de plugins :

2.JPG

Metemos el comando tal como lo ejecutamos y damos a "añadir":

4.JPG

Ejemplo :

python3 /usr/share/pandora_server/util/plugin/pandoraversion_ldap.py -s ldap://localhost.localdomain:389 -b cn=ldapadm,dc=sanchez,dc=com -p redhat -a ldapserver --as_agent_plugin 1

Se nos habra creado un nuevo plugin:

3.JPG

Hecho esto, reiniciamos el agente :

/etc/init.d/pandora_agent_daemon restart

Y si vamos al agente con la configuración remota se habrán creado los módulos de ldap.

 

 

Modulos generados

Se creara un agente con el nombre que le hayamos puesto en la ejecución que contendrá todos los agentes:

image-1628159481406.png

Modulos generados

Nombre Descripción
Abandon operations completed Tipo de operacion "abandon" completadas
Abandon operations initiated Tipo de operacion "abandon" iniciadas
active operations todas las operaciones activas
Add operations completed tipo de operacion "add" completadas
Add operations initiated tipo de operacion "add" iniciadas
authentications/sec authenticaciones (binds) por segundo
Bind operations completed authenticaciones (binds) completadas
Bind operations initiated authenticaciones (binds) iniciadas
Bytes statics estadísticas de bytes
cn=Operations,cn=Monitor completed Operaciones totales completadas
cn=Operations,cn=Monitor initiated Operaciones totales iniciadas
Compare operations completed tipo de operacion "compare" completadas
Compare operations initiated tipo de operacion "compare" iniciadas
Current connections conexiones actuales
Delete operations completed tipo de operaciones "delete" completadas
Delete operations initiated tipo de operaciones "delete" iniciadas
Entries statics estadísticas de entradas
Extended operations completed tipo de operaciones "extended" completadas
Extended operations initiated tipo de operaciones "initiated" iniciadas
Max Descriptor connections Max Descriptor connections
Modify operations completed tipo de operaciones "modify" completadas
Modify operations initiated tipo de operaciones "modify" iniciadas
Modrdn completed Modrdn completed
Modrdn initiated Modrdn initiated
operations/sec operaciones por segundo
PDU statics estadísticas de PDU
Read waiters waiters leídos
Referrals statics estadisticas referencia
Response time tiempo de respuesta
Search operations completed tipo de operaciones "search" completadas
Search operations initiated tipo de operaciones "search" iniciadas
Total connections conexiones totales
Unbind Operations completed operaciones de desauthenticacion completadas
Unbind Operations initiated operaciones de desauthenticacion iniciadas
Write waiters waiters escritos

1.JPG

2.JPG

3.JPG