Instalación de Nagios

En la entrada anterior comentaba lo beneficioso que es tener una herramienta de monitorización en nuestro día a día. En las siguientes líneas indicaré cómo instalar Nagios en un servidor CentOS 8.

Laboratorio

Especificaciones del servidor:

SO                 CentOS Linux
Versión SO         8.2.2004
Arquitectura       x64
Número de núcleos  4
Memoria RAM        1 GB.
Tamaño de Disco    32 GB.
Tipo               Virtualizado

Preparación del Servidor

Lo primero que hacemos es verificar que nuestro servidor tiene las últimas actualizaciones instaladas. Para ello ejecutamos la siguiente instrucción en el terminal.

# yum update

Para el laboratorio, deshabilitamos SELinux para instalar y configurar nagios.

# nano /etc/selinux/config
SELINUX=disabled
SELINUXTYPE=targeted 

Añadimos las reglas al firewall para los puertos 80 y 443 para acceso vía web.

# firewall-cmd --permanent --add-port=80/tcp
# firewall-cmd --permanent --add-port=443/tcp

Luego aplicamos los cambios en el firewall.

# firewall-cmd --reload

Verificamos los puertos que hemos abierto.

# firewall-cmd --list-all
public (active)
...
ports: 80/tcp 443/tcp
...

Reiniciamos el servidor para que los cambios sobre SELinux surtan efecto.

# systemctl reboot

Instalamos los paquetes de dependencias.

# yum install -y gettext wget net-snmp-utils openssl-devel glibc-common unzip perl epel-release gcc php gd automake autoconf httpd make glibc gd-devel net-snmp
# yum --enablerepo=powertools,epel install perl-Net-SNMP
# yum install perl-Net-SNMP

Agregamos el usuario nagios y lo hacemos miembro del grupo apache.

# useradd nagios
# usermod -a -G nagios apache

Compilación e instalación de Nagios

Descargamos la última versión de Nagios.

# wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.4.6/nagios-4.4.6.tar.gz

Descomprimimos el paquete que hemos descargado.

# tar -xzvf nagios-4.4.6.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nagios-4.4.6

Ejecutamos el script configure para verificar que el SO contiene los paquetenes necesarios para la compilación de Nagios.

# ./configure

Ejecutamos los comandos make para compilar Nagios, instalar los scripts de inicio y la configuración por defecto.

# make all
# make install
# make install-init
# make install-commandmode
# make install-config
# make install-webconf

Habilitamos el servicio de Apache y Nagios para que inicie con el sistema mediante la instrucción enable.

# systemctl enable httpd
# systemctl enable nagios

Protegemos la página de Nagios con usuario y contraseña. Con la opción -c le indicamos que cree un fichero de contraseñas para Nagios.

# htpasswd -c /usr/local/nagios/etc/htpasswd.users admin

Nota:

Si lo que queremos es añádir un nuevo usuario al fichero existente, obviamos el parámetro -c.

# htpasswd /usr/local/nagios/etc/htpasswd.users nuevousuario
New password: ************
Re-type new password: ************

Iniciamos los servicios correspondientes a Apache y Nagios.

# systemctl start httpd
# systemctl start nagios

Y si hemos seguido estos sencillos pasos, podríamos acceder a la interfaz web de la siguiente manera:

Abrimos un navegador web y ponemos la siguiente URL:

http://IP_SERVIDOR_NAGIOS/nagios

Cambiando IP_SERVIDOR_NAGIOS por la IP del servidor que hayamos usado para instalar Nagios.

Utilizamos las credenciales que pusimos para proteger el sitio de Nagios. El usuario admin en mi caso con su respectiva contraseña.

Pantalla de inicio de Nagios

Compilación e instalación de los plugins de Nagios

Una vez instalado Nagios, procedemos con la instalación de los plugins que son necesarios para realizar los cheackeos en los dispositivos a monitorizar.

Descargamos la última versión de los plugins de Nagios.

# wget https://github.com/nagios-plugins/nagios-plugins/releases/download/release-2.3.3/nagios-plugins-2.3.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nagios-plugins-2.3.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nagios-plugins-2.3.3

Ejecutamos el script configure para verificar que el SO contiene los paquetenes necesarios para la compilación de los plugins.

# ./configure

Ejecutamos los comandos make para compilar e instalar los plugins de Nagios.

# make install

Reiniciamos el servicio de Nagios.

# systemctl restart nagios

Listamos los plugins instalados en la siguiente ruta:

# ls /usr/local/nagios/libexec/
...
check_apt       check_dummy         check_imap      check_nntps
...

Instalación del módulo NRPE

NRPE (Nagios Remote Plugin Executor) permite ejecutar complementos de Nagios en otras máquinas de forma remota.

Descargamos la última versión del módulo NRPE.

# wget https://github.com/NagiosEnterprises/nrpe/releases/download/nrpe-4.0.3/nrpe-4.0.3.tar.gz

Descomprimimos el paquete descargado.

# tar -xzvf nrpe-4.0.3.tar.gz

Navegamos al directorio donde se ha desempaquetado.

# cd nrpe-4.0.3

Ejecutamos el script configure.

# ./configure
*** Configuration summary for nrpe 4.0.3 2020-04-28 ***:

 General Options:
 -------------------------
 NRPE port:    5666
 NRPE user:    nagios
 NRPE group:   nagios
 Nagios user:  nagios
 Nagios group: nagios

Nota: 5666 Es el puerto que se debe abrir en el FW de cada servidor/ordenador que se quiera monitorizar para que Nagios pueda establecer comunicación.

Compilamos el ejecutable a invocar cada vez que se hace una consulta a un servidor.

# make check_nrpe

Copiamos el NRPE que acabamos de compilar donde tenemos todos los ejecutables /usr/local/nagios/libexec.

# make install-plugin

Creamos un comando para que Nagios pueda usar el comando NRPE editando el fichero de configuración commands.cfg

# nano /usr/local/nagios/etc/objects/commands.cfg

Y añadiendo al final del mismo, la siguiente información.

...
define command {
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

Donde:

$USER1 es el equivalente al PATH /usr/local/nagios/libexec

Se puede ver el contenido de esta variable en el fichero de configuración resource.cfg con el siguiente comando:

# cat /usr/local/nagios/etc/resource.cfg
...
# Sets $USER1$ to be the path to the plugins
$USER1$=/usr/local/nagios/libexec
...

Comprobamos la sintaxis de nuestros archivos de configuración de Nagios.

# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

Si no tenemos errores, reiniciamos el servicio de Nagios.

# systemctl restart nagios

Nota:

Como vamos a necesitar mucho los comandos para revisar la sintaxis y reiniciar el servicio de Nagios y sobre todo el primero es largo, podemos crear un alias de comando.

Creación de Alias de comandos.

Agregamos dos alias al final del archivo .bashrc ubicado en el home del usuario con el que se trabaja, en nuestro caso root:

# nano /root/.bashrc

Añadimos las siguientes líneas a dicho fichero.

...
alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
alias nagiosreload='systemctl restart nagios'

Recargamos la configuración con los comandos que hemos añadido.

# source /root/.bashrc

Y ya hemos dejado todo preparado para en el siguiente artículo monitorizar nuestro primer servidor Linux.

Saludos =)

Desastre

La maldición de los Access

Antonio lleva 12 años trabajando como gestor de compras en una empresa de fabricación de abono orgánico. Aún recuerda lo duro que se le hizo su primer año en la empresa, había muchos procesos manuales y la repetición de tareas día tras día le obligó a poner en práctica aquello que había aprendido en el curso de ofimática avanzada que había tomado antes de aventurarse en el mundo laboral.

Creó una base de datos en Microsoft Access en la que almacenaba la información de los proveedores y de los pedidos que les hacía. Generó consultas mediante un diseñador muy intuitivo para explotar los datos que introducía. Con el tiempo, descubrió los formularios que le daban un lavado de cara a la manera que tenía de introducir los datos. Detrás de los formularios descubrió que había un lenguaje de programación llamado Visual Basic for Applications. VBA para los amigos, o enemigos }:) Y cuando comprendió, al fin, el funcionamiento de los reports y subreports para sacar impresa su información, vio que aquello era bueno.

La empresa creció y de los 4 empleados que la formaban en un principio, ahora eran 20. Las multitareas que antes llevaban entre 4 ahora se habían convertido en tareas de departamentos gestionados por equipos. Para todos estos equipos Antonio había creado un archivo Access donde almacenaban la información que gestionaban. Ahora había un Access para Compras, otro para Comercial y Ventas, otro para Contabilidad y Administración, para RRHH y para controlar la producción del abono.

Antonio se había convertido en imprescindible en la empresa porque sólo él sabía el funcionamiento de la misma. Cuando necesitaban agregar una tabla, una consulta, un formulario o un informe acudían a él.

Un día se vio desbordado por todo el trabajo que le daba mantener todos aquellos ficheros Access. La empresa tuvo el buen criterio de contratar los servicios de una consultoría que les ayudara a migrar toda su información a un software de gestión empresarial que, junto con la ayuda de todo el conocimiento adquirido por Antonio durante tantos años, terminó siendo todo un éxito.

¿A cuántos mientras leían este texto les ha venido a la mente algún Antonio? Es la realidad de muchas pequeñas, medianas y no tan medianas empresas hoy en día. El problema no es la herramienta, sino el mal uso que se le da.

Cuando se lo usa para almacenar información de ciertos datos concretos, como recurso local y personal, no está mal. El problema viene cuando ese fichero se comparte con un grupo de personas y pretendemos que funcione igual de bien que funcionaba cuando sólo lo manejábamos nosotros.

Este texto no es con afán de denigrar la herramienta, sólo de saber qué uso darle y cuándo. Con un destornillador también podríamos clavar un clavo, o con un martillo podríamos incrustar un tornillo. Al final, el objetivo se ha cumplido, pero no hemos usado la herramienta adecuada. Así, en muchas ocasiones, se usa un fichero Access para programar un envío de correo o procesar y generar un fichero. Al final obtendremos el resultado deseado pero lo que hagamos con ese fichero Access no será escalable.

El mismo ejemplo podríamos aplicarle a su hermano Excell, que, debido a su mal uso, provocó en octubre de 2020 confundir a la población de Reino Unido con datos erróneos sobre contagios con COVID-19.

https://www.elconfidencial.com/tecnologia/2020-10-28/excel-coronavirus-covid-datos-caos-programa_2808600/

Lo que hay que hacer es ponerse en el lugar de Antonio y saber en qué pensaba cuando creó aquel ser que, sin quererlo ni desearlo, ha adquirido vida propia; entenderlo y tratar de reemplazarlo lo más pronto posible por una aplicación configurable y escalable en el tiempo para hacerle la vida más llevadera al usuario final y al programador o informático que viene detrás de nosotros.

La siguiente vez que vayas a crear un Access que se alimenta solo y crece cogiendo vida propia, recuerda a Antonio y que en algún momento el trabajo te desbordará y el único trabajo que realizarás en tu día a día será corregir ese Access.

Saludos =)

Construcción de un SOC con herramientas Open Source

En octubre del año pasado presentaba mi trabajo fin de máster, que consistía en poner en marcha un SOC con herramientas Open Source.

Algo que puede ser de interés para las Pymes, que a falta de técnicos capacitados en áreas de ciberseguridad y, bajo la presión de los ciberataques que están a la orden del día debido a la alta demanda de teletrabajo por la pandemia, se ven obligados a proteger a toda costa sus activos tecnológicos.

Una de las herramientas que incluía en mi TFM era Nagios. Se trata de un software que sirve para monitorizar servicios de ordenadores o servidores de una red, ya sean estos Windows, Linux, o incluso hardware de comunicaciones como routers y switches o servidores de impresión.

Los servicios más habituales que requieren esta supervisión son, por ejemplo, SMTP y POP3 en servidores de correo electrónico, HTTP sobre los servidores web, protocolos NTP, ICMP, etc. De esta forma, sabremos si un servidor web está funcionando correctamente o bien ha dejado de responder. Igualmente también se utiliza para monitorizar recursos de los servidores: carga de procesador, espacio en disco duro, memoria, etc. Nagios nos notificará, de la manera que prefiramos, sobre el estado de alerta de alguno de los servicios que estemos vigilando, lo que nos permitirá identificar rápidamente un posible problema.

Creo que a cualquier departamento informático le puede venir bien conocer en todo momento el estado de los servicios que administra. Por muy pequeña que sea la infraestructura, tener visibilidad de lo que sucede con nuestros servicios es una gran ventaja que nos ayuda a ser proactivos.

En capítulos posteriores iré mostrando cómo instalar esta herramienta en un servidor CentOS e ir configurando los distintos servicios tanto en servidores Microsoft Windows como GNU Linux.

Saludos =)