Es posible restringir las comprobaciones por parte del agente creando una lista negra, lista blanca o una combinación de lista blanca/lista negra de métricas.
Para ello utilice una combinación de dos parámetros de configuración del agente:
AllowKey=<patrón>
- qué comprobaciones están permitidas; <patrón> es especificado usando una expresión comodín (*)DenyKey=<patrón>
- qué comprobaciones se rechazan; <patrón> es especificado usando una expresión comodín (*)Tenga en cuenta que:
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' se puede ejecutar en un equipo a través del Agente Zabbix de varias maneras:
1. Como clave de métrica en una comprobación pasiva o activa, por ejemplo:
Aquí el usuario puede agregar "esperar", "noesperar" u omitir el segundo argumento para usar su valor predeterminado en system.run[].
2. Como script global (iniciado por el usuario en el frontend o API).
Un usuario configura este script en Alertas → Scripts, establece "Ejecutar en: agente Zabbix" y coloca "myscript.sh" en el Campo de entrada "Comandos" del script. Cuando se invoca desde el frontend o API, el servidor Zabbix envía al agente:
Aquí el usuario no controla los parámetros "esperar"/"noesperar".
3. Como comando remoto de una acción. El servidor Zabbix envía al agente:
Aquí nuevamente el usuario no controla los parámetros "esperar"/"noesperar".
Lo que eso significa es que si configuramos AllowKey como:
entonces
Para permitir todas las variantes descritas, puede agregar:
a los parámetros del agente/agente2.