官方传送
- 官方文档传送门
记录日期
2023-06-28
背景简介
当前Nacos版本为2.1.0,集群部署与官方文档一致,通过阿里云负载均衡SLB服务挂载3台ECS提供服务,如图:
近期有漏洞Nacos 内网集群Raft 反序列化漏洞披露。
影响版本
1.4.0 <= Nacos < 1.4.6
2.0.0 <= Nacos < 2.2.3
安全版本
Nacos 1.4.6
Nacos 2.2.3
解决建议
官方已发布安全更新,建议升级至最新版本。
版本升级
- 下载安装包
从 最新稳定版本 下载 nacos-server-2.2.3.zip。 - 上传安装包到服务器并解压
unzip nacos-server-2.2.3.zip
注:该命令可能需要安装unzip >yum install unzip
- 配置集群配置文件
cp cluster.conf.example cluster.conf
vi cluster.conf
添加节点IP及端口(配置3个或3个以上节点)172.6.7.10:8848 172.6.7.11:8848 172.6.7.12:8848
- 开启默认鉴权插件(参考权限认证)
vi application.properties
设置其中
注:nacos.core.auth.plugin.nacos.token.secret.key,推荐设置为Base64编码的字符串,且原始密钥长度不得低于32字符。nacos.core.auth.enabled=true nacos.core.auth.system.type=nacos nacos.core.auth.plugin.nacos.token.secret.key=${自定义,保证所有节点一致} nacos.core.auth.server.identity.key=${自定义,保证所有节点一致} nacos.core.auth.server.identity.value=${自定义,保证所有节点一致}
- 配置数据源
使用内置数据源时,无需任何配置。
使用外置数据源时
vi application.properties
设置其中spring.sql.init.platform=mysql db.num=1 db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC db.user.0=nacos db.password.0=nacos
- 启动服务器
使用内置数据源:sh startup.sh -p embedded
使用外置数据源:sh startup.sh
- 完成升级
报错信息
nacos.core.auth.plugin.nacos.token.secret.key 配置错误。
Caused by: java.lang.IllegalArgumentException: The specified key byte array is 0 bits which is not secure enough for any JWT HMAC-SHA algorithm. The JWT JWA Specification (RFC 7518, Section 3.2) states that keys used with HMAC-SHA algorithms MUST have a size >= 256 bits (the key size must be greater than or equal to the hash output size). See https://tools.ietf.org/html/rfc7518#section-3.2 for more information.
nacos.core.auth.server.identity 配置错误。
Caused by: com.alibaba.nacos.api.exception.NacosException: Empty identity, Please set nacos.core.auth.server.identity.key
and nacos.core.auth.server.identity.value
, detail: https://nacos.io/zh-cn/docs/v2/guide/user/auth.html
外置数据源配置错误。
Caused by: com.alibaba.nacos.api.exception.runtime.NacosRuntimeException: errCode: 102, errMsg: dataSource or tableName is null