# Plugin 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: - Una instalación de ldap - **\*** Tener instalado python3 - **\*** Tener instaladado el modulo python-ldap - **\***Tener instalado unas serie de dependencias de ldap, que varían según el sistema operativo utilizado, estas se describen en el apartado "Configuración" - Tener el **Data Server** de Pandora FMS habilitado - Tener el **Plugin Server** de Pandora FMS habilitado **\*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](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_monitor`se 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.ldif`archivo ``` 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 ``` Si esto no funciona, pruebe con lo siguiente: ``` sudo -i slappasswd ``` Cree un `cn_monitor.ldif`archivo ``` dn: objectClass: simpleSecurityObject objectClass: organizationalRole cn: description: LDAP monitor userPassword: ``` [![image-1666876809840.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/scaled-1680-/image-1666876809840.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/image-1666876809840.png) y ejecute el siguiente comando para agregar el usuario de supervisión: ``` ldapadd -x -D -w -f cn_monitor.ldif ``` Cree un `database_monitor.ldif`archivo ``` dn: olcDatabase={2}Monitor,cn=config objectClass: olcDatabaseConfig objectClass: olcMonitorConfig olcDatabase: {2}Monitor olcAccess: {0}to dn.subtree="cn=Monitor" by dn.base="" read by * none ``` [![image-1666876795704.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/scaled-1680-/image-1666876795704.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/scaled-1680-/image-1666876846091.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/image-1666876846091.png) Para probar el módulo de monitoreo, ejecute el siguiente comando: ``` ldapsearch -x -D -w -b cn=Uptime,cn=Time,cn=Monitor -s base '(objectClass=*)' '*' '+' ``` [![image-1666876925694.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/scaled-1680-/image-1666876925694.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-10/image-1666876925694.png) 1. # Parámetros generales del plugin **Ejecución binario** ``` ./pandora_ldap -s -b -p -a [--as_agent_plugin] [ -g ] [ --data_dir ] ``` **Ejecución versión python (solo de pruebas)** ``` python3 pandora_ldap.py -s -b -p -a [--as_agent_plugin] [ -g ] [ --data_dir ] ``` Si la ejecución es correcta veremos un 1, al ejecutar el plugin : [![image-1628070558781.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628070558781.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628070649144.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628071303165.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628080159625.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1628080159625.png) Con as\_agent\_plugin: [![image-1628080229414.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628080229414.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1628080229414.png) Ejemplo de ejecución con ayuda: [![image-1628080257810.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628080257810.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register-plugin.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin.png)** Daremos a seleccionar archivo. **[![register_plugin2.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register-plugin2.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register-plugin2.png)** Seleccionaremos el fichero.pspz2 que contiene el plugin. [![register2_ldap.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register2-ldap.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register2-ldap.png) Aparecerá un mensaje que indicará que el plugin se ha subido correctamente. [![image-1651071986811.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/image-1651071986811.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/image-1651071986811.png) Una vez registrado el plugin, lo veremos en el apartado plugins. [![serversingles.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/serversingles.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/serversingles.png) Si pinchamos en su título podremos navegar hacía el menú del plugin. [![register3_ldap.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register3-ldap.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/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](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register4-ldap.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/register4-ldap.png) En el apartado de abajo se le podrá añadir un valor a cada macro. [![register5_ldap.png](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/scaled-1680-/register5-ldap.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2022-04/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628157276542.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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 -b -p -a [--as_agent_plugin] [ -g ] [ --data_dir ] ``` [![image-1628157577158.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628157577158.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1628157577158.png) Con as\_agent\_plugin 1 podremos ver un XML con los datos que nos saldrán en consola: [![image-1628157658264.png](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628157658264.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/Clg1.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/Clg1.JPG) Pinchamos en añadir: [![2.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/2.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/2.JPG) Le ponemos en nombre y la descripción que se prefiera: [![3.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/3.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/4.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/4.JPG) Ponemos por cada macro la descripción que se prefiera y como valor los datos de tu servidor ldap. [![5.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/5.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628158866168.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/NU11.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/NU11.JPG) Luego vamos al menu de plugins : [![2.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/nwI2.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/nwI2.JPG) Metemos el comando tal como lo ejecutamos y damos a "añadir": [![4.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/b3U4.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/b3U4.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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/Tqi3.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/Tqi3.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](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/image-1628159481406.png)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/image-1628159481406.png) **Modulos generados**
**Nombre****Descripción**
Abandon operations completedTipo de operacion "abandon" completadas
Abandon operations initiatedTipo de operacion "abandon" iniciadas
active operationstodas las operaciones activas
Add operations completedtipo de operacion "add" completadas
Add operations initiatedtipo de operacion "add" iniciadas
authentications/secauthenticaciones (binds) por segundo
Bind operations completedauthenticaciones (binds) completadas
Bind operations initiatedauthenticaciones (binds) iniciadas
Bytes staticsestadísticas de bytes
cn=Operations,cn=Monitor completedOperaciones totales completadas
cn=Operations,cn=Monitor initiatedOperaciones totales iniciadas
Compare operations completedtipo de operacion "compare" completadas
Compare operations initiatedtipo de operacion "compare" iniciadas
Current connectionsconexiones actuales
Delete operations completedtipo de operaciones "delete" completadas
Delete operations initiatedtipo de operaciones "delete" iniciadas
Entries staticsestadísticas de entradas
Extended operations completedtipo de operaciones "extended" completadas
Extended operations initiatedtipo de operaciones "initiated" iniciadas
Max Descriptor connectionsMax Descriptor connections
Modify operations completedtipo de operaciones "modify" completadas
Modify operations initiatedtipo de operaciones "modify" iniciadas
Modrdn completedModrdn completed
Modrdn initiatedModrdn initiated
operations/secoperaciones por segundo
PDU staticsestadísticas de PDU
Read waiterswaiters leídos
Referrals staticsestadisticas referencia
Response timetiempo de respuesta
Search operations completedtipo de operaciones "search" completadas
Search operations initiatedtipo de operaciones "search" iniciadas
Total connectionsconexiones totales
Unbind Operations completedoperaciones de desauthenticacion completadas
Unbind Operations initiatedoperaciones de desauthenticacion iniciadas
Write waiterswaiters escritos
[![1.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/MAi1.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/MAi1.JPG) [![2.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/nJF2.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/nJF2.JPG) [![3.JPG](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/scaled-1680-/1hb3.JPG)](https://pandorafms.com/guides/public/uploads/images/gallery/2021-08/1hb3.JPG)