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.*[*]).
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.
Tots els elements de system.run són desactivats per defecte (fins i tot quan DenyKey està buit), com si DenyKey=system.run[*] s'hagués definit com a última regla. Per això, podeu permetre elements específics de system.run sense denegar explícitament altres elements de system.run.
Un element especificat a AllowKey també s'ha d'especificar a DenyKey (excepte els elements de system.run); en cas contrari, l'agent Zabbix no s'iniciarà.
Si és possible, utilitzeu AllowKey per permetre només els elements necessaris i denegar tota la resta. Algunes claus es poden fer un ús indegut per llegir fitxers no desitjats mitjançant el recorregut de ruta (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.
La configuració d'AllowKey i DenyKey no afecta els paràmetres de l'agent HostnameItem, HostMetadataItem o HostInterfaceItem.
Els elements denegats esdevenen no compatibles sense cap suggeriment ni missatge d'error; per exemple:
El paràmetre de línia d'ordres de l'agent Zabbix --print (-p) no mostrarà les claus d'element denegades.
El paràmetre de línia d'ordres de l'agent Zabbix --test (-t) retornarà "Clau d'element no compatible." per a les claus d'element denegades. - El fitxer de registre de l'agent Zabbix no registrarà les [ordres remotes] denegades (/manual/config/notifications/action/operation/remote_command) si LogRemoteCommands=1.
Podeu especificar un nombre il·limitat de regles AllowKey o DenyKey, tot i que el seu ordre és important.
Per exemple, en avaluar vfs.file.contents[/etc/passwd], les regles es processen de la manera següent:
AllowKey=vfs.file.contents[/tmp/app.log] # El patró de la clau d'element no coincideix, l'agent procedeix a la regla següent.
AllowKey=vfs.file.contents[/etc/passwd] # El patró de la clau d'element coincideix; l'agent permet la comprovació de l'element i atura l'avaluació de la regla.
DenyKey=vfs.file.*[*] # L'agent ignora la regla, ja que l'avaluació s'ha aturat.L'ordre de regles següent denegarà la comprovació d'elements:
DenyKey=vfs.file.*[*] # El patró de clau d'element coincideix; l'agent denega la comprovació d'elements i atura l'avaluació de la regla.
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.Els exemples següents mostren patrons de configuració comuns per a AllowKey i DenyKey.
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 que l'agent Zabbix executi scripts a equips mitjançant tots els mètodes disponibles:
system.run[myscript.sh])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]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:
Aquest exemple mostra com assegurar les regles AllowKey o DenyKey massa permissives.
Tingueu en compte les regles següents:
AllowKey=system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat*"]
DenyKey=vfs.file.*
DenyKey=system.cpu.load[*]A Windows, heu d'escapar els espais a la ruta utilitzant un circumflex (^).
Aquestes regles contenen un comodí (*), que es pot fer servir malament:
test.bat es pot executar amb qualsevol argument, inclosos els no desitjats.vfs.file.* només coincideix amb les claus d'element sense paràmetres; tanmateix, tots els elements vfs.file requereixen paràmetres.system.cpu.load[*] només coincideix amb les claus d'element amb paràmetres; tanmateix, els elements system.cpu.load no requereixen paràmetres.Per assegurar aquestes regles, permeteu explícitament l'execució de test.bat només amb arguments específics i denegueu els 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 ordres següents, que retornaran ZBX_NOTSUPPORTED.
cd "C:\Arxius de programa\Zabbix Agent 2"
zabbix_agent2.exe -t system.run["C:\Arxius de programa\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]La taula següent mostra com es coincideixen els patrons de clau d'element:
vfs.file.contents[* i vfs.file.contents*utf8] són patrons no vàlids).| Patró | Coincidències | Exemples |
|---|---|---|
* |
Qualsevol clau amb o sense paràmetres | |
vfs.file.* |
La clau comença amb vfs.file.Sense paràmetres |
Coincidències:vfs.file.sizevfs.file.contentsNo coincideix: vfs.file.contents[]vfs.file.size[/var/log/app.log] |
vfs.*.contents |
La clau comença amb vfs.La clau acaba amb .contentsSense paràmetres |
Coincideix amb: vfs..contentsvfs.mount.point.file.contentsNo coincideix amb: vfs.contentsvfs.file.contents[] |
vfs.file.*[*] |
La clau comença amb vfs.file.Qualsevol paràmetre o paràmetres buits |
Coincideixvfs.file.get.custom[]vfs.file.size[/var/log/app.log, utf8]No coincideix amb: vfs.file.get.custom |
vfs.file.contents[] |
La clau és vfs.file.contents[]Paràmetres buits |
Coincideix:vfs.file.contents[]No coincideix amb: vfs.file.contents |
vfs.file.contents[*] |
La clau és vfs.file.contentsQualsevol paràmetre o paràmetres buits |
Coincideix:vfs.file.contents[/path/to/file]No coincideix amb: vfs.file.contents |
vfs.file.contents[/etc/passwd,*] |
La clau és vfs.file.contentsEl primer paràmetre és /etc/passwdQualsevol paràmetre o un segon paràmetre buit |
Coincideix amb:vfs.file.contents[/etc/passwd,]vfs.file.contents[/etc/passwd,utf8]No coincideix amb: vfs.file.contents[]vfs.file.contents[/etc/passwd] |