#13 Controles de agentes restrictivos
Es posible restringir los controles por parte del agente creando una lista negra de métricas, lista blanca o una combinación de lista blanca/lista negra.
Para ello utilice una combinación de dos parámetros de configuración del agente:
AllowKey=<pattern>
- qué comprobaciones están permitidas; el <patrón> es especificado usando una expresión comodín (*)DenyKey=<pattern>
- qué comprobaciones se rechazan; el <patrón> es especificado usando una expresión comodín (*)Tenga en cuenta que:
system.run[*]
(comandos remotos, scripts) están deshabilitadas de forma predeterminada, incluso cuando no se especifican claves de denegación;Por lo tanto, para permitir comandos remotos, especifique AllowKey=system.run[<command>,*] para cada comando permitido, * representa el modo de espera y no espera. También es posible especificar el parámetro AllowKey=system.run[*] para permitir todos los comandos con modos de espera y no espera. Para no permitir comandos remotos específicos, agregue parámetros DenyKey con comandos system.run[] antes del parámetro AllowKey=system.run[*].
Por ejemplo:
Una lista negra puede no ser una buena opción, porque un la nueva versión de Zabbix puede tener nuevas claves que no están restringidas explícitamente por la configuración existente. Esto podría causar una seguridad falla.
# Deshabilitar comando específico
DenyKey=sistema.ejecutar[ls -l /]
# Permitir otros scripts
AllowKey=sistema.ejecutar[*]
DenyKey=*
Por ejemplo:
# Permitir la lectura de registros:
AllowKey=vfs.archivo.*[/var/log/*]
# Permitir comprobaciones de hora local
AllowKey=sistema.horalocal[*]
# Denegar todas las demás claves
Denegar clave=*
Patrón | Descripción | Coincidencias | Sin coincidencia |
---|---|---|---|
* | Hace coincidir todas las claves posibles con o sin parámetros. | Cualquiera | Ninguno |
vfs.file.contents | Coincide vfs.file.contents sin parámetros. |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | Hace coincidir vfs.file.contents con parámetros vacíos. |
vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | Hace coincidir vfs.file.contents con cualquier parámetro; no coincidirá con vfs.file.contents sin corchetes. |
vfs.file.contents[] vfs.file.contents[/path/to/file] |
vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | Hace coincidir vfs.file.contents con los primeros parámetros que coinciden con /etc/passwd y todos los demás parámetros que tienen cualquier valor (también vacío). |
vfs .file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf8] |
vfs.file.contents[/etc/passwd] vfs. archivo.contenido[/var/log/zabbix_server.log] vfs.archivo.contenido[] |
vfs.file.contents[*passwd*] | Hace coincidir vfs.file.contents con el primer parámetro que coincide con *passwd* y ningún otro parámetro. |
vfs.file.contents[/etc /contraseña] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | Coincide vfs.file.contents con solo el primer parámetro que coincide con *passwd* y todos los parámetros siguientes que tienen algún valor (también vacío) . |
vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[/etc/passwd]<br >vfs.file.contents[/tmp/test] |
vfs.file.contents[/var/log/zabbix_server.log,*,abc] | Hace coincidir vfs.file.contents con el primer parámetro que coincide con /var/log/zabbix_server.log , tercer parámetro que coincida con 'abc' y cualquier segundo parámetro (también vacío). |
vfs.file.contents[/var/log/zabbix_server.log,,abc] vfs.file.contents[/ var/log/zabbix_server.log,utf8,abc] |
vfs.file.contents[/var/log/zabbix_server.log,,abc,def] |
vfs.file.contents[/etc/passwd,utf8] | Hace coincidir vfs.file.contents con el primer parámetro que coincide con /etc/passwd, el segundo parámetro que coincide con 'utf8' y ningún otro argumento. |
vfs. file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | Coincide con cualquier clave que comience con vfs.file. sin ningún parámetro. |
vfs.file.contents vfs.file.size |
vfs.file.contents[]< br>vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | Hace coincidir cualquier clave que comience con vfs.file. con cualquier parámetro. |
vfs.file.size.bytes[] vfs.file. tamaño[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
vfs.*.contents | Coincide con cualquier clave que comience con vfs. y termine con .contents sin ningún parámetro. |
vfs.mount.point.file.contents vfs..contents |
vfs. contenidos |
Un script hipotético como 'myscript.sh' puede ejecutarse en un host a través de Agente Zabbix de varias maneras:
1. Como clave de elemento en una comprobación pasiva o activa, por ejemplo:
Aquí el usuario puede agregar "esperar", "no esperar" u omitir el segundo argumento para usar su valor predeterminado en system.run[].
2. Como script global (iniciado por el usuario en la interfaz o API).
Un usuario configura este script en Administración → Scripts, establece "Ejecutar en: agente de Zabbix" y pone "myscript.sh" en el script Campo de entrada "Comandos". Cuando se invoca desde la interfaz o la API, Zabbix servidor envía al agente:
Aquí el usuario no controla los parámetros "esperar"/"noesperar".
3. Como un comando remoto desde una acción. El servidor Zabbix envía a agente:
Aquí nuevamente el usuario no controla los parámetros "esperar"/"no esperar".
Lo que eso significa es si configuramos AllowKey como:
después
Para permitir todas las variantes descritas, puede agregar:
a los parámetros agent/agent2.