一种基于Docker的可信容器安全加固方法

文档序号:9350280阅读:785来源:国知局
一种基于Docker的可信容器安全加固方法【专利说明】—种基于Docker的可信容器安全加固方法[0001]
技术领域
[0002]本发明属于互联网
技术领域
特别是涉及一种基于Docker的可信容器安全加固方'法O[0003]【
背景技术
】[0004]Docker作为时下最流行的轻量级虛拟化技术,正在给业界带来一场颠覆性的技术革命,随着Docker技术应用规模越来越大,领域越来越广,其暴露出的安全问题也显得日趋严重,诸如隔离机制不完善、特权过于集中、混乱的共享机制等,这些安全隐患已经成为阻碍着Docker发展的关键因素。从Docker已经被发现的各类安全问题可以看出:>Docker镜像及容器均存在被篡改的风险,同时不完全的隔离性允许容器之间的非授权通信,容器内部的恶意进程或恶意数据同样给Docker系统甚至宿主机带来风险。[0005]目前’针对Docker系统的防护方案主要有以下几种:(1)Docker系统本身依赖Linux内核的安全性,目前主要依赖的机制有Namespace和Cgroups,分别实现容器的隔离性和资源限制,但上述两种机制并不能做到完整的隔离,Docker系统扔然面齒被穿透的风险;(2)Docker官万推荐使用GRSEC内核补丁以提_安全性,这是一种Linux内核安全増强补丁,该补丁从宿主机的角度提高Docker整体安全性,对容器内部的防护却无能为力;(3)DanielWalsh等人在2014年提出使用访问控制系统加强Docker安全,以RedHat开发的SElinux系统为例,该系统在每个容器创建时为其打上唯一的标签,不同容器标签不同,容器之间以及容器和宿主机间默认无法互联,也就是说,标签不同的主客体之间所有操作都是被禁止的’这样就极大地提高了Docker容器的隔离性,但这种方法扔然没有关心Docker容器内部的安全性,Docker容器和镜像扔然面盛被篡改的可能。[0006]【
发明内容】[0007]针对上述问题,本发明提出一神基于Docker的可信容器安全加固方法。该方法利用可信计算、完整性度量技术,配合实时监控模块对基于Docker的容器系统进行加固,丛Docker配置文件、镜像、容器三个层面保护容器完整性J司时能对容器内运行的进程及容器通信行为进行监控,如此一来便可规避大部分安全风险,极大地提高Docker容器的安全,卜牛;--Lο[0008]本发明所采用的技术方案是;一种基于Docker的可信容器安全加固方法,用于对Docker容器系统进行安全增强,实现基于Docker的可信容器’应用于基于Docker的服务器集群中;该基于Docker的可信容器包含容器程序Docker、容器可信度量模块、进程监控模块和网络通信监控模块,其中容器可信度量模块包括可信启动子模块与文件度量子模块;其中Docker为容器程序主体,用于对各个进程监控模块的调用以及对容器镜像的可信度量,可信启动子模块用于实现镜像的完整性度量和容器的可信启动;文件系统监控模块用于对各个容器的文件系统的监控;进程监控模块用于通过设置黑白名单实现对容器内的进程的监控;网络通信监控模块用于对容器的网络连接的细粒度控刺,限制容器对外连接和容器间的连接;其特征在于,包括以下步骤:步骤1:容器的可信启动,其具体实现包括以下子步骤:步骤1.1:B10S加电启动搜索到MBRj读取配置信息,将控制权转给TrustedGRUB;步骤L2=TrustedGRUB加载系统内核,对Docker程序的可执行文件及关键配置文件迸行完整性度量,完整性度量通过之后,将度量结果存入PCL将控制权转给操作系统;步骤1.3:操作系统启动之后,启动Docker程序;步骤1.4:Docker程序启动之后,可信启动子模块启动,随即监控Docker关于镜像获取的命令;当Docker.获取到新镜像后,度量程序开始计算镜像的HASH基准值并加密存储;步骤1.5:接收到用户发出的启动容器命令时,首先读入存有HASH基准值的文性,用密钥将其解密,得到40位MSH值;然后再依据步骤L4中所述的计算镜像HASH基准值的方法再计算一遍镜像的HASH值;步骤1.6:将步骤L5中新计算得到的KASH值与步骤1.4中的HASH基准值进行对比,若两值相等则启动容器,否则不启动将弹框报告用户)提示镜像已被损坏;步骤2:容器启动后的文件系统监控,其具体实现包括以下子步骤:步骤2.?:启动容器之后,Docker对文件系统监控程序可执行文仲进行度量,验证完文件系统监控程序可执行文件的完整性后启动文件系统监控程序;步骤2.2:文件系统监控程序启动之后计算容器的文仲系统的读写层的HASH值;步骤2,3:对容器的文件系统的读写层的HASH进行加密作为基准值存储在以容器ID为文件名的文件中;步骤2.4:当经过预设的时间以后,文件系统监控模块对文件系统的读写层的MSH值进行解密,然后重新计算容器的文件系统的HASH值作为实捋度量值;步骤2.5:将步骤2.4中的两个HASH值进行对比;如果两个HASH值相等,则等待下一次度量文件系统直到删除容器;如果两个MSH值不相等,则说明度量值与基准值不一样,容器文件系统的读写层被篡改;如果管理员是合法更新了读写层文件,雨可输入管理员用户名和密码更新基准值;如果密码输入错误则身份认证失败,并报告管理员为非法修改,本流程结束;如果密码输入正确则身份认证通过,更新基准值,并回转执行所述的步骤2.3;步骤3:容器启动后的进程监控,其具体实现包括以下子步骤;步骤3.1:用户输入指定容器的管理策略,即进程白名单;白名单中为可在容器中正常运行的程序;Efil于本发明是针对大规模集群服务器应用场景提出的安全加固方法,而在该应用场景下,各Docker容器分工明确,内部运行的进程类别单一,一般每个容器仅提供一种服务。因此,管理员可根据实际情况设置每个容器的进程白名单,这样进程监控模块就可以有针对性的对每个容器实时监控,确保容器内部运行的都是合法进程。[0009]步骤3。2:进程监控模块读入对应容器的进程白名单;步骤3.3;进程监控模块开始实时监控,若发现容器内部存在白名单中未曾出现的进程3卩刻拦截并提示管理员;步骤4:容器启动后的网络监控,其具体实现包括以下子步骤:步骤4。1:用户输入指定容器的通信管理策略,即IP及端口白名单;白名单中为允许容器与之通信的主机IP及端口,其中包括外界主钒和本地其他容器;主要目的是限制容器非授权的通信行为。[0010]步骤4。2:网络通信监控模块读入白名单,将白名单中的IP及端口转换成iptables规则文待;步骤4.3:网络通信监控模块将步骤4.2中产生的规则文件载入iptaMes防火墙;步骤4.4:用户自定义规则生效,容器只能和指定主机迸行通信,若出现非授权通信行为,网络通信监控模块将立即阻止。[0011]作为优选,步骤L2中所述的可执行文件及关键配置文件包括:/etc/bash_compIetiοη.d/docker;/etc/1η11.d/dοcker;/etc/defaalt/dοcker;/νar/!.1b/dοcker/iηit/dockeriη.11—1.6.0;/νar/11b/dοcker/1.η1.1/dockerinit-1.7。O-dev;/etc/init/docker.conf;/lib/systemd/system/docker,service;/1ib/systemd/system/docker,socket;[0012]作为优选,步骤L4中所述的Docker获取镜像的方式有三种,包括从Registry下载镜像、将当前活动容器封装成镜像、从tar包读取镜像存于本地,这三.种方式对应的Docker命令分另丨J是pull,commit、load与save。[0013]作为优选,步骤1.4中所述度量程序所度量的内容包括镜像的rootfs层、镜像配置信息以及层间关系文件。[0014]作为优选,步骤L4中所述的度量程序开始计算镜像的HASH基准值并加密存储,其具体实现过程是度量程序通过调用TPM提供的SHA-1引擎分别计算得到与镜像有关的各部分MSH值,并将他们连接起来再进行一次SHA-1,计算得到最后的HASH值,将此MSH值作为基准值,对其进行加密存储;所述的加密存储利用的是TB!提供的RSA密钥将hash值加密为512位密文最后将密文存入以镜像id命名的文件中。[0015]作为优选,步骤2?2中所述的文仲系统监控程序启动之后计算容器的文件系统的HASH值,Docker对文件系统监控程序可执行文件进行度量,度量的内容包括容器当前可读写层、读写层对应的init层以及层间关系文件。由于Docker采用AUFS文件系统,故只有容器层是可读写的,容器所依赖的各层都是只读的,而可信后动子模块中的镜像度量模块可以确保这些只读层的完整性;故文件系统度量模块只需关注容器读写层即可。[0016]本发明的有益效果为:(I)构造可信链,确保容器可信启动;本发明引入TrustedGRlJB可信引导工具,并对Docker自身可执行文件、关键配置文件、Docker容器的镜像进当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1