Esta página incluye contenido traducido automáticamente. Si detectas un error, selecciónalo y presiona Ctrl+Enter para informarlo a los editores.

9 Comprobaciones SSH

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 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 del elemento

El/los comando(s) real(es) que se ejecutarán deben colocarse en el campo Script ejecutado en la configuración del elemento. 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 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 elemento única (por host) en el formato ssh.run[descripción corta única,<ip>,<puerto>,<codificación>,<opciones ssh>,<subsystem>] descripción corta única es obligatoria y debe ser única para cada elemento SSH por host.

El puerto por defecto es 22, no el puerto especificado en la interfaz a la que se asigna este elemento.

opciones ssh permite 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.

Las siguientes claves de opción son compatibles: KexAlgorithms, HostkeyAlgorithms, Ciphers, MACs, PubkeyAcceptedKeyTypes. La compatibilidad de la clave y el valor de la opción depende de la biblioteca SSH (por ejemplo, PubkeyAcceptedKeyTypes solo es compatible con libssh); si una opción no es compatible, se devolverá un error y el elemento quedará como no soportado.

Tenga en cuenta que el signo "+" para agregar configuraciones de cifrado y "!" para deshabilitar configuraciones de cifrado específicas (como en GnuTLS y OpenSSL) no son compatibles.

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"]
=> ssh.run[PubkeyAcceptedKeyTypes,127.0.0.1,,,PubkeyAcceptedKeyTypes=ssh-rsa]

subsystem permite pasar un subsistema SSH, limitando la conexión SSH a operaciones específicas permitidas por el subsistema (por ejemplo, transferencias de archivos usando SFTP o gestión de dispositivos de red usando NETCONF). Tenga en cuenta que el uso de un subsistema también puede requerir el uso de una sintaxis de script específica en el parámetro Script ejecutado.

Ejemplos:
=> ssh.run[SFTPBackup,192.0.2.18,,,,sftp]
=> ssh.run[Cisco1234,192.0.2.18,,,,netconf]
Método de autenticación Uno de "Contraseña" o "Clave pública".
Nombre de usuario Nombre de usuario (hasta 255 caracteres) para autenticarse en el host remoto. Obligatorio.
Archivo de clave pública Nombre del archivo de 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 por defecto generado por el comando ssh-keygen.
Archivo de clave privada Nombre del archivo de clave privada si el Método de autenticación es "Clave pública". Obligatorio. Ejemplo: id_rsa - nombre de archivo de clave privada por defecto.
Contraseña o
Frase de clave
Contraseña (hasta 255 caracteres) para autenticarse o
Frase de clave si se utilizó para la clave privada.
Deje el campo Frase de clave vacío si no se utilizó frase de clave.
Consulte también problemas conocidos sobre el uso de frases de clave.
Script ejecutado Comando(s) de shell ejecutado(s) usando una sesión remota SSH. El valor de retorno de los comandos de shell ejecutados está limitado a 16MB (incluyendo 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

Ejemplo (para subsistema NETCONF):
<rpc>
<get-software-information/>
</rpc>
]]>]]>
<rpc>
<close-session/>
</rpc>
]]>]]>