12 Restringir les verificacions de l'agent

Visió general

Podeu controlar quines claus d'elements l'agent Zabbix o l'agent 2 pot utilitzar o no en executar comprovacions d'elements, ordres remotes o scripts.

Per fer-ho, utilitzeu aquests paràmetres de configuració de l'agent per definir les regles de permís/denegació:

  • AllowKey=<patró>
  • DenyKey=<patró>

El <patró> ha de contindre una sola clau d'element i admet comodins (*). El comodí coincideix amb qualsevol nombre de caràcters a la seva posició i es pot emprar per fer coincidir claus o paràmetres d'element (per exemple, vfs.file.*[*]).

::: notaimportant Per millorar la seguretat, es recomana utilitzar claus d'element exactes en lloc de comodins. Per a més detalls, consulteu Assegurar les regles de permís/denegació. :::

A diferència d'altres paràmetres de configuració de l'agent, podeu especificar un nombre il·limitat de paràmetres AllowKey o DenyKey.

Notes importants

  • Tots els elements system.run són desactivats per defecte (fins i tot quan DenyKey està buit), com si DenyKey=system.run[*] s'establís com l'ordre última regla. Gràcies a això, podeu permetre elements específics system.run sense negar explícitament altres elements system.run.

  • També s'ha d'especificar un element especificat a AllowKey (excepte els elements system.run); en cas contrari, l'agent Zabbix no començarà.

  • Si és possible, utilitzeu AllowKey per permetre només els articles necessaris i negar tota la resta. Algunes claus es poden abusar de llegir fitxers no desitjats mitjançant el recorregut de camins (per exemple, vfs.file.contents[".. /. /. /../etc/passwd"]), i les noves versions de l'agent Zabbix poden introduir claus no cobertes per les vostres regles DenyKey.

  • AllowKey i DenyKey configuració no afecta HostnameItem, HostMetadataItem, o HostInterfaceItem paràmetres de l'agent.

  • Els elements denegats no s'admeten sense cap suggeriment ni missatge d'error; per exemple:

    • L'agent Zabbix ---print (-p) el paràmetre de línia d'ordres no mostrarà les claus d'element denegades.
    • L'agent Zabbix --prova (-t) el paràmetre de línia d'ordres retornarà "Clau d'element no admesa". per a les claus d'element denegades.
    • Quan s'activa el registre (LogRemoteCommands=1), el fitxer de registre de l'agent Zabbix no registrarà el registre denegat ordres remotes.

Ordre de regla de permís/denegació

Podeu especificar un nombre il·limitat de regles AllowKey o `DenyKey``, però en l'ordre correcte.

  • Les regles s'avaluen una a una, de dalt a baix.
  • Quan una clau d'element coincideix amb una regla, es permet o denega, i s'atura l'avaluació de regles.

Per exemple, en avaluar vfs.file.contents[/etc/passwd], les regles es processen tot seguit:

``per defecte AllowKey=vfs.file.contents[/tmp/app.log] # El patró de la clau de l'element no coincideix, l'agent procedeix a la següent regla. AllowKey=vfs.file.contents[/etc/passwd] # El patró de la clau de l'element coincideix; l'agent permet la comprovació de l'element i atura l'avaluació de regles. DenyKey=vfs.file. (anglès) [] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.


La següent comanda de regla denegarà la comprovació de l'element:

``per defecte
DenyKey=vfs.file. (anglès) *[*] # El patró de la clau de l'element coincideix; l'agent nega la comprovació de l'element i deixa d'avaluar les regles.
AllowKey=vfs.file.contents[/etc/passwd] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.
AllowKey=vfs.file.contents[/tmp/app.log] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.

Exemples

Els exemples següents mostren patrons de configuració comuns per a AllowKey i DenyKey.

Permetre comprovacions i comandes específiques

Permeteu només dues comprovacions d'elements vfs.file i dues ordres system.run:

AllowKey=vfs.file.contents[/tmp/app.log]
AllowKey=vfs.file.size[/tmp/app.log]
AllowKey=system.run[/usr/bin/uptime]
AllowKey=system.run[/usr/bin/df -h /]
DenyKey=vfs.file.*[*]

Establir DenyKey=system.run[*] no és necessari, perquè totes les altres ordres system.run es deneguen per defecte.

Permetre scripts

Permetre que l'agent Zabbix executi scripts a equips mitjançant tots els mètodes disponibles:

  • Scripts globals que es poden executar al frontend o mitjançant l'API (aquest mètode sempre utilitza la clau system.run[myscript.sh])
  • Comandes remotes des de action operations (aquest mètode sempre utilitza la clau system.run[myscript.sh,nowait])
  • system.run Elements de l'agent Zabbix amb l'script, per exemple:
  • system.run[myscript.sh]
  • system.run[myscript.sh,wait]
  • system.run[myscript.sh,nowait]
AllowKey=system.run[myscript.sh,*]

Per controlar el paràmetre wait/nowait, heu de definir una regla diferent. Per exemple, només podeu permetre els elements system.run[myscript.sh,wait], excloent així altres mètodes:

AllowKey=system.run[myscript.sh,wait]
Securitzar les regles de permís/denegació

Aquest exemple mostra com securitzar regles massa permissives AllowKey o DenyKey'.

Considerem les següents regles:

AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat*"]
DenyKey=vfs.file.*
DenyKey=system.cpu.load[*]

A Windows, heu d'escapar d'espais al camí mitjançant el circumflex (^). ::

Aquestes regles contenen un comodí (*), del que se'n pot fer un mal ús:

  • L'script test.bat es pot executar amb qualsevol argument, inclosos els no desitjats.
  • El patró vfs.file.* només coincideix amb les tecles d'element sense paràmetres; tanmateix, tots els elements vfs.file requereixen paràmetres.
  • El patró system.cpu.load[*] només coincideix amb les tecles d'element amb paràmetres; tanmateix system.cpu.load els elements no requereixen paràmetres.

Per securitzar aquestes regles, permet explícitament executar test.bat només amb arguments específics i denegar patrons de clau d'element correctes; per exemple:

AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat status"]
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat version"]
DenyKey=vfs.file.*[*]
DenyKey=system.cpu.load
DenyKey=system.cpu.load[*]

Podeu provar les regles executant les comandes següents, que tornaran `ZBX_NOTSUPPORTED.

cd "C:\Program Files\Zabbix Agent 2"
zabbix_agent2.exe -t system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat debug"]
zabbix_agent2.exe -t vfs.file.size["C:\ProgramData\MyApp\config.ini"]
zabbix_agent2.exe -t vfs.file.contents["C:\Windows\System32\drivers\etc\hosts"]
zabbix_agent2.exe -t system.cpu.load
zabbix_agent2.exe -t system.cpu.load[all,avg1]

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