开发者学堂课程【MSE Nacos配置安全最佳实践:MSE Nacos 配置安全最佳实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/969/detail/14890
MSE Nacos 配置安全最佳实践
内容介绍
一.Nacos 安全漏洞事件
二.安全保护手段
三.Nacos 配置中心介绍
四.Nacos 配置中心架构
五.黑客攻击 Nacos 的途径
六.防护攻击手段
七.鉴权演示
八.微服务框架接入 MSE Nacos
九.MSE Nacos 安全的最佳实践
一、 Nacos 安全漏洞事件
Nacos安全漏洞事件,主要就是一个安全工程师,他发现了一个 Nacos的安全漏洞,那么因为该漏洞是公开的,所以已经被清空了,可以大概浏览一下整个事件发生的一些过程,可以参考当中的一些讨论。
回到 Nacos安全漏洞,它的影响面是Nacos server小于1.4.1的这么一个版本,这个漏洞的发生,它本身是提供了一个配置鉴权的能力的,那么开始开启鉴权之后,用户其实是需要携带着usename和password这样的一个认证信息来访问max server,这本质上来说是没什么问题的。
但是由于开源 Nacos的一个实现问题,它使得攻击者就可以绕开这个认证。相当于是通过走后门的形式就可以攻击到 Nacos server。
一个漏洞其实本质上来说可以认为是一个后门,由于 Nacos是开源的一个特性,它可以很好的去被一些攻击者所发现,那么这个漏洞在1.4.1之后的版本也迅速被修复了。
还记得当时很多的一个公众号,包括博客新闻都开始报道了这件事儿,作为Nacos使用者发生了安全漏洞以后,并不是意味着这是一场一场灾难,因为常规的一个的一些常规的安全保护手段,很多公司都采取了。
二、安全保护手段
1.禁止开放公网
在大多数的时候生产上部署的 Nacos其实是只能够被内网的一些服务器去访问的,他并没有开放一个公网的端口,所以说黑客想要攻击到 Nacos,那就必须先进入到vbc内部。那么这个相对而言是比较困难的。
2.增加安全组和 acl 等白名单网络限制
如果是一些测试期权,开放的公网方便在开发环境进行一些调试,是也意味着的有这么一个被攻击的可能性,但是在暴露出公网的时候,就应该有这样的一个警惕性。
大多数情况下,对那些暴露在公网的ecs包括Nacos,都会配置上一定的一个安全组和acl从而对他的请求来源作为一定的白名单的一些限制。
3.开启 Nacos 鉴权的方案
开启 Nacos鉴权的方案来规避,即使是以后的一些漏洞都可以给它阻挡掉。 Nacos鉴权主要分为两个方面,第一个方面是开源 Nacos是怎么去做鉴权的。第二点是商业化的Nacos他是怎么样去做鉴权。
三、Nacos 配置中心介绍
1.什么时候用
在介绍鉴权方案之前,先对 Nacos的配置中心去做一个简单的介绍。第一点是会在项目的启动配置文件里面去使用 Nacos配置中心,从而达到一个把配置放在远程的效果。那么最常见的可能 Spin cloud框架,它所使用的application,properties都会出现。
第二点是可以把一些动态的功能开关放到分布式的一个配置的中心当中。
例如在大促的时候,可以把一些功能给降级掉,那么这样的功能是在运行时被关闭的,就可以通过 Nacos斯配置中心去实现。
第三点就是服务治理的规则,在使用一些微服框架,包括double,像swing cloud,他们本身都提供了一些服务治理规则,而这些服务治理规则通常都是放在配置中心当中的,而 swing cloud和double这样的一个微服框架,它都对 Nacos进行了一定的适配。
这三种场景是非常常见的三种场景。
那么理论上来说 Nacos斯的配置中心也可以被用做任何动态推送的场景,都可以用它来充当这么一个分布式配置中心的这么一个组件。
2.保证 Nacos 配置中心的安全性
把一些很重要的配置信息,例如像数据库的连接串,以及一些服务治理的规则,它是很有可能直接影响应用的一个运行时的。
一方面这些配置例如数据库连接上的一些密码,可能是一些私密信息,一些大促的时候的开关要一旦被攻破的话,那么可能是带来的后果是灾难性的。
防止配置它被篡改。其实就是分为读写两方面。
四、Nacos 配置中心架构
先来看这张图的右半部分,他介绍的是一个 Nacos的服务段的内核实现,可以看到节点1到节点3,它组成了一个 Nacos的集群。
可以理解这三台机器上面分别就部署着knocks server的一个应用,那么它们的背后会连接着一个配置持久化层。
通常情况下配置持久化存在max当中的实现,它其实就是一个my circle,三个节点当然也不一定是三个,在生产当中可以是5个,可以是7个,会把配置持久化保存在my circle当中,那么这三个节点内部,也会进行信息的相互同步,从而三个节点加上一个my circle共同组成的一个 Nacos的服务端。
再来看左边,是两类最典型的客户端,下面这部分,用户通过操作可以访问到无论是开源还是商业化,MSE的商业化,都提供了这么一个配置管理控制台的这么一个入口,通过配管理控制台去修改 Nacos的配置,那么这更多的是一个站在人的一个视角主动去维护,往上看,写到了一个 Nacos的client,那么更多的时候是被代码层去使用的。
那一种情况是可以直接去使用 Nacos的SDK去进行配置的获取或者是配置的写入,也有可能是一个微服务治理框架,它集成了Nacos,从而进行一个配置的读取,监听以及更改。
这张架构其实不需要太深入的去理解,但是了解这个架构可以更好的去了解如何去进行 Nacos的安全防护。
五、黑客攻击 Nacos 的途径
可能泄漏端 |
攻击手段 |
Nacos 客户端 |
未认证授权用户通过客户端获取/修改配置 |
控制台 |
未认证授权用户通过控制台获取/修改配置 |
Nacos 集群内 |
伪装成 Nacos 集群的节点获取/修改配置 |
持久化层 |
直接查DB,获取/修改配置 |
用户常见的使用 Nacos客户端的一个形式,第一个是 Nacos的一个客户端,第二个是 Nacos的控制台。像刚才的Nacos安全漏洞,其实它通过一定的手段绕开了一个 Nacos的鉴权行为,他可以未经认证,也没有拿到授权,就可以通过这种非法的途径去获取,甚至是修改配置。
Nacos集成内和持久化成并不常见,但是在极端情况下,它也是有可能会被攻击到的。如果攻击者侵入到了vbc内部,但是他没有办法去获取到aksk,他还是没有办法通过 Nacos客户端或者是控制台来获取到配置的,但是它可以通过把自己伪装成一个Nacos集成的内部的节点,等待着其他的真正的Nacos的节点给它进行信息的同步,它也能够获取到配置。
那么还有一个更简单的方法就是Nacos背后是有一个持久化层的,甚至黑客它攻击到这个vbc内部以后,它可以直接去DB里面去获取配置,甚至是修改配置。