Можно ограничить проверки на стороне агента, создав черный список элементов данных, белый список или комбинацию белого/черного списков.
Для этого используйте комбинацию из двух параметров конфигурации агента:
AllowKey=<шаблон>
- какие проверки разрешены; <шаблон> указывается с использованием выражения с подстановочным знаком (*)DenyKey=<шаблон>
- какие проверки запрещены; <шаблон> указывается с использованием выражения с подстановочным знаком (*)Обратите внимание, что:
system.run[*]
(скрипты, удалённые команды) по умолчанию отключены, даже если не указаны запрещающие ключи;Поэтому, чтобы разрешить удалённые команды, укажите AllowKey=system.run[<команда>,*] по каждой разрешенной команде, * заменяет режимы wait и nowait. Также можно указать параметр AllowKey=system.run[*], чтобы разрешить все команды с режимами wait и nowait. Чтобы запретить определённые удалённые команды, добавьте параметры 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=*
Шаблон | Описание | Соответствует | Не соответствует |
---|---|---|---|
* | Соответствует всем возможным ключам с параметрами или без них. | Любой | Нет |
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 агент несколькими способами:
1. В виде ключа элемента данных пассивной или активной проверкой, например:
Здесь пользовать может добавить "wait", "nowait" или опустить второй аргумент и использовать значение по умолчанию для system.run[].
2. В виде глобального скрипта (инициируется пользователем через веб-интерфейс или по API).
Пользователь настраивает этот скрипт в Администрирование → Скрипты, задает "Выполнять на: Zabbix агент" и помещает "myscript.sh" в поле ввода скрипта "Команды". При вызове из веб-интерфейса или по API Zabbix сервер отправляет на агент:
Здесь пользователь не управляет параметрами "wait"/"nowait".
3. В виде удаленной команды на действие. Zabbix сервер отправляет на агента:
Здесь также пользователь не управляет параметрами "wait"/"nowait".
Это означает, что если мы зададим AllowKey как:
тогда
Чтобы разрешить все описанные варианты, вы можете добавить:
к параметрам агента / агента 2.