适用场景
Zabbix 监控平台安全加固适用于:企业内网已部署或计划部署 Zabbix 的运维团队;需要满足等保测评与安全基线要求的基础设施环境;以及担心监控平台本身成为攻击跳板、需要防止未授权访问与数据泄露的场景。Zabbix 掌握全网主机与告警数据,一旦被入侵,攻击者可借其下发命令或横向移动,因此平台自身的防护与业务系统同等重要。
前置条件
- Zabbix Server 已正常部署(建议 6.0 LTS 及以上版本)
- 具备 root 权限与 Web 前端管理账号(默认 Admin/zabbix)
- MySQL/MariaDB 或 PostgreSQL 数据库账号具备管理权限
原理说明
Zabbix 默认存在几类典型风险:Admin 弱口令与 Guest 用户未授权可访问前端;Web 界面暴露在公网或内网任意位置;数据库配置文件中明文保存 DB 口令;Agent 端仅靠 Server 白名单限制来源,未加密的流量可被嗅探。加固思路是分层收紧:账号层禁用弱口令与 Guest,访问层用防火墙/反向代理限制入口,数据层隔离数据库权限,通信层启用 Agent TLS 加密与来源白名单。
操作步骤
1. 账号体系加固
# 通过 Web 前端操作,或直接用 SQL 修改(6.0+ 版本示例)
# 修改 Admin 密码为高强度口令
UPDATE users SET passwd=MD5('New-Str0ng-Pa$$w0rd') WHERE alias='Admin';
# 禁用 Guest 用户(防止未授权访问监控数据)
UPDATE users SET attempts_failed=0, status=0 WHERE userid=2;
同时在前端「管理-用户」中为 Guest 取消所有角色权限,并为不同团队建立独立用户、按角色分配只读/告警权限。
2. Web 访问控制
# Nginx 反代层加 IP 白名单与基础认证
location / {
allow 10.0.0.0/8; # 仅允许内网网段访问
allow 192.168.1.0/24;
deny all;
auth_basic "Zabbix Restricted";
auth_basic_user_file /etc/nginx/.zbx_htpasswd;
proxy_pass http://127.0.0.1:8080;
}
# 生成认证口令文件
htpasswd -c /etc/nginx/.zbx_htpasswd zbxadmin
3. 数据库最小权限
# 为 Zabbix 单独创建专用账号,禁止远程登录与 DDL 权限
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'Zbix-DB-P@ss2026';
GRANT SELECT, INSERT, UPDATE, DELETE ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
# 修改 /etc/zabbix/zabbix_server.conf 中的 DBUser/DBPassword,并限制文件权限
chmod 600 /etc/zabbix/zabbix_server.conf
4. Agent 通信加固
# /etc/zabbix/zabbix_agentd.conf
Server=10.0.0.1 # 仅允许 Zabbix Server IP 连接
ListenIP=127.0.0.1 # 本机仅监听回环,避免局域网直连
# TLS 加密(双向 PSK)
TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=zbx-agent-01
TLSPSKFile=/etc/zabbix/agent.psk
# 生成 PSK 密钥(Server 端需配置相同 PSK)
openssl rand -hex 32 > /etc/zabbix/agent.psk
chmod 600 /etc/zabbix/agent.psk
systemctl restart zabbix-agent
配置验证
# 验证未授权访问已被拦截(应返回 401 或被 deny)
curl -I http://zabbix.example.com/ | grep -E '401|403'
# 验证 Agent TLS 连接
zabbix_get -s 127.0.0.1 -k agent.ping --tls-connect psk --tls-psk-identity zbx-agent-01 --tls-psk-file /etc/zabbix/agent.psk
验证要点:curl 返回 401/403 说明 Web 入口已收紧;zabbix_get 返回 1 说明 Agent 通信正常;再用无 TLS 参数连接一次确认被拒绝,确保加密真正生效。
常见问题
Q1:忘记 Zabbix Admin 密码如何重置?
登录数据库执行 UPDATE users SET passwd=MD5('新密码') WHERE alias='Admin';,再在前端将用户状态改为正常即可。若开启了 LDAP/SAML 认证,需先在配置中切换回内部认证。
Q2:启用 TLS PSK 后 Agent 大量显示不可用怎么办?
最常见原因是 Server 端与 Agent 端 PSK Identity 或密钥不一致。在 Server 主机配置页确认 PSK 标识与文件内容完全一致(含换行),并检查防火墙是否放行 10050 端口;也可临时将 TLSAccept 改回 unencrypted 排查网络层问题。
总结
Zabbix 加固的关键在于「不信任默认配置」:禁用 Guest 与弱口令、用反代白名单收敛入口、数据库最小权限隔离、Agent 启用来源白名单与 TLS 加密。完成四层加固后,监控平台自身的安全性即可与业务系统对齐。建议将加固项纳入安全基线检查脚本,随版本升级持续复核。