1 访问控制

概览

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

最小特权原则

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

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

在配置用户账户权限时,应考虑Zabbix的前端用户类型。 请注意,尽管Admin用户类型比Super Admin用户类型权限少,但它仍然可以管理配置并执行自定义脚本。

即使对于非特权用户,某些信息也是可获取的。 例如,虽然AlertsScripts仅对Super Admin用户可用,但脚本也可以通过Zabbix API检索。 在这种情况下,限制脚本权限并从脚本中排除敏感信息(例如,访问凭证)可以帮助避免在全局脚本中暴露敏感信息。

Zabbix agent 的安全用户

默认情况下,Zabbix 服务器和 Zabbix agent 进程共享同一个 'zabbix' 用户。 为了确保 Zabbix agent 无法访问服务器配置中的敏感细节(例如,数据库登录信息),agent 应该以不同的用户运行:

  1. 创建一个安全用户。
  2. 在 agent 配置文件中指定此用户,使用参数 User查看配置参数)。
  3. 以管理员权限重启 agent。权限将被降级到指定的用户。

撤销对SSL配置文件的写入访问权限(Windows)

使用OpenSSL编译的Zabbix Windows agent将尝试访问位于c:\openssl-64bit的SSL配置文件。 磁盘C:上的openssl-64bit目录可能由非特权用户创建。

为了增强安全性,请手动创建此目录并撤销非管理员用户的写入访问权限。

请注意,32位和64位版本的Windows上目录名称会有所不同。

加固Zabbix组件的安全性

可以关闭某些功能以增强Zabbix组件的安全性:

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