Nacos 安全使用最佳实践 - 访问控制实践

devtools/2024/9/29 20:27:02/

nacos不开启鉴权暴露公网会导致风险">Nacos不开启鉴权&暴露公网会导致风险

Nacos属于内网核心组件不建议暴露公网,在暴露公网情况下,如果不开启Nacos的鉴权能力(访问控制)或者 开启鉴权但使用默认密钥(密码/token.secret.key/server.identity),非常容易遭受黑客攻击获取Nacos存储的信息,强烈建议关闭公网访问,或开启Nacos集群鉴权能力,正确设置密钥;

为此我们建议您的集群按照下属步骤进行及检查和开启鉴权,修改默认用户名密码,避免风险;我们根据通用场景列出了开启鉴权和修改默认账密方式步骤,请按照不同业务场景进行选择性操作,操作项比较多,建议在业务低峰期进行操作,具体操作时请做好检查和灰度,避免影响业务运行。

如果有需要也可以考虑迁移至阿里云MSE提供的Nacos云服务,可以更简单、方便的解决安全风险,不仅支持企业级鉴权能力,还支持集成配置信息加解密能力、数据传输链路TLS加密,支持 平滑迁移 ,欢迎免费试用 。

风险项检查和修复的步骤

0. 预检查

  1. 首先检查Nacos集群是否暴露到公网之中,若已经暴露到公网中,建议优先设置网络层面的访问限制,例如添加IP白名单。
  2. 其次检查Nacos部署的版本是否低于1.4.1版本,若低于1.4.1版本,可以先升级到新版本后,再进行开启鉴权的操作。
  3. 检查是否打开鉴权开关是否为false
    1. 非镜像部署的Nacos,配置文件一般存放在${nacos.home}/conf/application.properties,配置项为nacos.core.auth.enabled
    2. 镜像部署的Nacos,环境变量为NACOS_AUTH_ENABLE
  4. 检查是否配置了token.secret.key为默认值SecretKey012345678901234567890123456789012345678901234567890123456789
    1. 非镜像部署的Nacos,配置文件中配置项为nacos.core.auth.plugin.nacos.token.secret.keynacos.core.auth.default.token.secret.key
    2. 镜像部署的Nacos,环境变量为NACOS_AUTH_TOKEN
  5. 检查是否配置了server.identiy的默认值serverIdentitysecurity
    1. 非镜像部署的Nacos,配置文件中配置项为nacos.core.auth.server.identity.keynacos.core.auth.server.identity.value
    2. 镜像部署的Nacos,环境变量为NACOS_AUTH_IDENTITY_KEYNACOS_AUTH_IDENTITY_VALUE
  6. 检查是否使用了默认的用户名密码
    1. 通过API curl -X POST "http://${nacos.server.ip}:${nacos.server.port}/nacos/v1/auth/users/login?username=nacos" -d "password=nacos"进行测试,若登录成功,则说明使用了默认用户密码

若部署的Nacos中存在上述开关为关闭、默认值的情况,建议尽快按照以下步骤开启鉴权,修改默认用户名密码和默认值,避免风险;

nacos鉴权访问控制步骤">1. 开启Nacos鉴权访问控制步骤

注意:开启Nacos鉴权能力,就会拦截检查所有访问请求,请提前配置好客户端鉴权信息;为减少用户在开启鉴权和修复默认值导致的风险过程中对应用造成的影响,Nacos社区提供了一个通用的操作步骤。 对于已经开启了鉴权功能,但仍然在使用的token.secret.key默认值、server.identiy默认值、默认用户名密码的用户,可以先临时关闭鉴权功能,同样使用下列步骤重新开启鉴权功能,来避免使用默认值造成的安全风险和影响。

1.1. 修改配置文件

该步骤是提前修改Nacos中token.secret.keyserver.identity的配置值,避免使用默认值防止风险。

1.1.1. 非镜像部署
  1. 【找到配置文件】找到Nacos的配置文件,一般存放在${nacos.home}/conf/application.properties
  2. 【修改token.secret.key】编辑其中的配置项nacos.core.auth.plugin.nacos.token.secret.key,将其设置为一个自定义的Base64字符串,并确保所有Nacos节点中的该配置值保持一致,同时避免使用老版本的默认值SecretKey012345678901234567890123456789012345678901234567890123456789
  3. 【修改identity.key】编辑其中的配置项nacos.core.auth.server.identity.keynacos.core.auth.server.identity.value,将其设置为一个自定义的键值对字符串,并确保所有Nacos节点中的该配置值保持一致,同时避免使用老版本的默认值serverIdentitysecurity ;
1.1.2. docker镜像部署
  1. 【修改token.secret.key】给容器添加环境变量NACOS_AUTH_TOKEN,将其设置为一个自定义的Base64字符串,并确保所有Nacos容器的该环境变量保持一致,同时避免使用老版本的默认值SecretKey012345678901234567890123456789012345678901234567890123456789
  2. 【修改identity.key】给容器添加环境变量NACOS_AUTH_IDENTITY_KEYNACOS_AUTH_IDENTITY_VALUE,将其设置为一个自定义的键值对字符串,并确保所有Nacos容器的该环境变量保持一致,同时避免使用老版本的默认值serverIdentitysecurity ;

修改完成后,重启Nacos服务器,让配置生效。

nacos用户">1.2. 提前为应用配置nacos用户

该步骤是提前给应用注入有权限的身份信息,避免开启鉴权后因无效信息或缺少身份信息而被拒绝访问,造成业务故障。

由于开启鉴权后,Nacos将拦截所有未带有身份信息和身份信息错误的请求,因此为了不影响业务使用,请先为应用配置正确赋权的用户和密码,默认情况下nacos提供一个标准的用户,用户名密码为nacos/nacos;若之前已经给应用配置了其他已赋权的用户名密码,则可以不进行修改。 完成配置后,重启所有应用,让用户名密码的配置生效。

1.3. 开启鉴权开关

若确认所有应用均配置了用户名密码,并重启生效之后,则可以打开Nacos的鉴权开关。

1.3.1. 非镜像部署
  1. 【找到配置文件】找到Nacos的配置文件,一般存放在${nacos.home}/conf/application.properties
  2. 【修改鉴权开关】设置配置项nacos.core.auth.enabled值为true
1.3.2. docker镜像部署
  1. 【修改鉴权开关】给容器添加环境变量NACOS_AUTH_ENABLE值为true

修改完成后,重启Nacos集群,让配置生效。

1.4. 创建新的用户名密码,替换默认用户名密码

请关注是否存在非预期的用户信息在Nacos中,请检查并且删除,防止黑客进行信息预留

若应用已经配置的是非默认用户名或密码,该步骤可以省略。

在Nacos部署完成,并开启访问控制后,需要尽快修改应用所使用的用户密码,避免使用默认用户名密码,造成风险。

  1. 【访问Nacos控制台】访问Nacos的控制台,使用默认用户名密码登录;
  2. 【新增用户并赋权】在Nacos控制台上,选择权限控制 -> 用户列表,创建新的用户名和密码,并在权限控制 -> 角色管理权限控制 -> 权限管理中为新用户赋权
  3. 【应用使用新用户】修改应用中关于nacos的用户名和密码的配置,设置为新创建的用户名和密码,并重启应用生效。
1.5. 修改默认密码

若之前已经配置的是非默认用户名或密码,该步骤可以省略。

完成上述步骤后,需要尽快修改默认的用户名密码,防止被恶意攻击者通过默认用户名密码访问Nacos,获取数据。

  1. 【修改默认用户密码】确认所有应用均使用新的用户名密码后,在Nacos控制台上,选择权限控制 -> 用户列表,在操作列表中点击修改按钮,修改nacos用户的密码为自定义密码;

nacos访问控制风险和修复nacos访问控制漏洞">2. 避免Nacos访问控制风险和修复Nacos访问控制漏洞

nacos未授权访问风险">2.1. Nacos未授权访问风险

若您的Nacos集群存在Nacos未授权访问的风险,说明部署的Nacos集群没有开启访问控制功能,可以通过上文介绍的开启Nacos鉴权访问控制步骤,开启Nacos的访问控制能力,来避免该风险。

nacos-默认密码风险--nacos-默认tokensecretkey-风险--nacos-默认serveridentity风险">2.2. Nacos 默认密码风险 & Nacos 默认token.secret.key 风险 & Nacos 默认server.identity风险

若您的Nacos集群存在上述3个风险,说明您的集群中配置了对应的默认值,同样可以通过上文介绍的开启Nacos鉴权访问控制步骤的,开启Nacos的访问控制能力,来避免该风险。

nacos-认证绕过漏洞cve-2021-29441">2.3. Nacos 认证绕过漏洞(CVE-2021-29441)

若您的Nacos集群存在Nacos 认证绕过漏洞(CVE-2021-29441),说明部署的Nacos集群版本过低,低于1.4.1版本,建议将Nacos的版本升级到1.4.1版本以上,建议升级到最新版本,同时进行上文介绍的预检查,检查是否存在默认值的风险。

3. 如何排查和清理黑客留下的后门用户

若您的Nacos集群为新部署的集群,则可以跳过此操作。

在您的Nacos集群限制网络访问,打开鉴权,并修复访问控制的风险和漏洞后,已经有了一定的安全防护能力,消除了大多数的数据泄漏风险,最后您还需要排查一下是否存在之前黑客留下的后门用户,以及如何清理掉这部分后门用户:

  1. 登录Nacos控制台,选择权限控制 -> 用户列表,获取所有Nacos中的用户。
  2. 与应用所配置的用户列表,以及开发运维人员所使用的的用户列表进行比对,查看是否存在多余的用户;若存在多余的用户,则可能被黑客留下后门用户。
  3. 进入在权限控制 -> 角色管理,通过用户名进行过滤,查看疑似后门用户是否存在绑定的角色,若存在绑定的角色,可以在页面中先删除此用户绑定的角色(删除后该用户已经没有了访问权限),观察一段时间监控,是否存在403状态码的增加。
    1. 若403状态码大幅增加,需要排查是否在第二步时遗漏了正在使用的用户,若确认不是应用使用的,则可能是黑客的请求,需要尽快对Nacos中存储的敏感信息进行排查和替换;
    2. 若403状态码没有增加,那么说明该用户大概率是后门用户或已经不使用的过期用户,需要尽快删除
  4. 选择权限控制 -> 用户列表,将第三步中疑似后门用户和不使用的过期用户删除,彻底消除风险。

http://www.ppmy.cn/devtools/118866.html

相关文章

springboot整合MybatisPlus+MySQL

上一篇:springboot整合sentinel和对feign熔断降级 文章目录 一、准备二、主要工作三、具体步骤3.1 准备数据库环境3.20 pre引入依赖3.2 引入依赖3.3 bootstrap.yml配置mybatisplus3.40 pre引入service、mapper3.4 引入实体类、service、mapper 四、测试目录结构 五…

Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)

0x01 漏洞描述&#xff1a; Qualitor 8.20及之前版本存在命令注入漏洞&#xff0c;远程攻击者可利用该漏洞通过PHP代码执行任意代码&#xff0c;利用难度较低危害较大。 0x02 影响版本&#xff1a; Qualitor < 8.20 0x03 搜索语句&#xff1a; Fofa:app"Qualitor-…

UI设计师面试整理-面试中的实际设计挑战

在UI设计师的面试中,面试官常常会给出一个实际设计挑战。这类挑战旨在评估你的设计思维、解决问题的能力、创意以及你如何在有限的时间内应对设计任务。应对这些挑战需要冷静、条理清晰和策略性地展示你的技能。以下是如何准备和应对面试中的实际设计挑战的建议: 1. 理解设计…

Mysql梳理10——使用SQL99实现7中JOIN操作

10 使用SQL99实现7中JOIN操作 10.1 使用SQL99实现7中JOIN操作 本案例的数据库文件分享&#xff1a; 通过百度网盘分享的文件&#xff1a;atguigudb.sql 链接&#xff1a;https://pan.baidu.com/s/1iEAJIl0ne3Y07kHd8diMag?pwd2233 提取码&#xff1a;2233 # 正中图 SEL…

分布式选举 - Paxos、Zab 和 Raft 选举协议的逐步优化与对比分析

在分布式系统中&#xff0c;选举协议的设计是确保一致性与高可用性的核心。Paxos、Zab 和 Raft 作为分布式一致性协议的代表&#xff0c;展示了协议优化的逐步过程。从 Paxos 到 Zab&#xff0c;再到 Raft&#xff0c;每个协议都对前者的复杂性和效率进行了改进。本文将通过对比…

深圳龙链科技:全球区块链开发先锋,领航Web3生态未来

【深圳龙链科技】是全球领先的Web3区块链技术开发公司&#xff0c;专注于为全球客户提供创新高效的区块链解决方案。 深圳龙链科技由币安资深股东携手香港领先的Web3创新枢纽Cyberport联袂打造&#xff0c;立足于香港这一国际金融中心&#xff0c;放眼全球&#xff0c;汇聚了华…

2024中国新能源汽车零部件交易会,开源网安展示了什么?

近日&#xff0c;2024中国新能源汽车零部件交易会在十堰国际会展中心举行。开源网安车联网安全实验室携车联网安全相关产品及解决方案亮相本次交易会&#xff0c;保障智能网联汽车“车、路、云、网、图、边”安全&#xff0c;推动智能网联汽车技术突破与产业化发展。 中国新能源…

GPT与大模型行业落地实践探索

简介 本课程探讨GPT和大模型技术在行业中的实际应用和发展。课程将涵盖GPT的基础知识、原理、及其在行业中的应用案例&#xff0c;如财报分析和客服机器人。重点在于结合实际案例中的使用效果&#xff0c;讲解如何利用GPT的API开发企业级应用以及利用更高级的功能构造AI Agent。…