《Docker容器安全的分析研究.docx》由会员分享,可在线阅读,更多相关《Docker容器安全的分析研究.docx(12页珍藏版)》请在第壹文秘上搜索。
1、。引言云计克作为最近几年计算机与互联网界的焦点,得到众多企业和科研机构的青睐。虚拟化技术作为云计算的关键技术,随若云计算的使用也得到了迅速发展。虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机.虚拟化既可以通过硬件模拟来实现,也可以通过操作系统来实现。目前主流的虚拟化技术如XEN、VMware以及KVM都是基于虚拟机的平台虚拟化技术.这些方案通常因为虚拟机镜像普遍较大、需要自C1.独立的完整的操作系统(GUeStOS)、占用的硬件资源多等特点,对手大规模的集群部署适应性较差。DoCker是基FG。语言实现的云开源项目,诞生2013年初。作为一种轻量级的虚拟化技术,Docker在运行应
2、用上和传统的虚拟机方式相比有显著的优势:DoCker容器运行很快,后动和停止可以在秒级实现,相比传统的虚拟机方式要快很多。DoCker容器对系统的资源需求很少,一台宿主机可以运行多达数千个的容器,这在传统虚拟机是不可想象的“D。Cker通过D。CkerfiIe配置文件来支持灵活的自动化创建和部署机制,提高效率。随着Docker容器技术的大量使用,如何确保DoCker容渊的安全被看做DOCker容器使用的关键.1Docker安全性分析Docker是1.inux操作系统层面的虚拟化实现,其本质和运行在UnUX上的进程没有区别.目前D。Cker容器的安全性其本质上依赖1.inux系统本身Qocker
3、的安全主要通过以卜几个方面实现:1.inUX内核的命名空间机制提供的容器隔离安全。通过命名空间机制,可以使运行在同一台宿主机上的DoCker容器中的程序不会受到相互之间的影响,且有自己独有的网络栈不会被其他容器访问。1.inux控制组机制对容器资源的控制能力安全.IJnUX控制组机制可以确保同一台宿主机上的容器公平地分配宿主机的CPU、能盘和内存等资源,控制组机制也会保证容器发生异常时不会影响宿主机和其他容器的正常运行.IinUX内核的能力机制所带来的操作权限安全。1.inux提供了更加粒度化的权限访问控制,为保证容器的安全,我们使用DoCker容器时将会对容器的权限做出泮格的限制,限制其只能
4、使用容器功能所需的最小权限。虽然Docker已经在安全方面做出了诸多限制,但在使用中DoCker受制于自身缺陷存在以下几大类的风险“图1容器安全风险概括1.1 镜像安全风险DoCker镜像是DOCker容器的静态表现形式,容器运行时的安全取决于DOCker镜像的安全.DoCkerhUb作为DoCker官方镜像仓库,其中的DOCker镜像对上传者缺乏完善的监管,其版本、质量和安全对于使用者处于不可控状态。在Dockerfi1.e中如果不指定USER.DoCker将以root权限运行该容器,如果被攻击可能会导致宿主机的root权限被获取。DoCkerfiIe中使用涉及密码、密钥等信息,一旦被攻击将
5、会导致数据泄露。使用来源不安全的镜像,将导致Docker容得出现不可控的安全风险。1.2 容器虚拟化安全风险与传统虚拟机相比,DoCker容器没有独立的资源配疑,没有在系统内核层面进行资源隔离,因此存在资源隔离与资源限制不彻底的潜在风险.(1)容器隔离问题Docker容器和宿主机共享操作系统内核,DoCker容器与宿主机上其他容器或宿主机之间存在文件系统隔离、进程隔离和进程间通信隔离不到位的潜在风险.Docker容渊隔离安全风险问题主要存在以卜两种情况:攻击者直接攻击操作系统内核,造成宿主机上D。Cker容器出现安全风险,攻击者通过控制某一个Docker容器访问宿主机或其他容器非法获取数据。(
6、2)容器逃逸问题容器逃逸攻击指的是攻击者通过非法手段获取root权限,获得宿主机或其他容器某种权利卜.的命令执行能力,影响宿主机或其他容器的运行安全。(3)拒绝服务攻击DoCker容器与宿主机共享CPU、内存、磁盘空间等硬件资源,如果不对DoCker容器使用宿主机资源做出限制,攻击者可通过挟持某个容涔,使其耗尽宿主机的硬件资源达到使宿主机或其他容器暂停甚至死机的目的.1.3 网络安全风险Docker容器网络安全一直是容湍使用中面临的巨大问题之一。Docker网络由于其特殊的网络环境,相比于传统的网络安全更加严峻。(1)容器网络攻击DoCker容器有多种组网模式,提供/容器间通信、符主机容器间通
7、信、容器集群网络等功能。卜.面就几种主流的组网模式分析其潜在的网络安全风险。桥接模式是Docker默认采用桥接网络模式,侨接模式会在宿主机上创建一个docked)虚拟网柝,并将宿主机上所有采用这种模式的DoCker容器连接在dockerO网桥上,在这种模式卜所有的DoCker容涔都是比相可达的。桥接模式虽然对容器间互相访问提供了便利,但是由丁缺乏安全的管理机制,攻击者可通过广播风暴、嗅探、ARP欺诈等攻击手段,影晌宿主机和其他容馔的安全。MaCV1.AN是DOCker容器的网卡虚拟方案,在多租户场景卜,为每个租户单独虚拟出独自的网络从而达到隔离的目的。但由下同一虚拟网络环境下Docker容器之
8、间没有控制访问权限,攻击者仍可以通过广播风暴、嗅探、ARP欺诈等攻击手段,影响宿主机和其他容器的安全。Over1.ay网络作为目前最主流的跨主机数据传输和路由方案,主要用于搭建跨主机的容器集群网络.和上面两种组网模式一样,由于缺乏访问权限控制,Over1.ay仍然存在安全风险。因此,不管使用哪种组网模式,都存在容器间互相攻击的安全风险11.4 容器服务稳定风险Docker容器在提供服务时往往需要提供7X24的稳定服务,攻击者可能会从DoCker容器外部以及内部对服务发起攻击,造成服务不可用。(1)容器内部服务检定问题DoCker容器内部服务进程,可能在受到白身程序稔定或外界恶意攻击时停止运行,
9、导致服务区停,在生产环境中造成损失。(2)容器运行稳定问题DOCker容器运行在宿主机上时,可能因为外界恶意攻击被关闭或者删除擦.导致无法提供服务。2D。Cker安全机制实现2.1 容器镜像安全机制为保证DoCker容器镜像的安全性,从窗方镜像仓库获取到公共最小基础锢像后,需要使用安全扫描工具对卜我的镜像进行安全扫描,目前使用较多的工具包括DoCkerSecurityScanning.C1.air和TriVy等,可检测镀像中软件含有CVE漏洞“在生成可控的容器镀像之后为方便镜像的管理,需要搭建可控的私有锢像仓库。需要确保镜像仓库不被外界公网所访问,在拉取镜像过程中采用内容校验机制解决中途容器镜
10、像被篡改.为确保Docker容器中可执行文件和配置文件是可信的,在Docker容器每次启动前对可执行文件和配置文件进行CRC32校验,只有校验成功才能启动Docker容器“假设可执行文件及关键配置文件分别为F1.,F2,.Fn,D。Cker容器程序部署好之后计算一次所有可执行文件及关键配设文件的校验值C1.,并对校验值进行加密保存-D。Cker容器后动前对所有可执行文件及关键配置文件再次计算校验值C2.比对两次的校验值。流程设计如图2所示:图2容器镜像启动流程2.2 容器虚拟化安全机制在容冷架构中,在已有的CgrOUPs、NameSPaCe和内核能力机制上可通过增强操作系统内核层面的相关机制达
11、到Docker容器安全的资源管理.(1)资源隔离与限制Cgroups对DoCker容港的CPU、内存和盛盘I/O速度等资源项已经做出了限制,为防止某个容器耗尽宿主机上的馍件资源.在容器启动时,可以使用CPU.Memory.DeViCe参数对CPU使用率、内存占用率、磁盘读写速率进行限制。对磁盘使用容量限制,为每个容器创建单独用户,限制每个用户的磁盘使用S1.使用XFS等文件系统目录进行磁盘使用证限制。为每个容器创建固定大小的虚拟文件系统。(2)强制访问控制通过SE1.inux机制实现Docker容器对宿主机资源的访问限制,在启动DoCker容器时可通过dockerdaemon-se1.inux
12、-enab1.ed=true命令启动SE1.inux2.3 容器网络安全机制(1)容器流量限制在生产环境中宿主机通常会部署成百上千个DoCker容器为多租户提供服务,为避免个别容潺抢占绝大部分的带宽,导致其他DoCker容器服务不可用,采用1.inux的流量控制模块trafficcontro1.1.er对容器网络进行流量:限制(2)白名单访问控制为防止恶意的网络攻击,保证DOCker容涔的网络安全,可以通过配置白名单策略实现网络访问控制.白名单的访问策略,可以由IinUX白带的防火墙机制实现。(3)禁止容器间通信当Docker容器单独提供服务而不需耍多个D。Cker容器组成微服务时“为防止Do
13、cker容器间恶意攻击需要禁止容器间通信,可通过命令dockerd-icc=fa1.se完成设置.2.4 容器服务程序安全机制DoCker容器最主耍的功能就是提供健壮、稳定的轻用级虚拟化服务.为保证DOCker容器内服务程序的桎定性,在容器内可由看门狗程序进行定期检杳。同时,可以建立一个容器管理中心,定期接收容器内心跳程序发来的心跳数据,并根据接收情况进行处理。(1)看门狗程序“看门狗”程序主要用作DoCker内服务的启动和检查工作.其主要工作流程如图3所示。图3看门狗程序执行流程步骤1:启动容器内服务程序。步骤2:定期检查服务程序的状态,发现服务程序挂掉后,上报记录问题到管理模块,重新启动服
14、务程序。步骤3:等待卜.一次检查。(2)心跳程序通过实现DOCker容器内心跳进程,向管理中心定期发送心跳和运行数据,达到容器内资源监听等目的。其主要流程如图4所示。图4心跳处理流程步骤1:Docker容器内心跳进程,定期向管理中心发送Docker容器CPU.内存使用率等数据。步骤2:管理中心接收DoCker发送的数据,对数据进行记录,若容器CPU、内存等数据长期超过设定的安全值,则需要对该DoCker容器进行检杳和资源歪新分配。步骤3:管理中心在超时时间内未接收到DOCker容器内心跳进程发送的数据。发送ICMP包到DoCker容器,若容罂无返回,则通知宿主机删除该容渊并重新创建。步骤4:ICMP包返回,则进一步通过IP地址和端口执行TCP检查,接收返网的检查结果,若检查结果成功则表示DoCker容器可用,否则通知宿主机捌除该容器并重新创建。3结语本文通过分析DOCker容器在使用中可能遇到的安全风险,给出/解决方案.在Docker容涔生产部署时,应全面考虑可能出现的安全风险,根据部署场景给出对应的安全需求分析,并结合DoCker容器的安全解决方案,形成容器安全应用最佳实践。