Monitorización de servicios con ICINGA

Existe una comunidad y popularidad grandes alrededor de Nagios, pero tenemos la alternativa gratuita de ICINGA con la que realizaremos esta instalación sobre CentOS 8

Comprobamos actualizaciones del sistema operativo para ver si estamos al día:

sudo dnf update

Instalamos desde el repositorio, más de 330 MB:

dnf install https://packages.icinga.com/epel/icinga-rpm-release-6-latest.noarch.rpm

Instalamos dependencias del repositorio EPEL:

dnf install 'dnf-command(config-manager)'
dnf config-manager --set-enabled PowerTools
dnf install epel-release

Empezamos con el paquete principal, y añadimos en el arranque del sistema:

dnf install icinga2
systemctl enable icinga2 --now

Instalamos todos los plugins compartidos/compatibles de nagios, serán casi 25 MB y comprobamos el estado:

dnf install nagios-plugins-all
systemctl status icinga2

Empezamos con la instalación de SELInux requerido para el control de acceso, para una instalación más sencilla en esta demo activaremos el modo permisivo:

dnf install icinga2-selinux
sudo setenforce 0
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/g' /etc/selinux/config
sestatus

 

Para el modulo web necesitaremos instalar la Base de Datos (también es posible en PostgreSQL)

dnf install mariadb-server mariadb
systemctl enable mariadb --now

Iniciamos la instalación y definimos las claves del usuario root con el asistente, además de instalar el modulo IDO:

mysql_secure_installation
dnf install icinga2-ido-mysql

Creamos la base de datos en blanco con el usuario y contraseña que queramos:

mysql -u root -p
CREATE DATABASE icinga;
GRANT SELECT, INSERT, UPDATE, DELETE, DROP, CREATE VIEW, INDEX, EXECUTE ON icinga.* TO 'icinga'@'localhost' IDENTIFIED BY 'Pass4ever$$';
quit

Con la BBDD en blanco importamos el esquema:

mysql -u root -p icinga < /usr/share/icinga2-ido-mysql/schema/mysql.sql

Según los datos con los que creamos la BBDD indicamos la conexión el fichero

sudo vim /etc/icinga2/features-available/ido-mysql.conf

Habilitamos IDO y reiniciamos:

icinga2 feature enable ido-mysql
sudo systemctl restart icinga2

Ahora que ya tenemos la BBDD continuamos con el servidor web Apache, recomendando habilitar HTTPS en lugar de HTTP:

sudo dnf install httpd php-json php-ldap
firewall-cmd --zone=public --permanent --add-service=http
firewall-cmd --zone=public --permanent --add-service=https
firewall-cmd --reload

iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
sudo service iptables save

Si no tenemos instalado PHP-FPM para el servicio web, será necesario PHP >= 5.6.0
Ojo porque no todas las versiones de PHP son soportadas en estos momentos, optamos por la 7.2 ya que fuera de la RC no hay soporte para PHP 7.4 y los módulos cURL, gettext, intl, mbstring, OpenSSL y xml

Comprobamos las versiones disponibles en los repositorios:

sudo dnf module list | grep php

sudo dnf module install php:7.2
sudo dnf install php php-fpm
sudo dnf install php-intl php-gd php-mysqlnd

Ya debería estar instalador, pero comprobamos:

 

sudo dnf install php-curl php-gettext php-openssl php-mbstring php-xml php-zip php-gd php-dom php-ldap

sudo dnf install -y php php-devel php-pear make

No nos olvidemos de Image Magick como requisito:

sudo dnf install ImageMagick-devel
sudo dnf install ImageMagick

sudo pecl install imagick
echo "extension=imagick.so" > /etc/php.d/20-imagick.ini
systemctl restart httpd

Comprobamos que aparezca entre los modulos disponibles de PHP y activamos al inicio:

php -m
sudo systemctl enable php-fpm.service --now

Revisamos la versión de PHP activa, en nuestro caso 7.2.11 y configuramos el inicio automático y arrancamos el servidor web

php -v
systemctl enable httpd --now
sudo dnf install icingacli icingaweb2

Para habilitar REST API para el envío de comandos y comunicación:

icinga2 api setup
systemctl restart icinga2

Se generan usuario y claves aleatorios en:

vim /etc/icinga2/conf.d/api-users.conf

Llegados a este punto, comprobamos que no tengamos errores antes de continuar:

sudo tail /var/log/icinga2/icinga2.log

Continuamos con la configuración en el servicio web y reiniciamos:

sudo icingacli setup config webserver apache
sudo systemctl restart httpd

Necesitaremos un token de autenticación:

sudo icingacli setup token create

Ya podemos acceder via web al asistente de configuración:

http://IP_CENTOS8/icingaweb2/setup

Continuamos la instalación guiados por el asistente hasta finalizar el proceso según nuestras preferencias y requisitos:

Con este último paso ha finalizado por completo la instalación, podemos añadir nuestro primer host, descargamos el agente para el sistema operativo correspondiente (o cualquier dispositivo SNMP, router, switch...) la función básica de PING debemos permitirla a través del firewall del host:

Editamos y añadimos al final del fichero en el servidor:

vim /etc/icinga2/conf.d/hosts.conf

Por ejemplo:

object Host "MISERVIDOR" {
address = "10.0.0.200"
check_command = "hostalive"
}

Reiniciamos el servicio

systemctl restart icinga2.service

 

Otras opciones y consejos útiles durante el proceso:

Instalación opcional de la sintaxis y edición en Vim o en Nano para facilitar la edición de ficheros de configuración:

sudo dnf install vim-icinga2
sudo dnf install nano-icinga2

Si al intentar ejecutar el modulo setup nos indica que no existe, lo habilitamos:

icingacli module enable setup
sudo dnf install icingaweb2-module-setup

Si habíamos generado un token y no lo recordamos:

icingacli setup token show

Para monitorizar y enviar comandos necesitaremos abrir el puerto 5665 en nuestro servidor ICINGA:

firewall-cmd --zone=public --permanent --add-port 5665/tcp
iptables -A INPUT -p tcp -m tcp --dport 5665 -j ACCEPT
firewall-cmd --reload




Habilitar escritorio remoto XRDP en CentOS 8

Para tener acceso remoto XRDP en Linux CentOS 8 si no tenemos habilitado los repositorios extras para Linux Empresarial (EPEL) los instalamos e iniciamos la instalación:

sudo dnf install epel-release
sudo dnf install xrdp

Habilitamos en el inicio del sistema y comprobamos el estado:

sudo systemctl enable xrdp --now
sudo systemctl status xrdp

La configuración básica se almacena en /etc/xrdp/xrdp.ini pero por defecto no hará falta modificarla.

Permitimos en el firewall el acceso desde nuestra red local, por ejemplo:

 

sudo firewall-cmd --new-zone=xrdp --permanent
sudo firewall-cmd --zone=xrdp --add-port=3389/tcp --permanent
sudo firewall-cmd --zone=xrdp --add-source=10.0.0.0/24 --permanent
sudo firewall-cmd --reload

Ya podemos utilizar el cliente predeterminado de Windows para escritorio remoto y iniciar sesión:

Y el escritorio por defecto del usuario:

 

Almacenamiento en discos SSD desde 2010: SATA vs NVMe

Intel empezó a trabajar alrededor de las memorias flash desde 2007, no fue hasta 2011 cuando se publicó la versión 1.0 del protocolo y poco después su soporte en Linux. Como suele ser habitual, el destino inicial de los avances se dirigió al entorno empresarial y para 2013 Samsung ponía en venta el modelo XS1415.

Hasta 2015 Microsoft no lanzó una actualización para dar soporte nativo a este nuevo protocolo NVMe dentro de Windows 7 / 8, por su parte Apple lo incluyó este mismo año en OS X Yosemite y su iPhone 6S.

Han pasado 5 años y ahora si podemos afirmar que es una tecnología asequible (calidad/rendimiento/precio), la eliminación del cuello de botella que supone el acceso a disco se ha disminuido considerablemente.

Comparativa entre Samsung SSD 850/860 EVO SATA y 970 PRO NVMe

Estar a la última en tecnología supone un coste enorme, para seguramente quedar "obsoleto" en 6 meses; es necesario buscar el equilibrio entre presupuesto y prestaciones a la hora de realizar inversiones tanto personales como empresariales.

Auditoria de registros de servidores en entorno híbridos Microsoft

Si disponemos de equipos on-premise y en Azure, podemos unificar la gestión de registros en una única herramientas. Aunque ha variado de nombres, actualmente se engloba dentro de "Área de trabajo de Log Analytics" que podremos crear desde el panel de control de Azure.

Desde el nuevo recurso en "Configuración avanzada" podemos descargar el agente para Windows o Linux:

Junto con el ID del área de trabajo y la clave principal que necesitaremos para la instalación en nuestro servidor:

Finalizada la instalación en el panel de control encontraremos la nueva aplicación "Microsoft Monitoring Agent"


Desde la que podremos realizar cambios posteriores de ser necesario:

Una vez se empiezan a recolectar los registros, podemos realizar consultas a petición, alertas informes...

 

Algunas de las habituales:

  • Inicios de sesión erróneos consecutivos
  • Espacio en disco duro escaso
  • Utilización promedio de CPU alta
  • Servidor no accesible (heartbeat)

 

[Escribir consultas personalizadas en Azure Monitor]

 

Convertir certificado PFX a CRT

Si disponemos de un certificado en entornos Windows y queremos utilizar un certificado en otro tipo de dispositivos, por ejemplo un wilcard (*.midominio.com) podemos desglosar en dos partes utilizando OpenSSL:

openssl pkcs12 -in certificadoCompleto.pfx -nocerts -out llaveSegura.key

De este modo tenemos en un archivo la parte correspondiente a la clave privada de forma encriptada (BEGIN ENCRYPTED PRIVATE KEY). Por otro lado tenemos el certificado firmado:

openssl pkcs12 -in certificadoCompleto.pfx -clcerts -nokeys -out certificado.crt

Si necesitamos las claves sin encriptar (BEGIN RSA PRIVATE KEY), cuidado donde guardar este tipo de ficheros, podemos hacerlo mediante:

openssl rsa -in llaveSegura.key -out llaveNoSegura.key

Con estas 2+1 partes podremos instalar el certificado, por ejemplo en PLESK: