可以通过创建项目黑名单、白名单或白名单/黑名单的组合来限制agent的检查。
为此,请结合使用两个agent配置参数:
*''AllowKey=<pattern>''-允许哪些检查;<pattern>使用通配符(*)表达式指定
*''DenyKey=<pattern>''-拒绝哪些检查;<pattern>使用通配符(*)表达式指定
请注意:
system.run[*]
项(远程命令、脚本)是禁用的,即使没有指定拒绝键;因此,要允许所有远程命令,请指定AllowKey=system.run[*]参数。(在Zabbix 5.0.2版本前,agent配置中还需要EnableRemoteCommands=1。)
要仅允许某些远程命令,请创建更具体的AllowKey[]参数的白名单。要禁止特定的远程命令,请在AllowKey=system.run[*]之前添加DenyKey参数。
*黑名单一个特定的检查与DenyKey参数。不允许匹配密钥。除system.run[]项外,允许使用所有不匹配的密钥。
例如:
<note important>黑名单可能不是一个好的选择,因为新的Zabbix版本可能具有不受现有配置明确限制的新密钥。这可能会导致安全漏洞。 :::
DenyKey=*
拒绝其它检查例如:
# 允许读取日志:
AllowKey=vfs.file.*[/var/log/*]
# 允许本地时间检查
AllowKey=system.localtime[*]
# 拒绝所有其它密钥
DenyKey=*
模式 描 | 匹配 | 不匹配 | |
---|---|---|---|
* | 匹配所有可能的带参数或不带参数的键。 Any | None | |
vfs.file.contents | 匹配vfs.file.contents 没有参数。 vfs.fi |
e.contents vfs.fi | e.contents[/etc/passwd] |
vfs.file.contents[] | 匹配vfs.file.contents 具有空参数。 vfs.fil |
.contents[] vfs.fil | .contents |
vfs.file.contents[*] | 匹配vfs.file.contents 具有任何参数;将不匹配vfs.file.contents 没有方括号。 vfs.file.contents |
] vfs.file.contentsvfs.file.contents[/path/to/file] | |
vfs.file.contents[/etc/passwd,*] | 匹配vfs.file.contents 的第一个参数与/etc/passwd匹配,所有其它参数都有任何值(也为空)。 vfs.file.contents[/etc/pass |
d,] vfs.file.contents[/etc/passvfs.file.contents[/etc/passwd,utf8] | d] 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]vfs.file.contents[/etc/passwd, utf8] | <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/zabbi |
_server.log,,abc] vfs.file.contents[/var/log/zabbivfs.file.contents[/var/log/zabbix_server.log,utf8,abc] | _server.log,,abc,def] |
vfs.file.contents[/etc/passwd,utf8] | 匹配vfs.file.contents 的第一个参数匹配/etc/passwd,第二个参数匹配“utf8”,没有其它参数。 vfs.file.contents[/etc/p |
sswd,utf8] vfs.file.contents[/etc/p | sswd,] vfs.file.contents[/etc/passwd,utf16] |
vfs.file.* | 匹配以vfs.file. 开头没有任何参数。 vfs.file.co |
tents vfs.file.covfs.file.size | tents[] vfs.file.size[/var/log/zabbix_server.log] |
vfs.file.*[*] | 匹配以vfs.file. 开头的任何键vfs.file文件任何参数。 vfs.file.size.b |
tes[] vfs.file.size.bvfs.file.size[/var/log/zabbix_server.log, utf8] | tes |
vfs.*.contents | 匹配以vfs. 开始并以.contents 结束不带任何参数的任何键。 vfs.mount.point.fil |
.contents vfs.contentsvfs..contents |
例如myscript.sh的脚本文件可以通过Zabbix agent在主机上以几种方式执行:
1. 作为被动或主动检查中的项目键,例如:
在此,用户可以添加"wait"、"nowait",或者省略第二个参数,在system.run[]中使用其默认值。
2. 作为全局脚本(由用户在前端或API中启动)。
用户在Administration→Scripts/中配置此脚本,设置“Execute on:Zabbix agent”并放置myscript.sh文件输入到脚本的“Commands”输入字段。从前端或API调用时,Zabbix server将发送到agent:
在此,用户不控制"wait"/"nowait"参数。
3. 作为一个动作的远程命令。Zabbix server向agent发送:
在此,用户同样不控制"wait"/"nowait"参数。
这意味着如果我们把AllowKey设置为:
则
要允许所有描述的变体,您可以添加:
到agent/agent2参数。