Можно ограничить проверки на стороне агента, создав черный список элементов, белый список или комбинацию белого/черного списка.
Для этого используйте комбинацию из двух параметров конфигурации агента:
AllowKey=<шаблон> - какие проверки разрешены; <шаблон> указывается с использованием выражения с подстановочным знаком (*)DenyKey=<шаблон> - какие проверки запрещены; <шаблон> указывается с использованием выражения с подстановочным знаком (*)Обратите внимание, что:
system.run[*] (скрипты, удаленные команды) по умолчанию отключены, даже если не указаны запрещающие ключи;Поэтому, чтобы разрешить все удаленные команды, укажите параметр AllowKey=system.run[*]. (До Zabbix 5.0.2, в конфигурации агента также требуется указать EnableRemoteCommands=1.)
Чтобы разрешить только некоторые удаленные команды, создайте белый список более конкретных параметров AllowKey[]. Чтобы запретить определенные удаленные команды, добавьте параметры DenyKey перед параметром AllowKey=system.run[*].
  *Порядок влияет также на параметр EnableRemoteCommands (если используется).
       * Поддерживается неограниченное количество параметров AllowKey/DenyKey.
       * Правила AllowKey, DenyKey не влияют на параметры конфигурации HostnameItem, HostMetadataItem, HostInterfaceItem.
       * Шаблон ключа - это выражение с подстановочным знаком, в котором подстановочный знак (*) соответствует любому количеству любых символов в определенной позиции. Его можно использовать как в имени ключа, так и в параметрах.
       * Если конкретный ключ элемента запрещен в конфигурации агента, элемент будет отмечен как неподдерживаемый (без указания причины);
       * Агент Zabbix с параметром командной строки --print (-p) не будет показывать ключи, которые не разрешены конфигурацией;
       * Агент Zabbix с параметром командной строки --test (-t) вернет статус %%"%% Unsupported item key. %%"%% (Неподдерживаемый ключ элемента данных) для ключей, которые не разрешены конфигурацией;
       * Отклоненные удаленные команды не будут записаны в журнал агента (если LogRemoteCommands = 1).Например:
Черный список может быть не лучшим выбором, потому что новая версия Zabbix может иметь новые ключи, которые не полностью ограничиваются существующей конфигурацией. Это может вызвать брешь в безопасности.
# Disallow specific command
       DenyKey=system.run[ls -l /]
        
       # Allow other scripts
       AllowKey=system.run[*]DenyKey = *Например:
# Allow reading logs:
       AllowKey=vfs.file.*[/var/log/*]
       
       # Allow localtime checks
       AllowKey=system.localtime[*]
       
       # Deny all other keys
       DenyKey=*| Шаблон | Описание | Соответствует | Не соответствует | 
|---|---|---|---|
| * | Соответствует всем возможным ключам с параметрами или без них. | Любой | Нет | 
| 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 | 
A hypothetical script like 'myscript.sh' may be executed on a host via Zabbix agent in several ways:
1. As an item key in a passive or active check, for example:
Here the user may add "wait", "nowait" or omit the 2nd argument to use its default value in system.run[].
2. As a global script (initiated by user in frontend or API).
A user configures this script in Administration → Scripts, sets "Execute on: Zabbix agent" and puts "myscript.sh" into the script's "Commands" input field. When invoked from frontend or API the Zabbix server sends to agent:
Here the user does not control the "wait"/"nowait" parameters.
3. As a remote command from an action. The Zabbix server sends to agent:
Here again the user does not control the "wait"/"nowait" parameters.
What that means is if we set AllowKey like:
then
To allow all described variants you may add:
to the agent/agent2 parameters.