Autor:Yasser Yoan Coello Sánchez
Resumen: GLPI es una solución libre de gestión de servicios de tecnología de la información (ITSM), un sistema de seguimiento de incidencias y de solución Service Desk, es de origen francés. Este software de código abierto está editado en PHP y distribuido bajo una licencia GPL. Lleva 20 años de andar en el mundo de las TIC.
En este tutorial trataremos de enseñarte como poder implementarlo.
Como cualquier tecnología de código abierto, se puede ejecutar, modificar o desarrollar el código que es libre. De este modo, contribuidores pueden participar a la evolución de la solución proponiendo módulos adicionales libres y de código abierto en github.
Partiendo de esta breve reseña comenzaremos con la implementación de este software libre que nos permitirá elevar la gestión de los medios informáticos de una empresa. Para ello implementaremos la versión del software 10.0.9 esto es ajustable a la última versión la 10.0.10, estas dos versiones tiene una característica muy peculiar y esperada por todos sus seguidores: el inventario nativo a través de la plataforma desplegada sin la necesidad de plugins como el FusionInventory y el Ocs Inventory, pero aquí tocaremos las dos opciones de inventareado tanto por el FusionInventory como el nativo.
– Contenedor para Proxmox: Debian 11 Bullseye o 12 Bookworm.
– Contenedor sin privilegios
– CPU: 2 núcleos
– RAM: 512 MB
– SCSI Virtio: 8 GB
– Firewall desactivado del contenedor
– Red al gusto de los usuarios puede ser por Virtio o Intel1000.
– Añadir al Firewall (PFSENSE O KERIO CONTROL) la regla para que las PC de la LAN de nuestra entidad entreguen el inventario por el puerto 62354 a nuestro servidor que está en la DMZ o puede estar dentro de la LAN, como ustedes lo prefieran.
Nota: Si ponen el servidor de inventario en la LAN o en la DMZ podemos robustecer la seguridad utilizando el IPS FAIL2BAN, en próximos días sacaré un tutorial de cómo implementar este servicio que nos acompaña desde versiones de antaño de Debian
Proceso de instalación para el despliegue de la herramienta GLPI:
Preparamos la salida del proxy de nuestro servidor en mi caso salgo por los de TRANSNET, hacemos un bash llamado proxy:
Para ello crearemos con touch /opt/proxy nuestro bash (esto lo podemos poner donde quieran), luego editamos el mismo fichero con nano /opt/proxy y le agregamos lo siguiente:
#!/bin/bash
# Anadir parametros de PROXY en /etc/environment
echo -e '\n' >>/etc/environment
echo -e '#Reglas del proxy\n' >>/etc/environment
echo -e 'http_proxy=proxy.transnet.cu:3128' >>/etc/environment
echo -e 'https_proxy=proxy.transnet.cu:3128' >>/etc/environment
echo -e 'ftp_proxy=proxy.transnet.cu:3128\n' >>/etc/environment
# Anadir parametros de PROXY en /etc/apt/apt.conf.d/70debconf
echo -e '\n' >>/etc/apt/apt.conf.d/70debconf
echo -e '\n' >>/etc/apt/apt.conf.d/70debconf
echo -e 'Acquire::http::Proxy "http://proxy.transnet.cu:3128/";' >>/etc/apt/apt.conf.d/70debconf
echo -e 'Acquire::https::Proxy "http://proxy.transnet.cu:3128/";' >>/etc/apt/apt.conf.d/70debconf
echo -e 'Acquire::ftp::Proxy "http://proxy.transnet.cu:3128/";\n' >>/etc/apt/apt.conf.d/70debconf
# Anadir parametros de PROXY en /etc/bash.bashrc
echo -e '\n' >>/etc/bash.bashrc
echo -e '\n' >>/etc/bash.bashrc
echo -e '#Reglas de proxy\n' >>/etc/bash.bashrc
echo -e 'export http_proxy=http://proxy.transnet.cu:3128/' >>/etc/bash.bashrc
echo -e 'export https_proxy=http://proxy.transnet.cu:3128/' >>/etc/bash.bashrc
echo -e 'export ftp_proxy=http://proxy.transnet.cu:3128/\n' >>/etc/bash.bashrc
Ctrl+O para guardar lo que añadimos al fichero y Ctrl+X para salir del editor nano.
Luego de esto editamos el wgetrc con nano: nano /etc/wgetrc y agregamos el proxy en las líneas correspondientes.
deb http://repos.uclv.edu.cu/debian bookworm main contrib non-free-firmware
deb http://repos.uclv.edu.cu/debian bookworm-updates main contrib non-free-firmware
deb http://repos.uclv.edu.cu/debian bookworm-backports main contrib non-free-firmware
– Para desarrollar el despliegue del software GLPI nos hacemos de un servidor web (apache2 o nginx, php8 y mariadb):
Actualizaremos nuestro SO primero:
apt update&upgrade
Despliegue de los paquetes que vamos a necesitar:
apt install curl gnupg2 lsb-release
Para ahorrar tiempo, comparto el link de este tutorial excelente con los pasos de despliegue del servidor LAM y el GLPI:
Nos concentraremos en el GLPI ya desplegado y lo que tenemos que hacer para inventariar nuestras PC tanto por el FusionInventory, como por el plugins nativo de la plataforma.
Para ello empezaremos por el FusionInventory
Plugin disponible:
– fusioninventory-10.0.6+1.1.zip
Agentes para Las PC que tienen Windows:
– fusioninventory-agent_windows-x64_2.6.exe
– fusioninventory-agent_windows-x86_2.6.exe
Agente para PC que tienen Linux:
-fusioninventory-agent_2.6-1_all.deb
En mi caso tengo los puertos de SSH cerrados en todos mis servidores Linux procederemos a la apertura del puerto 22 o como ustedes lo tengan, un consejo sobre algo nunca trabaje desde root siempre hay que crear un usuario de trabajo que nos permita conectarnos a root por su o sudo -s
nano /etc/ssh/sshd_config
OpenSSH is to specify options with their default value where
#possible, but leave them commented. Uncommented options override the # default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#Address Family
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
#Ciphers and keying
#RekeyLimit default none
#Logging
#Syslog Facility AUTH
#LogLevel INFO
#Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
Ahora cambiaremos lo que está seleccionado por esto:
# OpenSSH is to specify options with their default value where
#possible, but leave them commented. Uncommented options override the # default value.
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
#AddressFamily any #ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_ecdsa_key
#HostKey /etc/ssh/ssh_host_ed25519_key
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility
#Authentication:
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
Guardamos la configuración con Ctrl+O y luego daremos Ctrl+X para salir del editor nano, reiniciamos el servicio: /etc/init.d/ssh restart o service ssh restart
Ahora procedemos a subir los plugins al servidor de inventario, en el directorio plugins del sistema GLPI
Descompactaremos el FusionInventory nos ubicamos dentro del directorio de GLPI:
root@inventario:~# cd /glpi/inventario.agespot.transnet.cu/plugins/
root@inventario:/glpi/inventario.agespot.transnet.cu/plugins# unzip fusion inventory fusion inventory/ fusion inventory-10.0.6+1.1.zip
root@inventario:/glpi/inventario.agespot.transnet.cu/plugins# unzip fusion inventory-10.0.6+1.1.zip
Una vez descompactado pasamos esta sintaxis para darle los permisos recursivos al directorio: chown -R www-data: /directorio donde está desplegado el GLPI
chown -R ww-data: /glpi/inventario.agespot.transnet.cu/plugins/
Ahora viene el truco para hacer compatible el plugin FusionInventory con las versiones de Glpi 10.0.X
nano/glpi/inventario.agespot.transnet.cu/plugins/fusion inventory/setup.php
Cuando abrimos el setup.php cambiar las líneas de Minimal GLPI version y Maximun GLPI version quedando así:
* @link http://ww.fusioninventory.org/
* @link https://github.com/fusioninventory/fusioninventory-for-glpi
*
*/
define ("PLUGIN_FUSIONINVENTORY_VERSION", "10.0.6+1.1");
// Minimum GLPI version, inclusive
define('PLUGIN_FUSIONINVENTORY_GLPI_MIN_VERSION', '10.0.9');
// Maximum GLPI version, exclusive
define('PLUGIN_FUSIONINVENTORY_GLPI_MAX_VERSION', '10.0.10);
// Used for use config values in 'cache'
$PF_CONFIG = [];
// used to know if computer inventory is in reallity a ESX task $PF_ESXINVENTORY = false;
define('PLUGIN_FUSIONINVENTORY_DIR', _DIR_);
define ("PLUGIN_FUSIONINVENTORY_XML", '');
define ("PLUGIN_FUSIONINVENTORY_OFFICIAL_RELEASE", "1");
define ("PLUGIN_FUSIONINVENTORY_REALVERSION", PLUGIN_FUSIONINVENTORY_VERSION. "");
define("PLUGIN_FUSIONINVENTORY_REPOSITORY_DIR",
GLPI_PLUGIN_DOC_DIR."/fusioninventory/files/repository/");
define("PLUGIN_FUSIONINVENTORY_MANIFESTS_DIR",
GLPI_PLUGIN_DOC_DIR."/fusioninventory/files/manifests/");
define("PLUGIN_FUSIONINVENTORY_XML_DIR",
GLPI_PLUGIN_DOC_DIR."/fusion inventory/xml/");
// include_once GLPI_ROOT.'/plugins/fusioninventory/vendor/autoload.php';
Guardamos la conf con Ctrl+O y Ctrl+X para salir y reinciamos el apache o nginx:
/etc/init.d/apache2 restart
service apache2 restart
En el caso del nginx
service nginx restart
Ahora vamos a la plataforma de GLPI, accedemos con la clave que le asignamos durante el despliegue y vamos a la Configuración/Plugins
Como verán el FusionInventory la versión es la 10.0.9 gracias al cambio que le hicimos en el setup.php del plugin, ahí le va poner el signo + para instalar y luego activar el plugin; en este caso lo que pasó es que desplegué el plugin nativo de la plataforma GLPI y automáticamente puso en modo Replaced al FusionInventory migrando a todos los medios informáticos inventariado al plugin nativo.
Ahora desplegaremos los agentes según su arquitectura: fusioninventory-agent_windows-x64_2.6.exe y fusioninventory-agent_windows-x86_2.6.exe
En el proceso de instalación del agente de FusionInventory, donde nos pide poner destinos remotos, ponemos la dirección de nuestro servidor GLPI, lo aconsejable es ponerlo de esta forma:
https://tudominio.cu/plugins/fusioninventory/
front/plugin_fusioninventory.communication.php
Ahora vamos con el plato fuerte de la plataforma GLPI el inventario nativo, el mismo cuenta con varias opciones una de ellas es el inventario remoto sin necesidad del agente utilizando las vías de SSH (Unix/Linux) y WinRM (Windows), además de esto inventarea celulares con sistema operativo Android, a través de un agente que se descarga desde la Play Store.
Una vez finalizado el proceso de instalación del agente, en pocos minutos tenemos el inventario de nuestra PC en el servidor de inventariado
Ahora vamos con el plato fuerte de la plataforma GLPI el inventario nativo, el mismo cuenta con varias opciones una de ellas es el inventario remoto sin necesidad del agente utilizando las vías de SSH (Unix/Linux) y WinRM (Windows), además de esto inventarea celulares con sistema operativo Android, a través de un agente que se descarga desde la Play Store.
Plugin disponible:
glpi-inventory-plugin-1.2.3.zip
Agentes para Las PC que tienen Windows:
GLPI-Agent-1.5-x64.msi
GLPI-Agent-1.5-x86.msi
Agente para PC que tienen Linux:
glpi-agent-task-collect_1.5-1_all.deb
glpi-agent-task-deploy_1.5-1_all.deb
glpi-agent-task-esx_1.5-1_all.deb
Agente para Android
GLPI Agent.apk
Otros ficheros:
GLPI-AgentMonitor-x64.exe
Los pasos anteriores descripto en el despliegue del plugins FusionInventory nos sirve para la instalación del plugin nativo de la plataforma, excepto el paso de la modificación del setup.php del plugin de Fusion Inventory.
Desplegando el agente nativo:
Destacar algo del proceso de despliegue del agente nativo de la plataforma, desde la versión 10.0.6 de GLPI podemos poner en el Remote Targets, la dirección URL que apunta a nuestro servidor de inventario.
Este fichero tenemos que ejecutarlo con permisos de administrador , cuando lo hacemos el Monitor del Agente se coloca en el área de notificaciones.
También tenemos una aplicación que se llama GLPI-AgentMonitor-x64.exe el mismo nos permite manejar el agente a nuestro antojo y podemos crear un nuevo ticket, visualizar los logs, ver el estado del servicio y forzar el inventario de nuestra PC
Este fichero tenemos que ejecutarlo con permisos de administrador , cuando lo hacemos el Monitor del Agente se coloca en el área de notificaciones.
Terminado el despliegue del agente nuestro servidor de inventario empezará a recopilar las características de los componentes internos de nuestra PC, impresoras en red, tarjetas de red y etc.
Ahora veremos como desplegar el agente de Android en un SmartPhone LG Q Stylus Alpha.