1 访问控制
概述
本节包含有关以安全方式设置访问控制的最佳实践。
最小权限原则
用户账户在任何时候都应run尽可能少的权限。 这意味着Zabbix前端中的用户账户、数据库用户或用于Zabbix server/proxy/agent进程的用户只应拥有执行预期功能所必需的权限。
向'zabbix'用户授予额外权限将允许其访问配置文件并execute可能危害基础设施安全的操作。
在配置用户账户权限时,应考虑Zabbix frontend user types。 请注意,虽然Admin用户类型比Super Admin用户类型拥有更少的权限,但它仍然可以管理配置并execute自定义脚本。
某些信息即使对非特权用户也是可见的。 例如,虽然Alerts → Scripts仅对Super Admin用户可用,但脚本也可以通过Zabbix API检索。 在这种情况下,限制脚本权限并从脚本中排除敏感信息(例如访问凭证)有助于避免暴露全局脚本中的敏感信息。
Zabbix agent安全用户
默认情况下,Zabbix server、proxy和agent(或agent 2)进程共享一个zabbix用户。
为防止Zabbix agent/agent 2(与server/proxy运行在同一台机器上)访问server/proxy配置中的敏感信息(例如数据库凭据),应将agent run为不同用户运行:
对于 Zabbix agent:
对于Zabbix agent 2,必须在service级别应用配置,因为agent 2 configuration file不支持User参数。
例如,请参见ZBX-26442。
撤销SSL配置写入权限(Windows)
如果您在 Windows 上编译了 Zabbix agent,并且 OpenSSL 位于一个未受保护的目录中(例如 C:\zabbix、c:\openssl-64bit、C:\OpenSSL-Win64-111-static 或 C:\dev\openssl),请确保撤销非管理员用户对该目录的写入权限。
否则,agent 会从一个可以被无特权用户修改的路径加载 SSL 设置,从而导致潜在的安全漏洞。
加固 Zabbix 组件的安全性
可以关闭某些功能,以加固 Zabbix 组件的安全性:
- 可通过在 服务器配置 中设置
EnableGlobalScripts=0来禁用 Zabbix 服务器上的全局脚本执行。 - Zabbix proxy 上的全局脚本执行默认已禁用(可通过在 proxy 配置 中设置
EnableRemoteCommands=1来启用)。 - Zabbix agent 上的全局脚本执行默认已禁用(可通过在 agent 配置 中为每个允许的命令添加
AllowKey=system.run[<command>,*]参数来启用)。 - 可通过在 前端配置文件(
zabbix.conf.php)中设置$ALLOW_HTTP_AUTH=false来禁用用户 HTTP 身份验证。请注意,重新安装前端(运行setup.php)将移除此参数。
Zabbix agent 在 Windows 上访问 UNC 路径
Windows 上的 Zabbix agent 会在诸如 vfs.file.*、vfs.dir.*、modbus.get 和 perf_counter* 等监控项中跟随 UNC 路径(如 \\server\share\file.txt 这样的 SMB 共享)。在某些场景下,这可能带来安全风险。
当 Windows 被要求访问 UNC 路径时,它会尝试在该服务器上进行身份验证。这意味着,针对 Zabbix agent 的恶意请求可能会将 NTLM 哈希暴露给请求方的服务器。用户如有需要,可以通过 AllowKey 和 DenyKey 配置参数来缓解这一问题。