1 访问控制

概述

本节包含有关以安全方式设置访问控制的最佳实践。

最小权限原则

用户账户在任何时候都应run尽可能少的权限。这意味着Zabbix前端中的用户账户、数据库用户或用于Zabbix server/proxy/agent进程的用户只应拥有执行预期功能所必需的权限。

为'zabbix'用户授予额外权限将允许其访问配置文件并执行execute操作,这可能危及基础设施安全。

在配置用户账户权限时,应考虑Zabbix frontend user types。请注意,尽管Admin用户类型比Super Admin用户类型拥有更少的权限,但它仍可以管理配置并execute自定义脚本。

某些信息即使对非特权用户也是可见的。例如,虽然告警脚本仅对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:

  1. 创建安全的用户组和用户(例如zabbix-agent)。
  2. 在 agent 配置中将此用户设置于 file 用户 参数中。
  3. 若以软件包安装 以降低权限至新用户。

对于Zabbix agent 2,必须在service级别应用配置,因为agent 2 configuration file不支持User参数。 例如,请参见ZBX-26442

撤销SSL配置写入权限(Windows)

如果您在 Windows 上编译了 Zabbix agent,并且 OpenSSL 位于一个未受保护的目录中(例如 C:\zabbixc:\openssl-64bitC:\OpenSSL-Win64-111-staticC:\dev\openssl),请确保撤销非管理员用户对该目录的写入权限。
否则,agent 会从一个可以被无特权用户修改的路径加载 SSL 设置,从而导致潜在的安全漏洞。

强化Zabbix组件安全性

可以通过关闭某些功能来强化 Zabbix 组件的安全性:

  • 在 Zabbix server 上禁用全局脚本执行,方法是在服务器配置中设置 EnableGlobalScripts=0;
  • 在 Zabbix proxy 上默认禁用全局脚本执行(可以通过在 proxy 配置中设置 EnableRemoteCommands=1 来启用);
  • 在 Zabbix agents 上默认禁用全局脚本执行(可以通过在 agent 配置中为每个允许的命令添加 AllowKey=system.run[<command>,*] 参数来启用);
  • 通过在前端配置 file(zabbix.conf.php)中设置 $ALLOW_HTTP_AUTH=false 来禁用用户 HTTP 认证。请注意,重新安装前端(运行 setup.php)将删除此参数。