Skip to content

Commit

Permalink
Merge branch 'nacos-group:develop-astro-nacos' into develop-astro-nacos
Browse files Browse the repository at this point in the history
  • Loading branch information
Tinie13 authored May 6, 2024
2 parents ce166d1 + 03db4ef commit bef0e70
Show file tree
Hide file tree
Showing 23 changed files with 855 additions and 10,273 deletions.
10,257 changes: 0 additions & 10,257 deletions package-lock.json

This file was deleted.

Binary file added public/img/blog/activity-preview/ospp2024.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/img/doc/manual/admin/monitor-overview.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 4 additions & 4 deletions src/consts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,14 +138,14 @@ export const ACTIVITY_CATEGORY = [
export const HEADER_ACTIVITY_CARD = [
{
"collection": "blog",
"slug": "nacos-gvr7dx_awbbpb_sozg59av10r22awa",
"description": "云原生开源沙龙北京站开启报名",
"slug": "activity-preview-opss2024",
"description": "Nacos开源之夏2024,贡献社区赢取12000奖金",
"imageUrl": "https://img.alicdn.com/imgextra/i4/O1CN01bGnAVW1pFeLFnlaQL_!!6000000005331-2-tps-508-370.png"
},
{
"collection": "blog",
"slug": "announcement-2023-award",
"description": "Nacos 荣获三个开源奖项",
"slug": "case-authorization",
"description": "Nacos 安全使用最佳实践 - 访问控制实践",
"imageUrl": "https://img.alicdn.com/imgextra/i4/O1CN01zfayJW1Lhe4kliPv9_!!6000000001331-2-tps-508-370.png"
}
]
Expand Down
72 changes: 72 additions & 0 deletions src/content/blog/activity-preview-opss2024.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
title: Nacos开源之夏2024,贡献社区赢取12000奖金
keywords: [Nacos, 开源之夏, summerCode]
description: 欢迎在校同学们参与Nacos开源之夏,社区导师手把手让**你的代码被社会广泛复用,来赚取最高12000奖金,可**推荐入职/实习你心意公司,**又拿钱又成长又有价值**,你还等什么呢?报名马上截止,快来参与Nacos开源之夏。
date: "2024-05-06"
author: Nacos开源之夏
category: activity-preview
---

# Nacos开源之夏2024,贡献社区赢取12000奖金
欢迎在校同学们参与Nacos开源之夏,社区导师手把手让**你的代码被社会广泛复用,来赚取最高12000奖金,可**推荐入职/实习你心意公司,**又拿钱又成长又有价值**,你还等什么呢?报名马上截止,快来参与Nacos开源之夏。

## 开源之夏是什么?
开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励**在校学生**积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。
活动联合国内外各大开源社区,针对重要开源软件的开发与维护提供项目任务,并面向全球高校学生开放报名。
学生可在本活动中自主选择感兴趣的项目任务进行申请,并在中选后获得该开源项目资深维护者(社区导师)亲自指导的机会,完成项目并贡献给社区后,参与学生还将获得开源之夏**活动奖金****结项证书**

## Nacos&开源之夏2024
Nacos被评为2021Github年度**全国社区活跃度第六**,Nacos开源产品定位是更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,用云原生方式解决分布式领域核心问题。
自2018年孵化并开源以来,共收获**29.1K的star**数,**12.5K的Fork**数,在开源中国发布的 2021 年度 OSC 中国开源项目评选中,Nacos 被评为**云原生领域人气指数 Top5 **的项目、InfoQ 2022年度 **十大开源新锐项目**、2022开源项目成熟度评估**优秀贰级**,开放原子2023**年度生态开源项目**,2023开源创新榜 **优秀开源项目**,发布电子书《Nacos 架构与原理》**20w+阅读****5w+下载量**,现已被大量微服务架构的软件公司选型作为其服务注册与发现中心。目前在国内服务注册中心及配置管理领域中**市场占有率排名第一**
此次Nacos社区开放的题目中既包含了Nacos API架构相关的课题,也包含了功能更新相关的课题,同时还包含了具有挑战性的新技术探索的课题,欢迎同学们积极参与。

## 参与Nacos开源之夏条件

- 本活动面向年满 18 周岁的高校在校学生。
- 暑期即将毕业的学生,只要申请时学生证处在有效期内,就可以报名活动。
- 中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告(学信网)或在读证明。
- 外籍学生参与活动时需提供护照,同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。

## 参与Nacos开源之夏,你能获得什么?

1. **【你的代码被社会广泛复用】** 你的代码可能会运行在上万家企业核心业务逻辑中,帮助企业解决问题。
2. **【赢得最高12000奖金】** 奖金总额根据项目难度分为进阶 12000 元、基础 8000 元(注:奖金数额为税前人民币金额)
3. **【社区核心人员辅导快速成长】** 只要你报名被选中,每个题目的导师会精心手把手教你融入社区,帮助你完成题目的设计以及最终的落地。
4. **【推荐入职/实习】** 在本次编程之夏项目中表现优秀同学,可推荐入职/实习 你心意的公司工作。
5. **【额外获得社区礼包】** 所有参与本次编程之夏项目的同学,均可获得Nacos社区大礼包。

**百分百有奖品拿哦**,现在唯一的问题是时间不多了,赶紧上车报名,截止报名时间是6月4日,3个核心题目,快点来报名参与Nacos编程之夏吧。

## 课题&报名方式
点开Nacos开源之夏的[链接](https://summer-ospp.ac.cn/org/orgdetail/ab188e59-fab8-468f-bc89-bdc2bd8b5e64?lang=zh) 选择你喜欢的题目,Nacos社区围绕NacosAPI架构相关的课题、SDK功能更新相关的课题及挑战性的新技术探索,具体如下:

- [拆分Nacos控制台使用的AdminAPI和客户端使用的openAPI及鉴权功能](https://summer-ospp.ac.cn/org/prodetail/24ab10309?list=org&navpage=org)

> 拆分当前Nacos控制台使用的AdminAPI 和客户端使用的openAPI,使得Nacos控制台不再依赖Nacos客户端所使用的openAPI进行访问;同时修改默认的鉴权插件,将两类接口的鉴权流程独立控制。
- [演进Nacos-Python-Sdk,添加缺失的新功能](https://summer-ospp.ac.cn/org/prodetail/24ab10311?list=org&navpage=org)

> 基于python sdk当前,实现python sdk 相比于 java sdk和go sdk中 缺失的功能,其中包括但不限于RAM鉴权的支持、TLS支持、配置加密、配置灰度等功能;
- [Nacos 支持 Java native-image 运行方式](https://summer-ospp.ac.cn/org/prodetail/24ab10385?list=org&navpage=org)

> 让Nacos的Java客户端和服务端,都能够通过native-image的技术启动并稳定运行,以提高Nacos的启动速度和运行效率。
具体流程请参考[学生指南](https://summer-ospp.ac.cn/help/student/)
请注意找导师沟通截止流程时间,优先更导师沟通,能帮助你更好的了解题目。
想要报名的同学,请用钉钉扫码加入Nacos开源之夏2024钉钉群,方便大家交流题目内容。
![开源之夏2024交流群.png](/img/blog/activity-preview/ospp2024.png)

## 参考资料
Nacos Github:[https://github.com/alibaba/nacos](https://github.com/alibaba/nacos)
Nacos 官网:[http://nacos.io](http://nacos.io)
开源之夏官网:[https://summer-ospp.ac.cn/org/orgdetail/ab188e59-fab8-468f-bc89-bdc2bd8b5e64?lang=zh](https://summer-ospp.ac.cn/org/orgdetail/ab188e59-fab8-468f-bc89-bdc2bd8b5e64?lang=zh)
为了让同学们更好地了解Nacos,我们提供了[电子书](https://www.yuque.com/nacos/ebook)供大家阅读学习。
同时如果同学们对其他领域项目感兴趣,也可以尝试申请,例如:

- 对于**微服务注册发现和配置管理**有兴趣的同学,可以尝试填报[Nacos](https://summer-ospp.ac.cn/org/orgdetail/ab188e59-fab8-468f-bc89-bdc2bd8b5e64?lang=zh)开源之夏;
- 对于**微服务分布式事务**有兴趣的同学,可以尝试填报[Seata](https://summer-ospp.ac.cn/org/orgdetail/064c15df-705c-483a-8fc8-02831370db14?lang=zh)开源之夏;
- 对于**微服务框架和RPC框架**有兴趣的同学,可以尝试填报[Spring Cloud Alibaba](https://summer-ospp.ac.cn/org/orgdetail/470497a3-dbd2-4780-8ca5-035d62ffedae?lang=zh)[Dubbo](https://summer-ospp.ac.cn/org/orgdetail/a7f6e2ad-4acc-47f8-9471-4e54b9a166a6?lang=zh) 开源之夏;
- 对于**云原生网关**有兴趣的同学,可以尝试填报[Higress](https://summer-ospp.ac.cn/org/orgdetail/1f8ea42c-86c9-46b8-b1f5-344de5741ef0?lang=zh) 开源之夏;
- 对于**分布式高可用防护**有兴趣的同学,可以尝试填报[Sentinel](https://summer-ospp.ac.cn/org/orgdetail/aaff4eec-11b1-4375-997d-5eea8f51762b?lang=zh) 开源之夏。

110 changes: 110 additions & 0 deletions src/content/blog/case-authorization.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
title: Nacos 安全使用最佳实践 - 访问控制实践
keywords: [Nacos、安全、访问控制]
description: 在4月13日(周六)在北京阿里中心 的 云原生开源沙龙北京站 中, Nacos的Committer 柳遵飞(翼严)分享了Nacos 安全零信任实践,从原理上介绍了Nacos 在 传输安全、存储安全和访问控制上的实践和应用。 本文在此次沙龙的基础上,更加详尽的阐述如何开启使用Nacos的访问控制、以及如何避免和修复部署环境中Nacos的访问控制风险和漏洞。
date: "2024-04-28"
category: case
---
# Nacos 安全使用最佳实践 - 访问控制实践

**4月13日(周六)在北京阿里中心****云原生开源沙龙北京站** 中, Nacos的Committer 柳遵飞(翼严)分享了[Nacos 安全零信任实践](https://nacos.io/blog/nacos-gvr7dx_awbbpb_sdtk4vkbson424zn/?source=blog),从原理上介绍了Nacos 在 `传输安全``存储安全``访问控制`上的实践和应用。

本文在此次沙龙的基础上,更加详尽的阐述如何开启使用Nacos的`访问控制`、以及如何避免和修复部署环境中Nacos的`访问控制`风险和漏洞。

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

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

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

如果有需要也可以考虑迁移至[阿里云MSE提供的Nacos云服务](https://www.aliyun.com/product/aliware/mse?spm=nacos.cloud.topbar.0.0.0),可以更简单、方便的解决安全风险,不仅支持企业级鉴权能力,还支持集成配置信息加解密能力、数据传输链路TLS加密,支持 [平滑迁移](https://help.aliyun.com/zh/mse/user-guide/migrate-applications-from-self-managed-instances-to-mse-microservices-registry?spm=a2c4g.11186623.0.0.76e17b26TS1Abr) ,欢迎[免费试用](https://free.aliyun.com/?searchKey=nacos&spm=nacos.cloud.topbar.0.0.0)

## 风险项检查和修复的步骤

### 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.key``nacos.core.auth.default.token.secret.key`
2. 镜像部署的Nacos,环境变量为`NACOS_AUTH_TOKEN`
5. 检查是否配置了`server.identiy`的默认值`serverIdentity``security`
1. 非镜像部署的Nacos,配置文件中配置项为`nacos.core.auth.server.identity.key``nacos.core.auth.server.identity.value`
2. 镜像部署的Nacos,环境变量为`NACOS_AUTH_IDENTITY_KEY``NACOS_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中存在上述开关为关闭、默认值的情况,建议尽快按照以下步骤开启鉴权,修改默认用户名密码和默认值,避免风险;

### 1. 开启Nacos鉴权访问控制步骤
> 注意:**开启Nacos鉴权能力,就会拦截检查所有访问请求,请提前配置好客户端鉴权信息**;为减少用户在开启鉴权和修复默认值导致的风险过程中对应用造成的影响,Nacos社区提供了一个通用的操作步骤。
> 对于已经开启了鉴权功能,但仍然在使用的`token.secret.key`默认值、`server.identiy`默认值、默认用户名密码的用户,可以**先临时关闭鉴权功能**,同样使用下列步骤**重新开启鉴权功能**,来避免使用默认值造成的安全风险和影响。
#### 1.1. 修改配置文件
> 该步骤是提前修改Nacos中`token.secret.key``server.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.key``nacos.core.auth.server.identity.value`,将其设置为一个自定义的键值对字符串,并确保所有Nacos节点中的该配置值保持一致,同时**避免使用老版本的默认值**`serverIdentity``security`
##### 1.1.2. docker镜像部署

1. 【修改token.secret.key】给容器添加环境变量`NACOS_AUTH_TOKEN`,将其设置为一个自定义的Base64字符串,并确保所有Nacos容器的该环境变量保持一致,同时**避免使用老版本的默认值**`SecretKey012345678901234567890123456789012345678901234567890123456789`
2. 【修改identity.key】给容器添加环境变量`NACOS_AUTH_IDENTITY_KEY``NACOS_AUTH_IDENTITY_VALUE`,将其设置为一个自定义的键值对字符串,并确保所有Nacos容器的该环境变量保持一致,同时**避免使用老版本的默认值**`serverIdentity``security`

修改完成后,重启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`用户的密码为自定义密码;
### 2. 避免Nacos访问控制风险和修复Nacos访问控制漏洞
#### 2.1. Nacos未授权访问风险
若您的Nacos集群存在Nacos未授权访问的风险,说明部署的Nacos集群没有开启访问控制功能,可以通过上文介绍的[开启Nacos鉴权访问控制步骤](#chNTD),开启Nacos的访问控制能力,来避免该风险。
#### 2.2. Nacos 默认密码风险 & Nacos 默认token.secret.key 风险 & Nacos 默认server.identity风险
若您的Nacos集群存在上述3个风险,说明您的集群中配置了对应的默认值,同样可以通过上文介绍的[开启Nacos鉴权访问控制步骤](#chNTD)的,开启Nacos的访问控制能力,来避免该风险。
#### 2.3. Nacos 认证绕过漏洞(CVE-2021-29441)
若您的Nacos集群存在Nacos 认证绕过漏洞(CVE-2021-29441),说明部署的Nacos集群版本过低,低于`1.4.1`版本,建议将Nacos的版本升级到`1.4.1`版本以上,建议升级到最新版本,同时进行上文介绍的[预检查](#bS7Dh),检查是否存在默认值的风险。
### 3. 如何排查和清理黑客留下的后门用户
> 若您的Nacos集群为新部署的集群,则可以跳过此操作。
在您的Nacos集群限制网络访问,打开鉴权,并修复访问控制的风险和漏洞后,已经有了一定的安全防护能力,消除了大多数的数据泄漏风险,最后您还需要排查一下是否存在之前黑客留下的后门用户,以及如何清理掉这部分后门用户:

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


Loading

0 comments on commit bef0e70

Please sign in to comment.