12 Restringir les verificacions de l'agent

Vista general

Les comprovacions de l'agent es poden restringir creant una llista negra, una llista blanca o una combinació de llista blanca/llista negra d'elements.

Per fer-ho, empreu una combinació de dos paràmetres configuració de l'agent:

  • AllowKey=<patró> - quines comprovacions són permeses; <patró> s'especifica mitjançant una expressió comodí (*)
  • DenyKey=<patró> - quines comprovacions es deneguen; <patró> s'especifica mitjançant una expressió comodí (*)

Tingues en compte que:

  • Tots els elements system.run[*] (ordres remotes, scripts) són desactivats per defecte, fins i tot quan no s'especifica cap clau de denegació, s'assumeix que DenyKey=system.run[*] s'ha afegit implícitament;
  • Des de Zabbix 5.0.2, el paràmetre de l'agent d'EnableRemoteCommands és:
  • obsolet per l'agent de Zabbix
  • no compatible amb l'agent 2 de Zabbix

Per tant, per permetre ordres remotes, especifiqueu una clau AllowKey=system.run[<command>,*] per a cada ordre permesa, * representa el mode wait i nowait. També és possible especificar el paràmetre AllowKey=system.run[*] per permetre totes les ordres amb els modes wait i nowait. Per no permetre ordres remotes específiques, afegiu paràmetres DenyKey amb ordres system.run[] abans del paràmetre AllowKey=system.run[*].

Regles importants

  • La llista blanca sense una regla de denegació només es permet per als elements system.run[*]. Per a la resta d'elements, els paràmetres AllowKey no es permeten sense un paràmetre DenyKey; en aquest cas, l'agent Zabbix no començarà només amb paràmetres AllowKey.
  • L'ordre compta. Els paràmetres especificats es comproven un a un segons el seu ordre d'aparició al fitxer de configuració:
    • Tan aviat com una clau d'element coincideix amb una regla d'autorització/denegació, l'element es permet o es denega; i la comprovació de regles s'atura. Per tant, si un element coincideix amb una regla d'autorització i una regla de denegació, el resultat dependrà de quina regla sigui primera.
    • L'ordre també afecta la configuració EnableRemoteCommands (si s'empra).
  • S'admeten paràmetres AllowKey/DenyKey il·limitats.
  • Les regles AllowKey i DenyKey no afecten els paràmetres de configuració de HostnameItem, HostMetadataItem i HostInterfaceItem.
  • El patró de clau és una expressió de comodí on el caràcter comodí (*) coincideix amb qualsevol nombre de caràcters en una posició determinada. Es pot emprar tant en el nom de la clau com en els paràmetres.
  • Si no es permet una clau d'element específica a la configuració de l'agent, l'element es marcarà com a no compatible (no s'indica per què);
  • L'agent Zabbix amb l'opció de línia d'ordres --print (-p) no mostrarà les claus que la configuració no permet;
  • L'agent Zabbix amb l'opció de línia d'ordres --test (-t) retornarà l'estat "La clau d'element no és compatible". per a claus no autoritzades per la configuració;
  • Les ordres remotes denegades no es registraran al registre de l'agent (si LogRemoteCommands=1).

Casos d'ús

Denegar validacions específiques
  • Posar a la llista negra una comprovació específica amb el paràmetre DenyKey. Les claus coincidents no es permetran. Es permetran totes les claus que no coincideixen, excepte els elements system.run[].
Denegar una verificació específica
  • Posar a la llista negra una comprovació específica amb el paràmetre DenyKey. Les claus coincidents seran rebutjades. Es permetran totes les claus que no coincideixin excepte system.run[].

Per exemple:

 # Denegueu l'accés segur a les dades
        DenyKey=vfs.file.contents[/etc/passwd,*]

Pot ser que una llista negra no sigui una bona opció, perquè una versió nova de Zabbix pot tindre claus noves que no siguin restringides explícitament per la configuració existent. Això podria provocar una violació de seguretat.

Denegar una ordre específica, permetent-ne d'altres
  • Afegir a la llista negra una ordre específica amb el paràmetre DenyKey. Posar a la llista blanca totes les altres ordres, amb el paràmetre AllowKey.
 # Prohibir una ordre específica
        DenyKey=system.run[ls -l /]
        
        # Permetre altres scripts
        AllowKey=system.run[*]
Permetre una verificació concreta, i refusar totes les altres
  • Afegir a la llista blanca de comprovacions específiques amb paràmetres AllowKey, denegar altres amb DenyKey=*

Per exemple:

 # Permetre llegir registres:
        AllowKey=vfs.file.*[/var/log/*]
       
        # Permetre comprovacions de l'hora local
        AllowKey=system.localtime[*]
       
         # Denegar totes les altres claus
         DenyKey=*

Exemples de patrons

Patró Descripció Coincidències Sense coincidències
* Coincideix amb totes les claus possibles amb o sense paràmetres. Totes Cap
vfs.file.contents Coincideix amb vfs.file.contents sense paràmetres. vfs.file.contents vfs.file.contents[/etc/passwd]
vfs.file.contents[] Coincideix vfs.file.contents amb paràmetres buits. vfs.file.contents[] vfs.file.contents
vfs.file.contents[*] Fa coincidir vfs.file.contents amb qualsevol paràmetre; no coincidirà amb vfs.file.contents sense claudàtors. vfs.file.contents[]
vfs.file.contents[/path/to/file]
vfs.file.contents
vfs.file.contents[/etc/passwd,*] Fa coincidir vfs.file.contents amb els primers paràmetres que coincideixen amb /etc/passwd i tots els altres paràmetres amb un valor (també buit). vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf8]
vfs.file.contents[/etc/passwd]
vfs.file.contents[/var/log/zabbix_server.log]
vfs.file.contents[]
vfs.file.contents[*passwd*] Coincideix vfs.file.contents amb el primer paràmetre que coincideix amb *passwd* i sense cap altre paràmetre. vfs.file.contents[/etc/passwd] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[*passwd*,*] Coincideix amb vfs.file.contents amb només el primer paràmetre que coincideix amb *passwd* i sense importar el valor dels següents paràmetres (també buits). vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd, utf8]
vfs.file.contents[/etc/passwd]
vfs.file.contents[/tmp/test]
vfs.file.contents[/var/log/zabbix_server.log,*,abc] Coincideix vfs.file.contents amb el primer paràmetre que coincideix amb /var/log/zabbix_server.log, el tercer paràmetre corresponent a 'abc' i qualsevol segon paràmetre (també buit). 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] Coincideix vfs.file.contents amb el primer paràmetre que coincideix amb /etc/passwd, el segon paràmetre que coincideix amb 'utf8' i cap altre argument. vfs.file.contents[/etc/passwd,utf8] vfs.file.contents[/etc/passwd,]
vfs.file.contents[/etc/passwd,utf16]
vfs.file.* Coincideix amb totes les claus que comencen per vfs.file. sense cap paràmetre. vfs.file.contents
vfs.file.size
vfs.file.contents[]
vfs.file.size[/var/log/zabbix_server.log]
vfs.file.*[*] Fa coincidir totes les claus que comencen per vfs.file. amb tots els paràmetres. vfs.file.size.bytes[]
vfs.file. mida[/var/log/zabbix_server.log, utf8]
vfs.file.size.bytes
vfs.*.contents Coincideix amb qualsevol clau que comenci per vfs. i acabi amb .contents sense cap paràmetre. vfs.mount.point.file.contents
vfs..contents
vfs.contents

system.run i AllowKey

Un script hipotètic com 'myscript.sh' es pot executar en un equip mitjançant l'agent Zabbix de diverses maneres:

1. Com a clau d'element en un xec passiu o actiu, per exemple:

  • system.run[myscript.sh]
  • system.run[myscript.sh,wait]
  • system.run[myscript.sh,nowait]

Aquí l'usuari pot afegir "wait", "nowait" o ometre el segon argument per emprar el seu valor predeterminat a system.run[].

2. Com a script global (iniciat per l'usuari a la interfície o l'API).

Un usuari configura aquest script a AdministracióScripts, estableix "Executar a: agent Zabbix" i col·loca "myscript.sh" al camp d'entrada "Comandes" de l'script. Quan s'invoca des de la interfície o l'API, el servidor Zabbix envia a l'agent:

  • system.run[myscript.sh,wait] - fins a Zabbix 5.0.4
  • system.run[myscript.sh] - des de 5.0.5

Aquí, l'usuari no controla els paràmetres "wait"/"nowait".

3. Com un comandament remot d'una acció. El servidor Zabbix envia a l'agent:

  • system.run[myscript.sh,nowait]

De nou, l'usuari no controla els paràmetres "espera"/"nowait".

Això vol dir que si definim AllowKey com:

 AllowKey=system.run[myscript.sh]

llavors

  • system.run[myscript.sh] - es permetrà
  • No es permetrà system.run[myscript.sh,wait], system.run[myscript.sh,nowait] - l'script no s'executarà si es crida com a passa d'acció

Per permetre totes les variants descrites, podeu afegir:

 AllowKey=system.run[myscript.sh,*]
        DenyKey=system.run[*]

als paràmetres agent/agent2.