11 SSH agent

Descripción general

Las comprobaciones SSH se realizan como monitorización sin agente. No se necesita el agente Zabbix para las comprobaciones SSH.

Para realizar comprobaciones SSH, el servidor Zabbix debe estar inicialmente configurado con soporte SSH2 (libssh o libssh2). Consulte 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 con archivo de clave

Para usar autenticación basada en claves para los items SSH, se requieren ciertos cambios en la configuración del server.

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

# SSHKeyLocation=

Descoméntela y establezca la ruta completa a la carpeta donde se ubicarán las claves pública y privada:

SSHKeyLocation=/home/zabbix/.ssh

Guarde el archivo y después reinicie el server de Zabbix.

La ruta /home/zabbix aquí es el directorio personal de la cuenta de usuario zabbix, y .ssh es un directorio donde, de forma predeterminada, se generarán las claves pública y privada mediante el comando ssh-keygen dentro del directorio personal.

Normalmente, los paquetes de instalación del server de Zabbix de distintas distribuciones de SO crean la cuenta de usuario zabbix con un directorio personal en otra ubicación, por ejemplo, /var/lib/zabbix (como ocurre con las cuentas del sistema).

Antes de generar las claves, puede reasignar el directorio personal a /home/zabbix, para que coincida con el parámetro de configuración del server de Zabbix SSHKeyLocation mencionado anteriormente.

Los siguientes pasos pueden omitirse si la cuenta zabbix se ha añadido manualmente según la sección de instalación. En ese caso, lo más probable es que el directorio personal de la cuenta zabbix ya sea /home/zabbix.

Para cambiar el directorio personal de la cuenta de usuario zabbix, todos los procesos en ejecución que lo estén utilizando deben detenerse:

systemctl stop zabbix-agent
systemctl stop zabbix-server

Para cambiar la ubicación del directorio personal intentando moverlo (si existe), debe ejecutarse el siguiente comando:

usermod -m -d /home/zabbix zabbix

También es posible que no existiera un directorio personal en la ubicación anterior, por lo que deberá crearse en la nueva ubicación. Una forma segura de intentarlo es:

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

Para asegurarse de que todo sea seguro, pueden ejecutarse comandos adicionales para establecer permisos en el directorio personal:

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

Los procesos detenidos anteriormente ahora pueden iniciarse de nuevo:

systemctl start zabbix-agent
systemctl start zabbix-server

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

sudo -u zabbix ssh-keygen -t rsa
# Generating public/private rsa key pair.
# Enter file in which to save the key (/home/zabbix/.ssh/id_rsa):
/home/zabbix/.ssh/id_rsa
# Enter passphrase (empty for no passphrase):
<Déjelo vacío>
# Enter same passphrase again: 
<Déjelo vacío>
# Your identification has been saved in /home/zabbix/.ssh/id_rsa.
# Your public key has been saved in /home/zabbix/.ssh/id_rsa.pub.
# The key fingerprint is:
# 90:af:e4:c7:e3:f0:2e:5a:8d:ab:48:a2:0c:92:30:b9 zabbix@it0
# The key's randomart image is:
# +--[ RSA 2048]----+
# |                 |
# |       .         |
# |      o          |
# | .     o         |
# |+     . S        |
# |.+   o =         |
# |E .   * =        |
# |=o . ..* .       |
# |... oo.o+        |
# +-----------------+

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

Los tipos de clave distintos de "rsa" pueden ser compatibles con la herramienta ssh-keygen y con los servers SSH, pero puede que no sean compatibles con libssh2 utilizada por 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)?# 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 del item

Los comandos reales que se ejecutarán deben colocarse en el campo Executed script de la configuración del item. Se pueden ejecutar varios comandos uno tras otro colocándolos en una línea nueva. En este caso, los valores devueltos también se formatearán en varias líneas.

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

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

Parameter Description Comments
Type Seleccione SSH agent aquí.
Key Clave de item única (por host) con el formato ssh.run[descripción corta única,<ip>,<port>,<encoding>,<ssh options>] descripción corta única es obligatoria y debe ser única para cada item SSH por host.

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

ssh options permite pasar opciones SSH adicionales con el formato key1=value1;key2=value2,value3. Se pueden pasar varios valores para una clave separados por comas (en este caso, el parámetro debe ir 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 la clave y el valor de la opción depende de la biblioteca SSH; si una opción no es compatible, se devolverá un error y el item pasará a no ser compatible.

Tenga en cuenta que no se admiten el signo "+" para añadir 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"]
Authentication method Una de "Password" o "Public key".
User name Nombre de usuario (hasta 255 caracteres) para autenticarse en el host remoto. Obligatorio.
Public key file Nombre del archivo de clave pública si Authentication method es "Public key". Obligatorio. Ejemplo: id_rsa.pub - nombre predeterminado del archivo de clave pública generado por el comando ssh-keygen.
Private key file Nombre del archivo de clave privada si Authentication method es "Public key". Obligatorio. Ejemplo: id_rsa - nombre predeterminado del archivo de clave privada.
Password or
Key passphrase
Contraseña (hasta 255 caracteres) para autenticarse o
Frase de contraseña si se utilizó para la clave privada.
Deje vacío el campo Key passphrase si no se utilizó una frase de contraseña.
Consulte también los problemas conocidos relacionados con el uso de frases de contraseña.
Executed script Comando(s) de shell ejecutado(s) mediante una sesión remota SSH. El valor devuelto de los comandos de shell ejecutados está limitado a 16MB (incluidos los espacios en blanco finales que se truncan); también se aplican los límites de la base de datos.

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