一、升级原因
这两天安全方面暴露了zabbix的版本漏洞,具体漏洞信息如下:
Zabbix Server Audit Log SQL 注入漏洞预警
近日,某机构获取到Zabbix Server组件中修复了一个SQL注入漏洞(CVE-2024-22120),其CVSS评分为9.1,目前该漏洞的PoC已公开。
Zabbix多个受影响版本中存在SQL注入漏洞,该漏洞存在于audit.c的zbx_auditlog_global_script函数中,由于clientip字段未经清理,可能导致SQL时间盲注攻击,经过身份验证的威胁者可利用该漏洞从数据库中获取敏感信息,并可能导致将权限提升为管理员或导致远程代码执行。
影响范围:
Zabbix 6.0.0 - 6.0.27
Zabbix 6.4.0 - 6.4.12
Zabbix 7.0.0alpha1 - 7.0.0beta1
修复方案:
受影响用户可升级到Zabbix 6.0.28rc1、6.4.13rc1、7.0.0beta2或更高版本。
二、升级过程
升级参考zabbix官方升级步骤,我没有用到proxy,官方步骤简化,结合自己的升级如下:
(一)停止 Server 服务
停止 Zabbix server 服务并确认不再有新的数据写入数据库。
pkill zabbix_server
(二)备份当前的 Zabbix 数据库
这是非常重要的一步。确保您有数据库的备份,如果升级过程失败(如磁盘空间不足、断电等任何意外问题),它将有所帮助。
(三)备份配置文件、PHP 文件和 Zabbix 程序文件
备份 Zabbix 程序文件、配置文件和 PHP 文件目录。
(四)安装新的server程序文件
我选择了源码编译安装
(五)启动新的 Zabbix 程序文件
启动新的程序文件。检查日志以确认程序文件是否成功启动。
Zabbix server 会自动升级数据库。服务启动时,Zabbix server 会报告当前的(包括强制和可选)和所需要的数据库版本。如果当前强制版本比要求的版本低,Zabbix Server 会自动执行所要求的数据库版本升级补丁。数据库升级进度(百分比)被写入 Zabbix server 的日志。当日志出现 “database upgrade fully completed” 表示数据库升级成功。如果有任何补丁升级失败,Zabbix server 将不会启动。如果当前强制数据库版本比要求的更新,Zabbix server 也不会启动。仅当当前强制数据库版本对应于所需数据库版本时,Zabbix server 才会启动。
升级的时候遇到报错:
[Z3005] query failed: [1419] You do not have the SUPER privilege and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable) [create trigger hosts_name_upper_insert
解决方法:
mysql> SET GLOBAL log_bin_trust_function_creators = 1;
(六)安装新的 Zabbix web 界面
要求的最低 PHP 版本是 7.2.5。
以上是简单的步骤整理,中间简化很多过程,不过总体升级简单。
记得要备份!记得要备份!记得要备份!