Могуће је ограничити провере на страни агента креирањем ставке црне листе, беле листе или комбинације беле листе/црне листе.
Да бисте то урадили, користите комбинацију два параметра агента 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 |
---|---|---|---|
* | Подудара се са свим могућим кључевима са или без параметара. | Било који | Ниједан |
vfs.file.contents | Подудара се са vfs.file.contents без параметара. |
vfs.file.contents | vfs.file.contents[/etc/passwd] |
vfs.file.contents[] | Подудара се са vfs.file.contents са празним параметрима. |
vfs.file.contents[] | vfs.file.contents |
vfs.file.contents[*] | Подудара се са vfs.file.contents са било којим параметрима; неће се подударати са vfs.file.contents без угластих заграда. |
vfs.file.contents[] vfs.file.contents[/путања/до/датотеке] |
vfs.file.contents |
vfs.file.contents[/etc/passwd,*] | Подудара се са vfs.file.contents са првим параметрима који се подударају са /etc/passwd и свим осталим параметрима који имају било коју вредност (такође празни). |
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*] | Подудара се са vfs.file.contents где је први параметр *passwd* и нема других параметара. |
vfs.file.contents[/etc/passwd] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd, utf8] |
vfs.file.contents[*passwd*,*] | Подудара се са vfs.file.contents где се само први параметар подудара са *passwd* и сви следећи параметри имају било коју вредност (такође празни). |
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] | Подудара се са vfs.file.contents где први параметр одговара /var/log/zabbix_server.log, трећи параметр одговара 'abc' и било који (такође празан) други параметр. |
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] | Подудара се са vfs.file.contents где први параметр одговара /etc/passwd, други параметр одговара 'utf8' и нема других аргумената. |
vfs.file.contents[/etc/passwd,utf8] | vfs.file.contents[/etc/passwd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | Подудара се са било којим кључевима који почињу са vfs.file. без икаквих параметара. |
vfs.file.contents vfs.file.size |
vfs.file.contents[] vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | Подудара се са било којим кључем који почиње са vfs.file. са било којим параметрима. |
vfs.file.size.bytes[] vfs.file.size[/var/log/zabbix_server.log, utf8] |
vfs.file.size.bytes |
vfs.*.contents | Подудара се са било којим кључем који почиње са vfs. и завршава се са .contents без икаквих параметара. |
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.