12 Ограничавање провера агената

Преглед

Могуће је ограничити провере на страни агента креирањем ставке црне листе, беле листе или комбинације беле листе/црне листе.

Да бисте то урадили, користите комбинацију два параметра агента configuration:

  • AllowKey=<pattern> - које провере су дозвољене; <pattern> је наведено помоћу израза са џокерима (*)
  • DenyKey=<pattern> - које провере су одбијене; <pattern> је наведено помоћу израза са џокерима (*)

Имајте на уму да:

  • Све ставке system.run[*] (даљинске команде, скрипте) су подразумевано онемогућене, чак и када нису наведени кључеви за одбијање, треба претпоставити да је DenyKey=system.run[*] имплицитно додато.
  • Од Zabbix-а 5.0.2, параметар агента EnableRemoteCommands је:
  • застарео од стране Zabbix агента
  • није подржан од стране Zabbix агента2

Стога, да бисте дозволили удаљене команде, наведите AllowKey=system.run[<command>,*] за сваку дозвољену команду, * означава режим чекања и без чекања. Такође је могуће навести параметар AllowKey=system.run[*] да бисте дозволили све команде са режимима чекања и без чекања. Да бисте онемогућили одређене удаљене команде, додајте параметре DenyKey са командама system.run[] пре параметра AllowKey=system.run[*].

Важна правила

  • Бела листа без правила забрањивања је дозвољена само за ставке system.run[*] За све остале ставке, параметри AllowKey нису дозвољени без параметра DenyKey; у овом случају Zabbix агент неће почети само са параметрима AllowKey.
  • Редослед је важан. Наведени параметри се проверавају један по један према редоследу њиховог појављивања у конфигурационој датотеци:
  • Чим се кључ ставке подудара са правилом дозвољавања/забрањивања, ставка је или дозвољена или забрањена; и провера правила се зауставља. Дакле, ако се ставка подудара и са правилом дозвољавања и са правилом забрањивања, резултат ће зависити од тога које правило долази прво.
  • Редослед утиче и на параметар EnableRemoteCommands (ако се користи).
  • Подржан је неограничен број параметара AllowKey/DenyKey.
  • Правила AllowKey, DenyKey не утичу на параметре конфигурације HostnameItem, HostMetadataItem, HostInterfaceItem.
  • Кључни образац је израз џокера где џокер (*) одговара било ком броју било којих знакова на одређеној позицији. Може се користити и у називу кључа и у параметрима.
  • Ако је одређени кључ ставке забрањен у конфигурацији агента, ставка ће бити пријављена као неподржана (нема назнаке о разлогу);
  • Zabbix агент са опцијом командне линије --print (-p) неће приказивати кључеве који нису дозвољени конфигурацијом;
  • Zabbix агент са опцијом командне линије --test (-t) ће вратити статус "Неподржани кључ ставке." за кључеве који нису дозвољени конфигурацијом;
  • Одбијене удаљене команде неће бити евидентиране у дневнику агента (ако је LogRemoteCommands=1).

Случајеви употребе

Одбиј специфичну проверу
  • Ставите на црну листу одређену проверу помоћу параметра DenyKey. Одговарајући кључеви биће забрањено. Сви неподударни кључеви ће бити дозвољени, осим system.run[] ставке.

на пример:

# Забраните сигуран приступ подацима
       DenyKey=vfs.file.contents[/etc/passwd,*]

Црна листа можда није добар избор, јер а нова Zabbix верзија може имати нове кључеве који нису експлицитно ограничени по постојећој конфигурацији. Ово може изазвати сигурност мана.

Одбиј одређену команду, дозволи другима
  • Ставите на црну листу одређену команду са параметром DenyKey. Бела листа свих друге команде, са параметром AllowKey.
# Забрани одређену команду
       DenyKey=system.run[ls -l /]
        
       # Дозволи друге скрипте
       AllowKey=system.run[*]
Дозволи посебне провере, одбиј друге
  • Бели списак специфичних провера са AllowKey параметрима, одбијте друге са DenyKey=*

на пример:

# Дозволи читање дневника:
       AllowKey==vfs.file.*[/var/log/*]
       
       # Дозволи провере по локалном времену
       AllowKey=system.localtime[*]
       
       # Одбијте све друге кључеве
       DenyKey=*
Дозволи скрипту са размацима у путањи и аргументима
  • Стави на белу листу скрипту која се налази у путањи која садржи размаке и дозволи прослеђивање аргумената њој. У оперативном систему Windows, избегавајте размаке користећи ^ приликом навођења путање.

На пример:

# Дозволи покретање 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

system.run и AllowKey

Хипотетичка скрипта попут 'myscript.sh' може се извршити на хосту путем Zabbix агента на неколико начина:

  1. Као кључ ставке у пасивној или активној провери, на пример:
  • system.run[myscript.sh]
  • system.run[myscript.sh,wait]
  • system.run[myscript.sh,nowait]

Овде корисник може додати "wait", "nowait" или изоставити други аргумент да би користио његову подразумевану вредност у system.run[].

  1. Као глобална скрипта (покренута од стране корисника у корисничком интерфејсу или API-ју).

Корисник конфигурише ову скрипту у УпозорењаСкрипте, поставља "Execute on: Zabbix agent" и ставља "myscript.sh" у поље за унос "Commands" скрипте. Када се позове са корисничког интерфејса или API-ја, Zabbix сервер шаље агенту:

  • system.run[myscript.sh,wait] - до Zabbix 5.0.4
  • system.run[myscript.sh] - од 5.0.5

Овде корисник не контролише параметре "wait"/"nowait".

3. Као удаљена команда из акције. Zabbix сервер шаље агенту:

  • system.run[myscript.sh,nowait]

Овде поново корисник не контролише параметре "wait"/"nowait".

То значи да ако подесимо AllowKey као:

AllowKey=system.run[myscript.sh]

онда

  • system.run[myscript.sh] - биће дозвољено
  • system.run[myscript.sh,wait], system.run[myscript.sh,nowait] неће бити дозвољено - скрипта се неће покренути ако се позове као корак акције

Да бисте дозволили све описане варијанте, можете додати:

AllowKey=system.run[myscript.sh,*] DenyKey=system.run[*]

параметрима agent/agent2.