Nacos版本升级,从版本1.3.0升级至2.4.1(修复多个版本漏洞)
- 一、简述:
- 二、问题描述:
- 1、当前版本为1.3.0
- 2、当前版本存在历史多个Nday与默认口令
- 三、升级准备
- 1、查看升级规则
- 四、升级过程
- 1、从1.3.0升级到2.0.2版本
- 1.1 升级步骤
- 2、从2.0.2升级至2.1.1
- 2.1 数据库结构差异介绍
- 2.2升级步骤
- 3、从2.1.1版本升级至2.4.1
- 3.1 升级步骤
- 五、升级过程中遇到的问题
- 踩坑点1:
- 踩坑点2:
一、简述:
Nacos版本过低,存在多个Nday漏洞,本文记录了Nacos从1.3.0到2.4.1的升级过程与需注意的踩坑要点。
二、问题描述:
1、当前版本为1.3.0
2、当前版本存在历史多个Nday与默认口令
检测结果
三、升级准备
1、查看升级规则
当前版本为1.3.0因此需要先升级到2.0版本或2.1,官方升级手册https://nacos.io/docs/v2/upgrading/200-upgrading/
官方给出案例的是nacos-server-2.0.2.tar.gz
版本,因此优先尝试升级到该版本。
升级流程如下
四、升级过程
1、从1.3.0升级到2.0.2版本
1.1 升级步骤
1.1.1 先暂停Nacos服务
1.1.2 上传2.0.2版本的三个文件包
1.1.3 替换覆盖1.3.0的文件
1.1.4 重新启动
1.1.5 启动成功
1.3.0升级到2.0.2更新成功
2、从2.0.2升级至2.1.1
2.1 数据库结构差异介绍
升级2.1.1存在一定风险,因为该版本数据库的表发生的变更,无法平滑升级
2.0.2 和2.1.1 两个版本nacos-mysql.sql
数据库结构差异如下
由此可得到表更新SQL语句:
ALTER TABLE `config_info` ADD COLUMN `encrypted_data_key` varchar(255) NOT NULL COMMENT '密钥';
ALTER TABLE `config_info_beta` ADD COLUMN `encrypted_data_key` varchar(255) NOT NULL COMMENT '密钥';
ALTER TABLE `his_config_info` ADD COLUMN `encrypted_data_key` varchar(255) NOT NULL COMMENT '密钥';
由于更新前需要变更数据库结构,Nacos默认数据库为内嵌的derby
数据库变更方式如下
可以通过官方的github库下载
https://github.com/alibaba/nacos/blob/master/distribution/conf/derby-schema.sql
可以得到数据库更新语句,加入到derby-schema.sql
的最后面
2.2升级步骤
2.2.1 更新数据库前,暂停nacos
2.2.2 上传sql到conf目录下
2.2.3 再次运行nacos,更新数据库,而后关闭
bash startup.sh -m standalone
bash shutdown.sh
2.2.4 升级到2.1.1的操作依旧是覆盖,重新上传2.1.1的文件,覆盖2.0.2的配置文件,而后启动nacos
启动成功截图如下:
3、从2.1.1版本升级至2.4.1
同样,升级到2.4.1的操作与2.1.1的操作一致,
3.1 升级步骤
3.1.1 暂停服务
3.1.2 上传2.4.1的附件,覆盖文件
3.1.3 覆盖后,启动服务
启动成功,版本更新完成
五、升级过程中遇到的问题
踩坑点1:
更新后,会发现不需要登录就可以进入nacos后台,这是因为该版本默认没有设置鉴权
查看官方文档
https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
需修改对应的配置
更新后发现403,报错信息如下
https://nacos.io/blog/faq/nacos-user-question-history13537/
根据官方文档,需要进一步配置
另外建议再配置一下
nacos.core.auth.plugin.nacos.token.secret.key
踩坑点2:
再次保存配置文件后一直弹窗如下,始终进不去
此时退出登录状态,登出系统即可
再次登录就没有鉴权失败的弹窗问题了
漏洞修复复测
默认口令可直接修改强口令密码
至此,版本升级与漏洞修复完成。