开发者学堂课程【容器安全与 Palo Alto Networks 解决方案 :容器的网络安全(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/628/detail/9885
容器的网络安全(二)
四、自动监控网络事件和攻击
警报或阻止恶意攻击,如图所示
Surface 容器,主机名,源,规则,响应和事件响应数据
//另外一个模块,就是进行监控,一旦有任何的这样一些网络攻击事件,或者说是恶意的 surface 容器,这种情况发生的话,在这个 monitor 这里面会自动产生一些告警。
比如说在右图里面可以看到这样一个镜像。用这些镜像产生的这个容器,然后,某一个容器的 ID 是哪个,是哪一个容器。然后目前正在被什么样的一个手段进行攻击。
然后,容器所在的这个主机的名字是多少,包括可以看到,执行哪些命令。包括比如说,想去上传一个恶意的文件也可以去通过防火墙对这个文件,进行一些过滤。所以这是一个非常简单直观简单又非常容易配置的这样一个解决方案。
五、演示内容
网络模型的自动学习
容器东西向流量的控制
容器南北向流量的控制( WAF )
六、代码演示
运行的是一个 DB 的服务,user DB 的 service 的地址是多少。
可以看到 service class 的 IP,当然也可以直接去访问那个 pod 的地址也是可以的,直接访问这个 service的IP。
修改 pod,其实这里现在是用网络的这种方式进行保护,Process 这种层面去保护这样一个 exec 进去的,可以做到任何这些事情,所以整个网络容器的安全,是一个多层的防护,有不同的层面,即使是攻克了一层了以后,其实还有很多层的不同层的保护。整体地对容器的环境进行一个完全的加固。
现在登录到了 Sharing a box 的容器里面,进入这个地址。比如输入 DBS,可以看到里面的这台主机里面的 User DB的里面的一些数据库的一些信息。
然后刷新一下,发起了一个连接,它的端口是标准的端口,它自动监测连接,区别在于,绿色表明是机器学习处于正常状态,从来没有见到过的网络的访问。
因为,在容器的这个环境中,它特别适合用机器学习的这种模型,在容器中,设计出来,其实只是做一件事情,比如在网站的服务里面,只有它会来访问,User 来访问这个 user DB。其他人在设计的时候,就没有设计让其他人可以来访问这四个字。
所以,一旦把这个模型固定好了以后,其实任何其他的一些异常的这些网络流量,通常可能都是一些攻击,因为容器的环境不像传统的这些虚拟机也好,主机也好,一台主机可能会需要做很多事,会非常的一些复杂,所以很难进行一些模型的建立。
那在容器或者是在这种微服务的这种架构下面,一些行为就非常好判断,也非常好去设计,这也是做容器安全第一必须要注意的这样一个点,同时,也是做容器安全这个网络方面,也是非常好利用的这样一个特色。
也就是这些异常的这些流量,非常容易被被察觉到被看到。所以容器的网络这种架构,它有坏的地方,也就是说它的数量,它的端点攻击面会非常大,比传统原来的这种情况下,会多很多很多倍。
但是,由于一个容器,它只专注于只做一件事情,这也是微服务架构的宗旨,所以,其实在安全方面也带来了很大的一个便利性。
在 event 的日志里面,比如 CNF 这四层的这样一个防火墙,可以看到,在刚刚发起了这样一个27017的访问,状态是alert,因为在这个防火墙的策略里面,设的是 alert。
退出去,同时,可以很方便的去 delete 报告,因为这是一个异常的操作。然后,对策略进行 prevent,那这样的话,任何在学习到的这样一个极限之外的访问就会被组织,比如说,去访问服务,刚才试了发现就连不到。
然后刷新一下,在这个大图上,可以看到一个红色的一个访问,那也就是代表,这是一个被 denied 的连接。在这个雷达图里面也可以实时显示出,有这样一个潜在的一个攻击。同时,在这个 event 里面,可以看到之前是 alert,这个网络的连接,就没有成功。
当然,在这里的话,也可以做一些白名单,比如说,在这个架构里面,payment里面会去有一些比如信息,可能需要一个外界做验证,首先可以手动地添加白名单,然后,选择 images,注意,这里是选的一个镜像,并不是选这个pod,因为 payment 有很多个 pod,不可能一个个去选。但是,如果选了这个 payment 的。
这个镜像的话,也可以认为它是一个微服务,网络情况的话,其实就是 namespace。
也就是说如果,会在不同的 namespace 下面产生不同的恢复。也可以颗粒化,比如说这个策略只想在 namespace 里边的这些服务,用镜像产生的这些服务,进行公示,提供了更大的力度的这样一个设置。然后 source 定了以后,这里需要去订一个 destination,针对一个网站目的地址,注意,这个容器向外发生,而且如果关掉的话,可能会影响目前正常的一些应用,但是关掉的话,那可能要手动的去把这些全都加进去会比较慢。
然后做策略,如果这些已知的,再加上明确列出的白名单的真正的目的地址的话,做的策略如果是 prenvent 或者说alert 报警会比较麻烦。