欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

公有云容器安全

来源:本站整理 作者:佚名 时间:2019-05-14 TAG: 我要投稿

IT技术在不断的进步,从虚拟主机技术出现后,我们可以方便快捷的在公有云上建立自己的生产环境,大大提升生产环境部署效率,记得以前一个做游戏的兄弟说,以前做一款游戏,生产环境部署,从服务器采购到真正上线最短也要1~2个月。而使用公有云虚拟机搭建也许1~2周就搞定。那么容器技术的出现,又进一步提升了开发上线的速度,也许你在公有云上搞定以上事情也就1~2天。在方便快捷的同时容器的使用量也在逐年攀升,经调查,公有云大约有40%用户正在使用容器技术,那么,容器安全你准备好了么?
0x01、深入研究
在开始讨论容器安全问题之前,我们先要搞清楚:为啥现有的安全解决方案解决不了docker安全问题?
先从应急响应的角度上分析,整理了近半年的应急响应事件:我们发现典型的容器攻击路线,攻击者一般通过各种web漏洞上传Webshell到容器中,然后发起反向链接,利用DirtyCow(脏牛)等漏洞进行提权操作,获得容器的控制权限,然后利用runC等对宿主机提权。
(1)Webshell检测:典型的场景,当docker启动Weblogic对外提供服务,有可能在负载均衡组件上嵌入WAF组件进行拦截,但是针对变形webshell检测也只有在运行才能真正检测到。很不幸的事,在docker中,我们没有运行任何安全防御手段。
(2)反弹shell检测:要想识别反弹shell,就必须对docker运行的进程对外连接做充分的检测,很不幸,目前的解决方案都是针对宿主机的,当然也可以通过部署到网络层的态势感知产品进行威胁情报外联关联,但是针对黑客新搭建基础设施,威胁情报也无能为力。
(3)本地提权检测:当weblogic用户运行的权限,无法满足黑客入侵的需求的时候,针对用户提权操作,我们监控docker用户的权限变化即可,很不幸,目前的解决方案都是针对宿主机的。
从以上案例分析,我们发现了一个很重要的问题,网络层、宿主机层我们的安全解决方案已经很成熟了,docker层内部的安全,基本上处于裸奔状态。
0x02、容器安全解决方案
从容器的整个生命周期来看,镜像构建阶段要对不安全的镜像源、不安全的环境配置以及存在的漏洞进行扫描,容器运行阶段,要检查容器运行时安全配置、Docker 、k8s 应用本身的安全配置以及宿主机安全。最重要的是在rasp状态下对docker层的进程、网络连接、账户的监控。
1、docker镜像漏洞扫描
我们先看一下docker目前部署架构是如何演变的。
传统的部署架构:

典型的容器部署架构:

但是在真实部署环境中,我们发现:

据不完全统计:每天大约有15个新增漏洞/每一万容器,当新的漏洞发布时我们如何快速的检测出来我们使用的docker组件中对应的CVE编号呢?在编辑构建时候的,我们就需要通过静态扫描,静态分析容器镜像中的组件的漏洞。需要产品定期收集漏洞数据并将其存储在数据库中,清理容器映像并为安装的软件包编制索引。如果任何漏洞与映像中已识别的软件包匹配,则程序可以向生产环境发送警报,报告或阻止部署。
2、合规检查
随着Docker的使用量大大增加,更好地了解如何安全地配置和部署Dockerized应用程序变得越来越重要。互联网安全中心发布了1.13 Docker Benchmark,它为主题专家提供了基于共识的指导,供用户和组织实现安全的Docker使用和配置。
该规定侧重于Docker特有的五个领域:
· 主机配置
· Docker守护程序配置
· Docker守护程序配置文件
· 容器图像和构建文件
· 容器运行时
这里列举一下,最佳实践的检测项。
容器运行时合规检查:
1、确保docker内部存在docker安全程序,例如:AppArmor,加固:docker run –interactive –tty –security-opt="apparmor:PROFILENAME" centos /bin/bash
2、docker默认权限检测,需要以下权限:AUDIT_WRITE CHOWN DAC_OVERRIDE FOWNER FSETID KILL MKNOD NET_BIND_SERVICE NET_RAW SETFCAP SETGID
3、确保Docker socket没有挂载到内部容器,检测:docker ps –quiet –all | xargs docker inspect –format '{{ .Id }}:Volumes={{ .Mounts }}' | grep docker.sock
4、确保不共享主机的用户命名空间,检测:docker ps –quiet –all | xargs docker inspect –format '{{ .Id }}:UsernsMode={{ .HostConfig.UsernsMode }}'
5、限制容器获得新权限请求,检测:docker ps –quiet –all | xargs docker inspect –format '{{ .Id }}:SecurityOpt={{ .HostConfig.SecurityOpt }}'
6、确保docker exec命令不使用user、privileged选项,检测:ausearch -k docker | grep exec | grep user
ausearch -k docker | grep exec | grep privileged
7、确保sshd不在容器中运行,检测:docker ps —quit,docker exec '$instance_id ps -el'
宿主机合规检查:
1、开启对宿主机docker文件和目录的操作审计功能:
/usr/bin/docker-runc、/usr/bin/docker-containerd 、/etc/docker/daemon.json、/etc/default/docker、docker.socket、docker.service、/etc/docker、/var/lib/docker
2、确保对docker daemon开启审计功能。
3、入侵检测
传统的入侵检测手段可以通过分析攻击链解决:

[1] [2]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载