容器安全风险和全生命周期安全防护研究
摘要:随着数字经济的高速且蓬勃的发展,很多原有的业务模式已经适应不了现在的发展趋势,为了满足现有的业务发展的需要,一种重要的轻量级虚拟化技术-容器技术应运而生。它改变了传统的开发、测试和交付模式。但是容器技术发展在给行业建设发展、规划、部署、运维提出新方式的时候,也带来了一些新的安全挑战。本文通过分析目前容器化技术面临的安全风险,提出一些基于容器技术的容器全生命周期的安全防护对策建议,为容器云平台的建设提供一些安全建议,以期望为今后更多企业的发展提供参考。
关键词:容器技术;容器安全风险;安全防护;Docker 镜像瘦身
引言
容器化技术已成为构建云本地应用程序和服务平台时的一项重要支持技术,因为它易于部署、仅在几秒钟内即可完成部署、易于移植、可灵活扩展且处于活动状态。但是随着容器技术已经被社会普遍认可并应用广泛的今天,容器及其容器周围工作环境的安全性已经变成了急需深入研究与解决的重要问题。作为容器正常运行的基石,容器的镜像安全性一直以来受到用新闻女郎
户的重视,有调查报告表明,在Docker Hub中多达百分之三十的官方镜像含有高危漏洞,接近70%的镜像有着高危或中危漏洞。在使用容器镜像的时候,除了镜像中应用漏洞需要重点关注之外,对于镜像内的其它脆弱性问题,同样不容忽视,比如,镜像内是否暴露了账号密码等信息、是否包含了秘钥文件、是否提供并暴露了ssh服务、是否运行了禁止运行的命令、公共的镜像中是否有木马、病毒等等。
此外,由于容器在技术实现上采用了主机内核,并通过共用主机资源的方法,因此面向容器的拒绝服务攻击(DoS)威胁程度更高。例如,在默认状况下容器中只能用主机上的所有存储器,如果某个容器以独占方式访问或消耗主机的大量资源,则该主机上的其它容器就会因为缺乏资源而无法正常运行。
1 Docker容器安全机制
Docker采用了多种Linux内核安全机制来约束容器内的进程。Docker利用Linux的命名空间(Namespaces)为容器提供独立的工作空间,与其他容器进行资源隔离;同时Docker利用Cgroups机制,限制每个容器可以访问哪些资源,确保多容器环境下能正常使用系统资源;Capabilities定义了CAP_CHOWN、CAP_KILL等多种权限(不同版本略有不同,5.16-
父母爱情安诺怎么死的rc6版本中定义了40个权限),将超级用户权限进行细分,容器默认只有其中的14种权限;基于Seccomp机制,Docker可限制容器内系统调用;SElinux和AppArmor属于强制访问控制,限制可执行程序的访问控制权限,如读写功能;内容信任机制通过发布者签名和使用者校验的方式确认镜像的完整性。
2 Docker容器安全风险
2.1 Docker网络安全风险
在容器易于管理的虚拟化网络环境中,网络安全问题更加复杂。Docker容器的网络通信没有精细的控制机制,无法完全访问Internet,并且在网络上时容易受到网络访问。由于不能限制同一主机上容器之间的网络访问,因此攻击者可以通过一个容器访问主机上的其他容器,这可能导致许多安全问题,例如: ARP欺骗、MAC-Pang攻击等。此外,Docker容器网络容易受到DoS(拒绝服务)攻击,这会减少其他容器中的网络处理量,甚至会耗尽主机的网络带宽。
2.2容器隔离安全风险
黄曼老公与虚拟机相比,Docker缺少虚拟化层,在文件隔离方面并不完善,如容器仍然可以访问主机系统的/proc和/sys目录,攻击者可以获取/proc/kallsyms中的内核符号来构建针对内核漏洞的攻击。针对存储资源,Cgroups未对主机存储资源进行限制。若容器不断向存储空间写入数据直至耗尽,将造成主机或容器的拒绝服务。
2.3 Docker容器镜像风险网曝青簪行换男主
2.3.1基础镜像的安全性
镜像是一层一层构建而来,很多操作系统、应用程序的基础镜像构建都是对应的官方与Docker Hub构建的。我们在使用这部分镜像需要注意的是基础镜像包含安全漏洞,如CentOS 5.11与CentOS 6.6的基础镜像中就包含CVE-2014-6277漏洞;其次就是我们使用存在供应链攻击的基础镜像或非官方基础镜像(Bad Image, 恶意镜像),这些镜像中可能包含恶意程序、后门等。
2.3.2镜像构建的安全性
镜像构建的方式有两种,第一种是拉取基础镜像,然后通过基础镜像创建容器,在容器中
执行相应的操作,最后将容器打包成镜像并上传到镜像仓库以备后期;第二种是通过Dockerfile来构建镜像。最小权限原则:软件安装、端口暴露;Dockerfile文件包含敏感信息。
2.3.3镜像仓库的安全性
在企业内部,随着容器化的不断发展,团队会构建私有镜像仓库来存储基础镜像、业务镜像等。镜像仓库是否使用HTTPS:这一点上如果私有仓库不会通过互联网,只通过局域网对镜像仓库即可进行操作则可不予理会;镜像仓库对镜像的校验能力:目前开源的私有镜像仓库都具备这个能力,但是部分需要手工配置。
2.4 虚拟机主机安全风险
山茶花歌词当然,一般来说Docker容器出现安全漏洞时,这会使得接入和管理虚拟机的密钥被被恶意盗取。那么此时虚拟机的动态创建、迁移(冷迁、热迁)都会伴随着虚拟机安全措施的自动创建和自动迁移,如果Docker 容器有泄漏,可能会导致容器中未修补的服务受到攻击。更容易受到攻击的服务是FTP、SSH 等。攻击可能会导致密码
3 容器全生命周期安全防护对策
3.1镜像安全防护
(1)镜像构建安全
探戈仅在容器业务上线后对其进行监控分析,抵御运行时的风险问题是远远不够的,容器安全应该具备shift left-安全左移的思想,在上线前早期阶段就能够定位安全问题,减少攻击面和潜在运行问题,因此在构建阶段,需要进行基础镜像安全检查,检查基础镜像中存在的安全威胁;同时在业务镜像的构建过程中检查镜像中的风险问题,并根据用户定义的风险阻断策略阻断不安全镜像的构建、提交仓库等devops流程;
(2)镜像存储安全
为确保镜像存储安全性,除了对镜像仓库本身的环境安全问题进行扫描之外,用户容器镜像在测试环境测试完成后经由第三方中转平台同步至生产环境的镜像仓库前,还需要对容器镜像进行专业的漏洞扫描,扫描完成后无风险的镜像正式进行投产使用,有风险的则先进行整改,再投产使用。同时为尽可能减少被攻击面,需规范镜像构建流程,要求业务镜像
必须基于镜像仓库中的基础镜像构建,不允许从外网仓库下载镜像构建。从安全管控角度,可检查构建的业务镜像是否基于基础镜像构建。实现规范的构建流程能够避免来自外网的风险镜像,极大程度避免镜像中存在木马病毒和webshell风险。
(3)镜像分发安全
目前的Docker安全性技术开发工具有不少,从多个角度来保障容器技术的安全性,如执行时监测预警、取证、预发生分析、装载设备配置校验、信任管理等。我们将重点关注于镜像在执行前后的扫描技术检查与审核,以及预发生分析之类的技术开发工具。这一类技术开发工具一般是从CVE漏洞和恶意镜像二个技术方面来对镜像实施扫描方法。在镜像推送阶段,需要关注生产环境中镜像是否存在风险问题,如 镜像非devops流程构建、镜像来自不安全的外部镜像仓库等场景。