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.runsón desactivats per defecte (fins i tot quanDenyKeyestà buit), com siDenyKey=system.run[*]s'establís com l'ordre última regla. Gràcies a això, podeu permetre elements específicssystem.runsense negar explícitament altres elementssystem.run. -
També s'ha d'especificar un element especificat a
AllowKey(excepte els elementssystem.run); en cas contrari, l'agent Zabbix no començarà. -
Si és possible, utilitzeu
AllowKeyper 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 reglesDenyKey. -
AllowKeyiDenyKeyconfiguració no afectaHostnameItem,HostMetadataItem, oHostInterfaceItemparà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.
- L'agent Zabbix
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.runElements 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.bates 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 elementsvfs.filerequereixen paràmetres. - El patró
system.cpu.load[*]només coincideix amb les tecles d'element amb paràmetres; tanmateixsystem.cpu.loadels 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 |