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

Преглед

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

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

  • 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[*].

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

– Бела листа без правила одбијања је дозвољена само за систем.рун[*] ставке. За све остале ставке, 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=*

Примери шаблона

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[/path/to/file]
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" или изоставити 2. аргумент за употребу његова подразумевана вредност у system.run[].

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

Корисник конфигурише ову скрипту у ОбавештењаСкрипте, сетови "Изврши на: Zabbix агенту" и ставља "myscript.sh" у скрипту Поље за унос "Команде". Када се позове са корисничким интерфејсом или 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[*]

на параметре агент/агент2.