This is a machine translation based on the English version of the article. It might or might not have already been subject to text preparation. If you find errors, please file a GitHub issue that states the paragraph that has to be improved. |
1. Introducción

Desde la versión 2.1.0 de Checkmk, el nuevo agente de Linux con el controlador de agentes admite el modo pull registrado, cifrado con TLS y comprimido.
Para ello, sin embargo, el controlador de agentes debe iniciarse como un proceso en segundo plano (demonio) mediante el sistema init en el host en el que se vaya a instalar.
Actualmente, solo se admite systemd en la plataforma x86_64, y para la configuración se requiere la gestión de paquetes para deb o rpm.
Si se cumplen todos los requisitos siguientes…
Tu Linux utiliza
systemda partir de la versión 219 como sistema de inicioLa arquitectura del procesador es
x86_64Los paquetes se gestionan como
deborpm
…puedes aprender a instalar, configurar y ampliar el agente con el Agent Controller en el artículo «Monitorización de Linux».
Aunque la mayoría de los servidores y equipos de escritorio Linux cumplen estos requisitos, los sistemas que llevan años actualizando versiones, las máquinas virtuales más antiguas con instancias i686, los contenedores sin distribución o los sistemas Linux integrados no son elementos marginales, sino componentes normales de muchos entornos de sistemas que necesitan supervisión. Gracias a la estructura modular de Checkmk, puedes incluir estos hosts Linux en la supervisión.
La última frase se refiere específicamente a los hosts Linux. Aunque la instalación de agentes para otros sistemas Unix en modo heredado sigue los mismos principios básicos que para los hosts Linux, puede haber diferencias en muchos detalles. Por ejemplo, el script del agente para AIX no admite el cifrado simétrico, y las rutas estándar se adaptan a las convenciones de los respectivos sistemas de destino. |
Dado que el transporte cifrado de los datos del agente a través del Agent Controller queda descartado en este caso, en este artículo explicamos cómo realizar el transporte sin cifrar a través de un super-servidor de Internet o la configuración de SSH como túnel cifrado.
El modo push también depende del Agent Controller y, por lo tanto, no está disponible en el modo legacy. Si quieres incluir en la monitorización en modo legacy un host al que el servidor de Checkmk no puede acceder, tendrás que buscar otra solución. Puedes utilizar programas de fuentes de datos para conectarte desde el host monitorizado y usar esto para transmitir la salida del agente al servidor de Checkmk.
Los casos en los que el modo de agente no importa se pueden encontrar en el artículo sobre el agente de Linux con el controlador de agentes:
2. Instalación
Dependiendo del gestor de paquetes, hay tres opciones de instalación entre las que elegir: Paquetes DEB o RPM para Debian, Ubuntu, Red Hat Enterprise Linux (RHEL), SLES (y sus derivados), un archivo TGZ para todas las demás distribuciones (ediciones comerciales) o, del mismo modo, un script de shell (Checkmk Community) para cualquier otra distribución.
2.1. Instalación desde paquetes
En el artículo «Monitoring Linux» hay una descripción detallada de la instalación a partir de paquetes de deb o rpm, así que aquí solo explicaremos el procedimiento de forma breve.
En
Checkmk Community, puedes encontrar los paquetes Linux del agente a través de Setup > Agents > Linux.
En las ediciones comerciales, primero debes acceder a Agent Bakery en el menú Setup a través de Agents > Windows, Linux, Solaris, AIX, donde encontrarás los paquetes ya preparados.
Desde allí, la opción de menú Related > Linux, Solaris, AIX files te llevará a la lista de archivos del agente.
Puedes descargar estos archivos a través del navegador o usar wget o curl para descargarlos directamente en el host de la supervisión:
En RHEL, SLES y distribuciones relacionadas, el paquete RPM se instala como root con el comando rpm -U:
Por cierto, la opción -U significa «actualizar», pero también puede realizar una instalación inicial correctamente.
La instalación del paquete DEB en Debian, Ubuntu o distribuciones relacionadas se realiza como root con el comando dpkg -i:
2.2. Instalación desde el archivo TGZ
Para una instalación cómoda e independiente de la distribución, necesitarás el agente de Linux en formato de archivo TGZ («Tarball»), que puedes descargar desde las ediciones comerciales en el menú Configuración a través de Agents > Windows, Linux, Solaris, AIX.
El archivo TGZ contiene la estructura de directorios completa del agente de Linux para descomprimir en el directorio raíz del host supervisado.

El parámetro «-C» («cambiar de directorio») es esencial al descomprimir para garantizar que todas las rutas de los archivos sean correctas.
También usamos --no-overwrite-dir para que no se modifiquen los permisos de los directorios ya existentes:
Si has hecho todo correctamente, el script del agente debería ejecutarse ahora como un comando y generar su salida habitual.
El comando «| head» trunca todo lo que sigue a la undécima línea de salida:
Si aquí aparece un número de versión inferior a 2.2.0, es probable que todavía tengas instalada una versión anterior del script del agente como /usr/local/bin/check_mk_agent.
Mueve este script antiguo o cámbiale el nombre, por ejemplo, añadiendo .bak al nombre del archivo.
2.3. Instalación manual del script del agente
Rara vez es necesaria una instalación manual del script del agente, pero tampoco es muy difícil.
En este tipo de instalación, al principio solo se instala el script del agente, pero aún no se realiza ninguna configuración del acceso.
Para ello, necesitas el cuadro Agents de la página de archivos del agente.
Allí encontrarás el archivo check_mk_agent.linux:

Carga este archivo en el sistema de destino y cópialo en un directorio ejecutable para root.
/usr/local/bin/es una buena opción, ya que está en la ruta de búsqueda y está pensado para extensiones personalizadas.
Como alternativa, puedes usar /usr/bin o un subdirectorio de /opt.
Nosotros usamos /usr/bin para que todas las pruebas coincidan con los otros métodos de instalación.
También puedes realizar la instalación directamente con wget si está disponible:
No te olvides de los dos últimos comandos: estos eliminarán la extensión .linux y harán que el archivo sea ejecutable.
Ahora el agente debería ser ejecutable como un comando y generar su salida habitual.
El comando | head trunca todo lo que sigue a la décima línea de salida:
Si quieres configurar o ampliar el agente, tendrás que crear tú mismo los directorios necesarios.
La ubicación de los tres directorios obligatorios está codificada en el agente en variables que empiezan por MK_ y también se proporcionan a los complementos a través del entorno del sistema:
Debes crear estos tres directorios (con los permisos predeterminados de 755 y root como propietario):
Si quieres usar rutas diferentes, solo tienes que editar /usr/bin/check_mk_agent.
3. Comprobación del estado tras la instalación
Después de la instalación, comprueba si ya hay un servicio configurado para escuchar en el puerto TCP 6556.
En concreto, cuando se instala a través del gestor de paquetes, se utiliza un xinetd o un systemd (en modo super-servidor) ya existente para proporcionar la salida sin cifrar del agente en el puerto TCP 6556.
Usamos el comando ss.
Si este comando no está disponible (en distribuciones más antiguas), puedes usar como alternativa alguno de los programas netstat, sockstat o lsof.
Si no hay salida, el puerto 6556 aún no está abierto. Si se ha impreso una línea, entonces el puerto 6556 está abierto.
En este caso nos interesa el nombre del programa entre paréntesis, aquí xinetd.
Recuerda este nombre de programa, porque lo necesitarás en el proceso posterior, independientemente del método de acceso seleccionado.
Si tras la instalación desde un paquete DEB o RPM aparece aquí el nombre del programa cmk-agent-ctl, puedes estar tranquilo:
Tu Linux (especialmente la versión de systemd utilizada) está lo suficientemente actualizado como para usar el Agent Controller, tal y como se describe en el artículo Supervisión de Linux, y puedes proceder a registrar el agente.
4. Seleccionar el método de acceso
En este punto tienes que tomar una decisión:
¿Quieres permitir una conexión sin cifrar y fácil de configurar?
¿O te merece la pena el esfuerzo adicional que supone la mayor seguridad que ofrece el cifrado?
Los aspectos relevantes para esto son a qué información tiene acceso un posible atacante y cuánto esfuerzo tendría que realizar. Por ejemplo, la tabla de procesos que siempre se transmite ya puede proporcionar pistas valiosas, y una lista de actualizaciones de software que aún no se han realizado hace posibles los ataques dirigidos.
Por lo tanto, por regla general, recomendamos la transferencia de datos cifrada a través de un túnel SSH.
Al llamar al script del agente directamente en un shell, pueden estar disponibles otras variables de entorno que cuando se llama a través de (x)inetd, a través del Agent Controller o en una sesión SSH sin terminal de control. En caso de problemas con uno u otro método de ejecución, puede ser necesario garantizar la presencia de ciertas variables de entorno. El método utilizado para ello depende demasiado de cada caso concreto como para que podamos hacer recomendaciones en este momento. |
5. Sin cifrar: Configuración de (x)inetd
Si decides que usar una transferencia de datos sin cifrar es un riesgo aceptable, el siguiente paso es configurar un super-servidor de Internet.
Si la prueba con ss mostró que xinetd, inetd o systemd ya están a la escucha en el puerto TCP 6556, pasa a la prueba de conexión.
Si no es así, usa el comando ps para comprobar si ya hay un inetd activo:
Puedes identificar, a partir del proceso en ejecución, si se trata del «xinetd» más moderno o de uno de los otros super-servidores de Internet (GNU-Inetutils, OpenBSD-Inetd, Busybox-Inetd).
Si no hay ningún proceso activo, instala un «xinetd» a través del gestor de paquetes de tu distribución.
Si hay un «inetd» «clásico» activo, suele tener sentido configurarlo y utilizarlo en lugar de cambiar a xinetd.
5.1. Configuración de xinetd
Para configurar un
xinetd existente que utilice el directorio /etc/xinetd.d/ para la configuración, tanto el archivo TGZ como los paquetes DEB y RPM incluyen un script que automatiza los dos pasos necesarios: primero instala la configuración y luego hace que xinetd vuelva a leer los ajustes modificados.
Tienes que ejecutar el script con las rutas completas de los archivos:
Si instalas el script del agente manualmente, crea el archivo de configuración /etc/xinetd.d/check-mk-agent con el editor.
El contenido es suficiente:
service check_mk
{
type = UNLISTED
port = 6556
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/local/bin/check_mk_agent
# only_from = 10.118.14.5 10.118.14.37
disable = no
}Aquí hemos añadido una línea (comentada) que restringe el acceso a dos servidores Checkmk.
Puedes ver más opciones de configuración consultando el archivo ~/share/check_mk/agents/scripts/super-server/1_xinetd/check-mk-agent en tu servidor Checkmk.
Si tu xinetd utiliza el esquema de configuración antiguo con un único archivo grande /etc/xinetd.conf, transfiere la configuración de ejemplo de /etc/check_mk/xinetd-service-template.cfg a /etc/xinetd.conf.
Cuando hayas terminado de configurar xinetd, reinícialo:
Ya estás listo para la prueba de conexión.
5.2. Configuración de otro inetd
Primero, comprueba si tu archivo «/etc/services» ya contiene una entrada para el puerto 6556:
Si no es así, Checkmk debe registrarse como servicio. Para ello, añade la siguiente línea. La notación aquí es exactamente la misma que la almacenada en la tabla de la IANA, con un solo guión:
checkmk-agent 6556/tcp #Checkmk monitoring agentEl formato del archivo de configuración de /etc/inetd.conf varía según las distintas variantes.
Consulta los comentarios del archivo de configuración y la página del manual (man 5 inetd.conf) para encontrar el formato que se ajuste a tu inetd.
A continuación, se incluye la configuración correspondiente a openbsd-inetd con dos líneas para la compatibilidad con IPv4 e IPv6.
Una vez más, es importante tener en cuenta la notación correcta:
checkmk-agent stream tcp nowait root /usr/bin/check_mk_agent
checkmk-agent stream tcp6 nowait root /usr/bin/check_mk_agentDespués de editar el archivo de configuración, reinicia inetd, por ejemplo, con:
Dependiendo del sistema de inicio que uses y del super-servidor instalado, este comando puede variar.
5.3. Prueba de conexión
Primero comprueba si se ha podido (re)iniciar xinetd o inetd:
Ahora puedes conectarte a telnet o nc (netcat) en el puerto TCP 6556 — primero desde el propio host, después desde el servidor Checkmk:
Si recibes una notificación de conexión denegada aunque (x)inetd esté activo, comprueba la configuración de tu cortafuegos.
6. Cifrado: uso de un túnel SSH
La configuración del túnel SSH se realiza siguiendo estos pasos:
Crea un par de claves SSH específicamente para este fin.
En los sistemas de destino, permite el acceso al agente utilizando esta clave.
Configura el servidor Checkmk para que utilice SSH en lugar de la conexión TCP en el puerto 6556.
Si es posible: desactiva el acceso a través de
(x)inetd.
Y ahora todo el procedimiento, paso a paso con todos los detalles necesarios:
6.1. Creación de un par de claves SSH
SSH funciona con «autenticación de clave pública».
Para ello, primero debes generar un par de claves a juego, una pública y otra privada.
Al seleccionar el algoritmo, puedes elegir entre rsa, ecdsa o ed25519.
En el ejemplo siguiente, utiliza el comando ssh-keygen -t ed25519 como usuario del sitio:
Deja el nombre del archivo en blanco para usar el nombre sugerido. Por supuesto, puedes especificar una ruta diferente, por ejemplo, si quieres trabajar con claves distintas para hosts individuales.
Importante: ¡No especifiques una frase de contraseña! Cifrar el archivo con la clave secreta no serviría de nada; al fin y al cabo, seguro que no quieres tener que introducir la frase de contraseña cada vez que inicies el servidor Checkmk…
El resultado son dos archivos en el directorio .ssh:
La clave privada se llama id_ed25519 y solo puede leerla el usuario del sitio (-rw-------)— ¡y eso es bueno!
La clave pública id_ed25519.pub tiene un aspecto similar a este:
6.2. Permitir el acceso a través de SSH
El siguiente paso debe realizarse ahora en (cada uno de) los hosts Linux supervisados a través de SSH.
Inicia sesión allí como root y crea el subdirectorio .ssh en su directorio de inicio (/root), si aún no existe.
Con el siguiente comando, los privilegios de acceso se establecerán correctamente en 700 de inmediato:
Ahora abre el archivo authorized_keys con un editor de texto (basado en consola) de tu elección.
Si este archivo aún no existe, el editor lo creará automáticamente:
Copia el contenido de las claves públicas en este archivo. Puedes hacerlo, por ejemplo, con el ratón y copiar y pegar. ¡Sé preciso! Cada espacio cuenta. Asegúrate también de que nunca haya dos espacios en una línea. Y: ¡Todo debe estar en una sola línea! Si el archivo ya existe, simplemente añade una nueva línea debajo.
6.3. Restringir el acceso a la ejecución del agente
¡Lo que viene ahora es muy importante!
La clave SSH debe usarse exclusivamente para ejecutar el agente.
SSH ofrece algo parecido bajo el nombre de restricción de comandos.
Para ello, escribe el texto command="/usr/bin/check_mk_agent" al principio de la línea que acabas de crear, separado del resto por un solo espacio.
Quedará algo así:
command="/usr/bin/check_mk_agent" ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGb6AaqRPlbEmDnBkeIW3Q6Emb5lr2QEbWEQLmA5pb48 mysite@mycmkserverGuarda el archivo y comprueba los permisos. Solo el propietario puede tener permisos de escritura en este archivo.
A continuación, comprueba el acceso al agente con el comando `ssh`:
La primera vez tendrás que confirmar la huella digital de la clave introduciendo yes.
A partir de ahí, todos los accesos posteriores se pueden realizar sin intervención del usuario, incluida la consulta automática del script del agente por parte del servidor Checkmk cada minuto.
Si no funciona, comprueba lo siguiente:
¿Está instalado el servidor SSH en el sistema de destino?
¿Tienen los archivos y directorios especificados los permisos correctos?
¿Has escrito correctamente la sintaxis de
authorized_keys?¿Has introducido allí la clave pública correcta?
¿Has iniciado sesión como el usuario correcto (
root@…)?¿Te acordaste de la
command="…"?
En sistemas de destino muy antiguos, también es posible que las claves con las curvas elípticas (ed25519 y ecdsa) sean desconocidas.
En este caso, genera una clave RSA adicional e introdúcela también en authorized_keys.
SSH utilizará entonces automáticamente la clave más segura conocida para la conexión.
6.4. Cambiar el acceso de Checkmk a SSH
El sistema de destino ya está preparado.
Ahora solo falta la configuración de Checkmk.
Esto se hace a través del conjunto de reglas Setup > Agents > Other integrations> Custom integrations > Individual program call instead of agent access.
Crea aquí una regla para los hosts afectados e introduce ssh -T root@$HOSTNAME$ o ssh -C -T root@$HOSTNAME$ (para una compresión adicional de los datos del agente) como comando:

Puedes ejecutar la prueba de conexión en la interfaz gráfica de usuario, en «Setup > Hosts > Properties of host > Test connection to host», con el botón «Run tests».
Si la prueba falla por tiempo de espera agotado o acceso denegado, comprueba si has utilizado el nombre de host con la misma ortografía que al realizar la prueba en la línea de comandos: OpenSSH distingue entre el nombre de host corto, el FQDN y la dirección IP.
Como alternativa, puedes acceder al host utilizando su dirección IP.
En este caso, tienes que usar la macro $HOSTADDRESS$, que se sustituye por la dirección IP del host almacenada en caché (por Checkmk).
Después de guardar y ejecutar «Activar cambios», el host se añade a la monitorización.
En la monitorización, el servicio Check-MK Agent se muestra ahora con la nota «Transporte vía SSH».
Para un diagnóstico más detallado, se pueden utilizar los comandos cmk -D y cmk -d, que se explican en el artículo sobre la línea de comandos.
6.5. Varias claves SSH
También puedes trabajar con más de una clave SSH.
Coloca las claves en cualquier directorio.
En la regla Individual program call instead of agent access debes especificar la ruta a la clave privada correspondiente con la opción -i.
Lo mejor es usar $OMD_ROOT aquí como sustituto de la ruta al directorio del sitio (/omd/sites/mysite).
El comando completo podría ser entonces ssh -i $OMD_ROOT/.ssh/my_key -T root@$HOSTADDRESS$, y así la configuración también sería ejecutable en un sitio con un nombre diferente:

Esto te permite utilizar diferentes claves SSH para diferentes grupos de hosts mediante el uso de varias reglas diferentes.
6.6. Desactivar el acceso al puerto 6556
Para evitar proporcionar a posibles atacantes datos en texto plano a pesar de los túneles SSH, debes desactivar cualquier acceso al puerto 6556 que pueda seguir estando disponible en la supervisión del host.
Si el comando ss -tulpn | grep 6556 anterior no ha encontrado ningún proceso a la escucha en el puerto TCP 6556, ya has terminado de configurar el túnel SSH.
Si se muestra una línea, el proceso que se ha encontrado debe desactivarse de forma permanente.
xinetd
Para cerrar el puerto proporcionado por xinetd, desactiva el servicio xinetd de Checkmk estableciendo el valor de disabled en yes.
No borres todo el archivo de configuración; de lo contrario, volvería a aparecer en algunas configuraciones durante las actualizaciones del agente.
La desactivación se realiza en el archivo /etc/xinetd.d/check-mk-agent (en sistemas con instalaciones antiguas del agente, el archivo puede llamarse /etc/xinetd.d/check_mk):
service check_mk
{
type = UNLISTED
port = 6556
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/check_mk_agent
disable = yes
}A continuación, reinicia xinetd:
o
Ahora comprueba que ya no es posible acceder a través del puerto 6556.
inetd
Si es un servicio deinetds el que controla el acceso al puerto 6556, modifica el archivo de configuración /etc/inetd.conf.
Busca allí la línea correspondiente:
Comenta esta línea con un símbolo de almohadilla # y, a continuación, reinicia el proceso.
A continuación, utiliza telnet o nc para comprobar si el acceso sigue siendo posible.
systemd
Si la búsqueda ha mostrado que systemd tiene abierto el puerto TCP 6556, ahora tienes que determinar el nombre exacto de la configuración que proporciona el socket:
Ahora puedes detener primero el servicio y luego desactivarlo:
Ahora no debería ser posible acceder al puerto 6556.
6.7. Verificación del éxito
En cualquier caso, no te olvides de hacer una prueba final. Ahora ya no debería ser posible conectarse al puerto 6556:
7. Otras opciones de seguridad
Describimos las opciones de seguridad que te presentamos aquí principalmente por motivos de compatibilidad con instalaciones ya existentes. En muchos casos, la transmisión de la salida del agente a través de SSH cumplirá con los requisitos de restricción de acceso y seguridad contra escuchas. No obstante, en casos concretos puede tener sentido utilizar además los mecanismos de protección que se presentan a continuación, o recurrir a ellos cuando no sea posible establecer un túnel SSH.
El script del agente de Checkmk puede cifrar sus propios datos sin necesidad de herramientas adicionales. Este cifrado simétrico integrado no sustituye al control de acceso. Sin embargo, dado que un atacante no puede enviar ningún comando ni hacer nada con esos datos de salida cifrados, el objetivo de la seguridad contra el espionaje suele cumplirse suficientemente.
Por supuesto, el cifrado requiere una configuración adecuada tanto en el agente como en el servidor. Esto se puede crear manualmente en Checkmk Community o con Agent Bakery en las ediciones comerciales.
Nota: Dado que el cifrado simétrico utiliza la misma clave tanto para el cifrado como para el descifrado, un paquete de actualización creado con Agent Bakery que incluya la clave de cifrado podría, por ejemplo, ser interceptado por un atacante, quien podría entonces descifrar el contenido de las comunicaciones.
7.1. Implementación del cifrado integrado
Activación del cifrado
El primer paso es ir al menú «Setup» y crear una regla en el conjunto de reglas «Setup > Agents > Access to agents > Checkmk agent > Symmetric encryption (Linux, Windows)». Esta regla debe aplicarse a todos los hosts en los que quieras utilizar el cifrado. Los hosts SNMP ignoran esta configuración, por lo que no es necesario excluirlos explícitamente.

Con la opción «Configure shared secret and apply symmetric encryption», especificas que el agente envíe los datos de forma cifrada.
El cifrado funciona con una contraseña compartida (secreto compartido) que especificas aquí y que debe almacenarse en texto plano tanto en el servidor de Checkmk como en el agente.
Si lo deseas, selecciona el icono «
» para que Checkmk genere una contraseña aleatoria por ti, y ten esta contraseña a mano para el segundo paso: la configuración del agente.
Configuración del agente
En el host del agente, crea el archivo /etc/check_mk/encryption.cfg con el siguiente contenido:
ENCRYPTED=yes
PASSPHRASE='MyPassword'Por supuesto, aquí debes especificar tu propia contraseña en PASSPHRASE, y es imprescindible que protejas el archivo .cfg para que otros usuarios no puedan leerlo:
Configuración del servidor Checkmk
En el tercer y último paso, utiliza la regla Enforce agent data encryption para especificar cómo debe gestionar el servidor Checkmk los datos sin cifrar.
Tienes las siguientes opciones:
Accept all incoming data, including unencrypted: Se aceptarán datos de agentes con y sin cifrado.
Accept all types of encryption: Solo se aceptarán datos cifrados, ya sea mediante TLS o mediante cifrado simétrico, tal y como se activó en el primer paso.
Accept TLS encrypted connections only: Solo se aceptarán datos cifrados mediante TLS.

Lo mejor es empezar con Accept all incoming data, including unencrypted. Cuando creas que todos los agentes ya están cifrados, configura Accept all types of encryption para encontrar cualquier host que aún pueda estar enviando datos en texto plano. Los hosts que envíen datos sin cifrar serán detectados y marcados en «rojo».
Pruebas
Ahora puedes realizar las siguientes pruebas (consulta también el artículo sobre Checkmk en la línea de comandos):
La llamada a
check_mk_agenten el sistema de destino debe generar una cadena de caracteres desordenada.El acceso a través de
telnet myhost123 6556desde el servidor de Checkmk debe mostrar la misma cadena de caracteres desordenados.El comando
cmk -d myhost123en el servidor Checkmk debe mostrar los datos de texto sin formato.
7.2. Configuración del cifrado integrado con Agent Bakery
La configuración del cifrado con Agent Bakery se realiza de la siguiente manera:
Con el primer paso, la creación de la regla «Symmetric encryption (Linux, Windows)», ya casi has terminado.
Ahora solo tienes que compilar y distribuir los nuevos agentes.
El archivo «
/etc/check_mk/encryption.cfg» se crea automáticamente y se incluirá en los paquetes de los agentes.
Solo queda el tercer paso, es decir, la creación de la regla «Enforce agent data encryption».
7.3. xinetd: restricciones de IP
Aunque un atacante no pueda ejecutar ningún comando, los datos de monitorización del agente podrían seguir siendole útiles, ya que contienen, entre otras cosas, una lista de todos los procesos que se ejecutan en el sistema. Por lo tanto, es mejor que nadie pueda acceder fácilmente a los datos.
Si compartes el agente de Checkmk a través de xinetd, es muy fácil y eficaz restringir el acceso a direcciones IP específicas —y a las del servidor de monitorización, por supuesto.
Esto se puede conseguir rápidamente mediante la directiva only_from en tu archivo de configuración xinetd.
Introduce direcciones IP o rangos de direcciones (en el formato 12.34.56.78/29 o 1234::/46) separados por espacios.
También se permiten nombres de host.
En este caso, el sistema comprueba si el nombre de host determinado por la resolución inversa de la dirección IP del host solicitante coincide con el introducido:
service check_mk
{
type = UNLISTED
port = 6556
socket_type = stream
protocol = tcp
wait = no
user = root
server = /usr/bin/check_mk_agent
only_from = 10.118.14.5 10.118.14.37
disable = no
}
En las ediciones comerciales, los usuarios de Agent Bakery pueden configurar las direcciones IP permitidas a través del conjunto de reglas «Allowed agent access via IP address (Linux, Windows)».
Este conjunto de reglas se encuentra en Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Generic Options.
Por supuesto, un atacante puede falsificar muy fácilmente su dirección IP y, así, conectarse al agente. Pero entonces es muy probable que no reciba la respuesta, ya que esta se enviará al servidor de monitorización legítimo. O bien el atacante sí recibe una respuesta, pero el servidor de Checkmk no recibe ningún dato y rápidamente informará de un error.
8. Mensajes de error habituales al usar SSH
Si quieres recuperar el agente de Checkmk a través de SSH, puede ocurrir que la recuperación falle y que el servicio «Check_MK» de tu host pase al estado «CRIT».
Estos mensajes de error suelen empezar por «Agent exited with code 255».
Encontrarás información sobre cómo solucionar estos errores en la Base de conocimientos de Checkmk.
