1. 访问控制
概述
本节包含以安全方式设置访问控制的最佳实践。
最小特权原则
用户帐户应始终以尽可能少的权限运行。这意味着 Zabbix 前端的用户帐户、数据库用户或 Zabbix 服务器/代理/代理进程的用户应仅具有执行预期功能所必需的权限。
赋予“zabbix”用户额外的权限将允许其访问配置文件并执行可能危及基础设施安全的操作。
配置用户账户权限时,应考虑Zabbix 前端用户权限 。请注意,尽管管理员用户类型的权限比超级管理员用户类型少,但它仍然可以管理配置并执行自定义脚本。
某些信息甚至可供非特权用户使用。例如,虽然警报→脚本仅供超级管理员用户使用,但也可以通过 Zabbix API 检索脚本。在这种情况下,限制脚本权限并从脚本中排除敏感信息(例如,访问凭据)可以帮助避免暴露全局脚本中可用的敏感信息。
Zabbix 代理的安全用户
默认情况下,Zabbix 服务器和 Zabbix 代理进程共享一个“zabbix”用户。为了确保 Zabbix 代理无法访问服务器配置中的敏感详细信息(例如,数据库登录信息),应以其他用户身份运行代理:
- 创建一个安全用户。
- 在代理配置文件 用户 参数中指定此用户。
- 使用管理员权限重新启动代理。权限将被授予指定用户。
撤销 Windows 中 SSL 配置文件的写访问权限
使用 OpenSSL 编译的 Zabbix Windows 代理将尝试访问中的 SSL 配置文件位于c:\\openssl-64bit
。非特权用户可以创建“C:”盘”上的“openssl-64bit”目录。
为了提高安全性,请手动创建此目录并撤销非管理员用户的写访问权限。
请注意,目录名称在 Windows 的 32 位和 64 位版本上会有所不同。
强化Zabbix组件的安全性
可以关闭某些功能以加强 Zabbix 组件的安全性:
- 可以通过在服务器配置中设置 EnableGlobalScripts=0 来禁用 Zabbix 服务器上的全局脚本执行;
- 默认情况下,Zabbix 代理上的全局脚本执行是禁用的(可以通过在代理配置中设置 EnableRemoteCommands=1 来启用);
- Zabbix 代理上的全局脚本执行默认是禁用的(可以通过在代理配置中为每个允许的命令添加 AllowKey=system.run[<command>,*] 参数来启用);
- 可以通过在前端配置文件 (zabbix.conf.php) 中设置来禁用用户 HTTP 身份验证
$ALLOW_HTTP_AUTH=false
。请注意,重新安装前端 (运行 setup.php) 将删除此参数。