nacos2.0升级至nacos2.2.3安全漏洞修复

背景

安全漏洞修复

升级

注意事项

近期Nacos社区收到关于Nacos鉴权功能通过token.secret.key默认值进行撞击,绕过身份验证安全漏洞的问题。社区在2.2.0.1和1.4.5版本已移除了自带的默认值,并在token.secret.key未传入或非法时阻止Nacos节点启动来提醒用户设置自定义token.secret.key。考虑到现在的控制台登陆页面并没有进行模块化,无法和是否开启鉴权功能关联,因此暂时需要强制设置token.secret.key,社区正在进行控制台登陆页面和鉴权功能的关联,待完成后,未开启鉴权的集群将不再强制需要token.secret.key开启后仍然强制需要。

https://nacos.io/zh-cn/blog/announcement-token-secret-key.html

人话:原来默认 token.secret.key 及 server.identity 有风险,需要修改。

如何开启鉴权及自定义密钥:

修改 application.properties

nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
#自定义密钥时,推荐将配置项设置为Base64编码的字符串,且原始密钥长度不得低于32字符。
# 生成一个32位以上的密钥,然后base64加密
nacos.core.auth.plugin.nacos.token.secret.key=123456
nacos.core.auth.server.identity.key=456789
nacos.core.auth.server.identity.value=456789

为保证用户敏感配置数据的安全,Nacos 提供了配置加密的新特性。降低了用户使用的风险,也不需要再对配置进行单独的加密处理。

https://nacos.io/zh-cn/docs/v2/plugin/config-encryption-plugin.html

人话:数据库要加东西,官方只提供了一条,但 github 上的 issue https://github.com/alibaba/nacos/issues/8559 有 3条

ALTER TABLE config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE config_info_beta ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';
ALTER TABLE his_config_info ADD encrypted_data_key TEXT NOT NULL COMMENT '秘钥';

修改token.secret.key并重启Nacos Server端后,来自Nacos Client的请求将会因无效token被拒绝。直到客户端到达旧token的TTL时间后,才会重新去获取新token。

https://nacos.io/zh-cn/blog/announcement-token-secret-key.html

人话:要把使用旧token的连接尽快过期,不然会影响业务

# 2.1.0版本及更高版本
nacos.core.auth.plugin.nacos.token.expire.seconds=5

默认的过期时间为18000,设置为5s以后,要运行18000s即5个小时以后,再改回18000。

重启集群。

升级步骤

  1. 将旧的 nacos 过期时间修改为 5s,重启nacos。
sed -i '/nacos.core.auth.default.token.expire.seconds/ s/18000/5/' /data/nacos/conf/application.properties
cd /data/nacos/bin
./shutdown.sh
./startup.sh

5个小时后

  1. 备份旧的nacos
./shutdown.sh
mv /data/nacos.bak
  1. 数据库插入的由dba执行

  1. 下载 nacos-server-2.2.3.tar.gz ,github 下不动的话可以用 https://ghproxy.com/ 这个代理下载。

编辑 application.properties

最后的配置文件如下:

server.servlet.contextPath=/nacos
server.error.include-message=ALWAYS
server.port=8848
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://192.168.1.2:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=nacos_config
db.password.0=123456
db.pool.config.connectionTimeout=30000
db.pool.config.validationTimeout=10000
db.pool.config.maximumPoolSize=20
db.pool.config.minimumIdle=2
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
server.tomcat.accesslog.enabled=true
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i
server.tomcat.basedir=file:.
nacos.security.ignore.urls=/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-ui/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**
nacos.core.auth.system.type=nacos
nacos.core.auth.enabled=true
nacos.core.auth.caching.enabled=true
nacos.core.auth.enable.userAgentAuthWhite=false
nacos.core.auth.server.identity.key=123456
nacos.core.auth.server.identity.value=123456
nacos.core.auth.plugin.nacos.token.cache.enable=false
nacos.core.auth.plugin.nacos.token.expire.seconds=18000
nacos.core.auth.plugin.nacos.token.secret.key=123456
nacos.istio.mcp.server.enabled=false

cluster.conf

192.168.96.223:8848
192.168.96.241:8848
192.168.96.82:8848

压缩配置好的nacos,分发到其他nacos服务器,启动即可。

回滚

恢复旧有的 nacos。

mv /data/nacos.bak /data/nacos
./startup.sh
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海口-熟练工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值