可以通过创建监控项黑名单、白名单或白名单/黑名单的组合来限制agent的检查。
为此,请结合使用两个agent配置 参数:
AllowKey=<pattern>
- 允许哪些检查; <pattern> 使用通配符 (*)表达式指定DenyKey=<pattern>
- 拒绝哪些检查; <pattern> 使用通配符 (*) 表达式指定请注意:
system.run[*]
监控项 (远程命令,脚本) 是禁用的,即便没有指定拒绝健;因此,要允许所有远程命令,请指定AllowKey=system.run[*] 参数。 要允许部分远程命令,创建 system.run[] 命令指定的白名单。 要禁用指定的远程命令行,在AllowKey=system.run[*]参数前使用system.run[]命令增加 DenyKey 参数。
例如:
黑名单可能不是一个好的选择,因为新的 Zabbix 版本中,可能存在没有在当前配置中明确限制的键值。这可能会导致安全缺陷。
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[/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]<br >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[]< br>vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | 匹配任何以 vfs.file. 开头的键和任何参数。 |
vfs.file.size.bytes[] vfs.file.大小[/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 中启动)。
用户在 Administration → Scripts 中配置此脚本,设置“在Zabbix agent上执行”并将“myscript.sh”放入脚本的“命令”输入字段。当从前端或 API 调用时,由Zabbix server发送到代理上:
这里用户不控制“wait”/“nowait”参数。
3.作为动作的远程命令。 Zabbix server发送到agent:
在这里,用户再次不控制“wait”/“nowait”参数。
这意味着如果我们将 AllowKey 设置为:
然后
要允许所有描述的变体,您可以添加:
到 agent/agent2 参数。