9 Comprobaciones SSH

Descripción general

Las comprobaciones SSH se realizan como supervisión sin agentes. El agente Zabbix no es necesario para comprobaciones SSH.

Para realizar comprobaciones SSH, el servidor Zabbix debe estar inicialmente configurado con soporte para SSH2 (libssh o libssh2). Ver también: Requisitos.

A partir de RHEL 8, solo se admite libssh. Para otras distribuciones, se sugiere libssh en lugar de libssh2.

Configuración

Autenticación de frase de contraseña

Las comprobaciones SSH proporcionan dos métodos de autenticación: un par de usuario/contraseña y basado en archivos de claves.

Si no tiene intención de utilizar claves, no se requiere ninguna configuración adicional, más que vincular libssh o libssh2 a Zabbix, si está compilando desde la fuente.

Autenticación de archivo de clave

Para utilizar la autenticación basada en clave para métricas SSH, se requieren ciertos cambios en la configuración del servidor.

Abra el archivo de configuración del servidor Zabbix (zabbix_server.conf) como root y busque la siguiente línea:

# SSHKeyLocation=

Elimine los comentarios y configure la ruta completa a la carpeta donde se ubicarán las claves pública y privada:

SSHKeyLocation=/home/zabbix/.ssh

Guarde el archivo y reinicie el servidor Zabbix después.

La ruta /home/zabbix aquí es el directorio de inicio para la cuenta de usuario zabbix, y .ssh es un directorio donde, por defecto, las claves públicas y privadas serán generadas por un comando ssh-keygen dentro del directorio de inicio.

Por lo general, los paquetes de instalación del servidor Zabbix de diferentes distribuciones del sistema operativo crean la cuenta de usuario zabbix con un directorio de inicio en otro lugar, por ejemplo, /var/lib/zabbix (como para las cuentas del sistema).

Antes de generar las claves, puede reasignar el directorio de inicio a /home/zabbix, de modo que corresponda con el parámetro de configuración SSHKeyLocation del servidor Zabbix mencionado anteriormente.

Los siguientes pasos se pueden omitir si la cuenta zabbix se ha agregado manualmente según la sección de instalación. En tal caso, lo más probable es que el directorio de inicio de la cuenta zabbix ya sea /home/zabbix.

Para cambiar el directorio de inicio de la cuenta de usuario zabbix, se deben detener todos los procesos en funcionamiento que la estén usando:

systemctl stop zabbix-agent
       systemctl stop zabbix-server

Para cambiar la ubicación del directorio de inicio con un intento de moverlo (si existe), se debe ejecutar el siguiente comando:

usermod -m -d /home/zabbix zabbix

También es posible que no existiera un directorio de inicio en la ubicación anterior, por lo que se debe crear en la nueva ubicación. Un intento seguro de hacerlo es:

test -d /home/zabbix || mkdir /home/zabbix

Para asegurarse de que todo esté seguro, se pueden ejecutar comandos adicionales para establecer permisos para el directorio de inicio:

chown zabbix:zabbix /home/zabbix
       chmod 700 /home/zabbix

Los procesos detenidos anteriormente ahora se pueden reiniciar:

systemctl start zabbix-agent
       systemctl start zabbix-server

Ahora, los pasos para generar las claves pública y privada se pueden realizar con los siguientes comandos (para una mejor legibilidad, los mensajes de comando están comentados):

sudo -u zabbix ssh-keygen -t rsa
       # Generando par de claves rsa pública/privada.
       # Ingrese el archivo en el que guardar la clave (/home/zabbix/.ssh/id_rsa):
       /home/zabbix/.ssh/id_rsa
       # Ingrese la contraseña (vacía si no hay contraseña):
       <Dejar en blanco>
       # Ingrese la misma contraseña nuevamente: 
       <Dejar en blanco>
       # Su identificación ha sido guardada en /home/zabbix/.ssh/id_rsa.
       # Su clave pública ha sido guardada en /home/zabbix/.ssh/id_rsa.pub.
       # La huella digital de la clave es:
       # 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
       # La imagen randomart de la clave es:
       # +--[ RSA 2048]----+
       # | |
       # | . |
       # | o |
       # | . o |
       # |+ . S |
       # |.+ o = |
       # |E . * = |
       # |=o . ..* . |
       # |... oo.o+ |
       # +-----------------+

Las claves públicas y privadas (id_rsa.pub y id_rsa) se han generado de forma predeterminada en el directorio /home/zabbix/.ssh, que corresponde al parámetro de configuración SSHKeyLocation del servidor Zabbix.

La herramienta ssh-keygen y los servidores SSH pueden admitir tipos de clave distintos de "rsa", pero es posible que no sean compatibles con libssh2 que utiliza Zabbix.

Formulario de configuración de Shell

Este paso debe realizarse sólo una vez por cada equipo que se vaya a ser monitoreado por controles SSH.

Al utilizar los siguientes comandos, se puede instalar el archivo de clave pública en un equipo remoto 10.10.10.10, para que se puedan realizar las comprobaciones SSH con una cuenta root (para una mejor legibilidad, las indicaciones de comando están comentadas):

sudo -u zabbix ssh-copy-id [email protected]
       # No se puede establecer la autenticidad del host '10.10.10.10 (10.10.10.10)'.
       # La huella digital de la clave RSA es 38:ba:f2:a4:b5:d9:8f:52:00:09:f7:1f:75:cc:0b:46.
       # ¿Estás seguro de que deseas continuar conectándote (sí/no)?
       Sí
       # Advertencia: Se agregó permanentemente '10.10.10.10' (RSA) a la lista de hosts conocidos.
       # contraseña de [email protected]:
       <Ingrese la contraseña de root>
       # Ahora intenta iniciar sesión en la máquina, con "ssh '[email protected]'",
       # y verifique que solo se hayan agregado las claves que deseaba.

Ahora es posible verificar el inicio de sesión SSH usando la clave privada predeterminada (/home/zabbix/.ssh/id_rsa) para la cuenta de usuario zabbix:

sudo -u zabbix ssh [email protected]

Si el inicio de sesión es exitoso, entonces la parte de configuración en el shell se ha terminado y la sesión SSH remota se puede cerrar.

Configuración de métricas

Los comandos reales que se ejecutarán deben colocarse en el campo Script ejecutado en la configuración de métricas. Se pueden ejecutar varios comandos uno tras otro colocándolos en una nueva línea. En este caso, los valores devueltos también se formatearán como multilínea.

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.

Los campos que requieren información específica para los elementos SSH son:

Parámetro Descripción Comentarios
Tipo Seleccione agente SSH aquí.
Clave Clave de métrica única (por equipo) en el formato ssh.run[descripción corta única,<ip>,<puerto>,<codificación>,<opciones ssh>] Se requiere una descripción corta única y debe ser única para cada elemento SSH por host.

El puerto predeterminado es 22, no el puerto especificado en la interfaz a la que está asignado este elemento.

Las opciones ssh permiten pasar opciones SSH adicionales en el formato clave1=valor1;clave2=valor2,valor3. Se pueden pasar varios valores para una clave separados por coma (en este caso, el parámetro debe estar entre comillas); se pueden pasar varias claves de opción separadas por punto y coma.

Se admiten las siguientes claves de opción: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs. La compatibilidad de valores y claves de opciones depende de la biblioteca SSH; si una opción no es compatible, se devolverá un error y el elemento dejará de ser compatible.

Tenga en cuenta que no se admiten los signos "+" para agregar configuraciones de cifrado ni "!" para deshabilitar configuraciones de cifrado específicas (como en GnuTLS y OpenSSL).

Ejemplos:
=> ssh.run[KexAlgorithms,127.0.0.1,,,Ciphers=aes128-ctr]
=> ssh.run[KexAlgorithms,,,,"KexAlgorithms=diffie-hellman-group1-sha1;HostkeyAlgorithms=ssh-rsa,ssh-dss,ecdh-sha2-nistp256"]
Método de autenticación Uno de los siguientes: "Contraseña" o "Clave pública".
Nombre de usuario Nombre de usuario (hasta 255 caracteres) para autenticar en el equipo remoto. Obligatorio.
Archivo de clave pública Nombre de archivo de la clave pública si el Método de autenticación es "Clave pública". Obligatorio. Ejemplo: id_rsa.pub - nombre de archivo de clave pública predeterminado generado por un comando ssh-keygen.
Archivo de clave privada Nombre de archivo de la clave privada si el Método de autenticación es "Clave pública". Obligatorio. Ejemplo: id_rsa - nombre de archivo de clave privada predeterminado.
Contraseña o
Frase de contraseña de la clave
Contraseña (hasta 255 caracteres) para autenticar o
Frase de contraseña si se utilizó para la clave privada.
Deje el campo Frase de contraseña de la clave vacío si no se utilizó la frase de contraseña.
Consulte también problemas conocidos sobre el uso de la frase de contraseña.
Script ejecutado Comando(s) de shell ejecutado(s) mediante sesión remota SSH. El valor de retorno del(los) comando(s) de shell ejecutado(s) está limitado a 16 MB (incluido el espacio en blanco final que se trunca); Los límites de la base de datos también se aplican.

Tenga en cuenta que la biblioteca libssh2 puede truncar los scripts ejecutables a ~32kB.

Ejemplos:
date +%s
systemctl status mysql-server
ps auxww | grep httpd | wc -l