随着容器的广泛应用,容器的安全问题,也需要关注。例如容器中引用的组件,容器之间的隔离,甚至容器中的进程等等。因此对容器的管理,也会在安全防御中起着至关重要的影响,正好笔者无意中发现了NeuVector这款开源软件,在测试中发现,确实是一个功能丰富且强大的容器开源软件。
一 安装
关于NeuVector的安装,可以参考官方文档:https://open-docs.neuvector.com/deploying/kubernetes,或者这篇文章:《云原生安全平台 NeuVector 部署》,笔者在部署中遇到了一点点权限问题,不过按照相关提示设置权限也完成了安装,总体来说,安装还是比较容易的。安装完成后登录即可。
二 主要功能介绍
NeuVector的功能,也可以参考官方文档,笔者仅仅测试了几个功能,效果还是比较不错的
2.1 检测出入口暴露风险
该功能主要可以检测出对外暴露的pod,以特权或root运行的POD等。例如我新建一个influxdbPOD,内容如下图,网络为hostNetwork,外部可以之间访问到fnfluxdb的8086端口:
此时NeuVector便识别出该POD端口可以对外访问,如下图所示:
再建立个使用特权容器运行的POD,如下图所示:
在下图中,也可以看到已经识别到使用了特权模式
2.2 WAF功能及网络可视化功能
网络可视化功能可以方便之间观察各组件之间的网络连接情况,可以查看会话,甚至进行数据包抓捕,极大的方便了管理。而WAF功能更是可以给组件提供保护,不过目前只支持正则表达式的模式。在下图中,使用test-con1及test-web1进行测试,在未连接前如下图所示:
在test-con1中访问test-web1
可以看到,连接的情况:
这时,配置WAF,并将WAF规则引用于test-web1中,内容为:若URL包含lion则进行后续处理
此时再次访问test-web,并在url中包含关键字lion
可以看到,连线变成了黄色,并产生了安全事件的告警:
同时,可以在安全事件中的显示数据包中看到对应的内容:
但此时仍可以正常访问test-web1的原因是因为test-web1处于学习(或者监控)模式,若将该模式改为保护模式,则无法再进行访问,WAF功能已经拦截,并产生拦截告警,同时,网络活动中可以看到连线已经变成红色。
2.3 准入控制
在生产环境中,往往需要满足一定的安全条件才可以进行相关的发布操作,因此可以使用准入控制这一功能完成上述需求。这里以不可以以特权模式运行pod为例:
并将状态设为启用,并将模式改为保护:
此时再次建立另一个特权模式的POD ,便会提示无法创建,同时也会产生对应告警,如下图:
2.4 其他功能
除以上功能外,NeuVector还可以学习到容器中的网络连接,进程等相关信息,可以针对这些信息,设置相关的规则,进行后续的处理。
例如识别进程信息:
识别网络规则:
除此之外,还可以对容器/系统/集群/代码仓库进行扫描,
还可以进行合规性的扫描:
当然,以上的展示的只是笔者个人关注一部分,如果读者感兴趣,可以继续深入研究。
三 总结
通过上述的演示,笔者认为NeuVector确实可以解决实际生产中的容器安全问题,不过笔者也仅仅也是在实验环境中使用,在生产环境中,笔者了解到两个可能存在隐患的地方:
1 针对系统的漏洞扫描,是需要将整个系统转入内存中进行,因此如果POD过大,可能会对系统产生一定的资源消耗问题。
2 WAF,DLP 等功能,会对应用产生性能影响,如果配置错误,很可能也会演变为安全事故,因此这些功能也应该谨慎使用。
综上所述,个人觉得,这款软件确实可以称得上是一个容器安全解决方案了,值得推荐。不过这仅仅是一个工具,好比一把剑,普通人,只能瞎甩,而令狐冲可以使出独孤九剑,因此重要的更是使用的人。