Могуће је ограничити провере на страни агента креирањем ставке црне листе, беле листе или комбинације беле листе/црне листе.
Да бисте то урадили, користите комбинацију два параметра агента configuration:
AllowKey=<pattern>
- које провере су дозвољене; <pattern> је наведено помоћу израза са џокерима (*)DenyKey=<pattern>
- које провере су одбијене; <pattern> је наведено помоћу израза са џокерима (*)Имајте на уму да:
Стога, да бисте дозволили удаљене команде, наведите AllowKey=system.run[<command>,*] за сваку дозвољену команду, * означава режим чекања и без чекања. Такође је могуће навести параметар AllowKey=system.run[*] да бисте дозволили све команде са режимима чекања и без чекања. Да бисте онемогућили одређене удаљене команде, додајте параметре DenyKey са командама system.run[] пре параметра AllowKey=system.run[*].
на пример:
Црна листа можда није добар избор, јер а нова Zabbix верзија може имати нове кључеве који нису експлицитно ограничени по постојећој конфигурацији. Ово може изазвати сигурност мана.
# Забрани одређену команду
DenyKey=system.run[ls -l /]
# Дозволи друге скрипте
AllowKey=system.run[*]
DenyKey=*
на пример:
# Дозволи читање дневника:
AllowKey==vfs.file.*[/var/log/*]
# Дозволи провере по локалном времену
AllowKey=system.localtime[*]
# Одбијте све друге кључеве
DenyKey=*
^
приликом навођења путање.На пример:
# Дозволи покретање test.bat са или без аргумената AllowKey=system.run["C:^ Files^ Agent^ 2.bat*"]
За тестирање:
PS C:\Program Files\Zabbix Agent 2> .\zabbix_get.exe -s 127.0.0.1 -k system.run["C:\Program^ Files\Zabbix^ Agent^ 2\scripts\test.bat caret"]
Ова конфигурација омогућава извршавање скрипте без обзира на то да ли су прослеђени аргументи (као што је caret
) и осигурава да је system.run
дозвољено чак и ако путања скрипте садржи размаке.
Pattern | Description | Matches | No match |
---|---|---|---|
* | Matches all possible keys with or without parameters. | Any | None |
vfs.file.contents | Matches vfs.file.contents without parameters. |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | Matches vfs.file.contents with empty parameters. |
vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | Matches vfs.file.contents with any parameters; will not match vfs.file.contents without square brackets. |
vfs.file.contents[] vfs.file.contents[/path/to/file] |
vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | Matches vfs.file.contents with first parameters matching /etc/passwd and all other parameters having any value (also empty). |
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*] | Matches vfs.file.contents with first parameter matching *passwd* and no other parameters. |
vfs.file.contents[/etc/passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | Matches vfs.file.contents with only first parameter matching *passwd* and all following parameters having any value (also empty). |
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] | Matches vfs.file.contents with first parameter matching /var/log/zabbix_server.log, third parameter matching 'abc' and any (also empty) second parameter. |
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] | Matches vfs.file.contents with first parameter matching /etc/passwd, second parameter matching 'utf8' and no other arguments. |
vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | Matches any keys starting with vfs.file. without any parameters. |
vfs.file.contents vfs.file.size |
vfs.file.contents[] vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | Matches any keys starting with vfs.file. with any parameters. |
vfs.file.size.bytes[] vfs.file.size[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
vfs.*.contents | Matches any key starting with vfs. and ending with .contents without any parameters. |
vfs.mount.point.file.contents vfs..contents |
vfs.contents |
Хипотетичка скрипта попут 'myscript.sh' може се извршити на хосту путем Zabbix агента на неколико начина:
Овде корисник може додати "wait", "nowait" или изоставити други аргумент да би користио његову подразумевану вредност у system.run[].
Корисник конфигурише ову скрипту у Упозорења → Скрипте, поставља "Execute on: Zabbix agent" и ставља "myscript.sh" у поље за унос "Commands" скрипте. Када се позове са корисничког интерфејса или API-ја, Zabbix сервер шаље агенту:
Овде корисник не контролише параметре "wait"/"nowait".
3. Као удаљена команда из акције. Zabbix сервер шаље агенту:
Овде поново корисник не контролише параметре "wait"/"nowait".
То значи да ако подесимо AllowKey као:
AllowKey=system.run[myscript.sh]
онда
Да бисте дозволили све описане варијанте, можете додати:
AllowKey=system.run[myscript.sh,*] DenyKey=system.run[*]
параметрима agent/agent2.