高校数据中心Docker容器应用的安全体系设计

2019-06-05 02:39谢超群
网络安全技术与应用 2019年5期
关键词:安全漏洞安全措施攻击者

◆谢超群

高校数据中心Docker容器应用的安全体系设计

◆谢超群

(福建中医药大学现代教育技术中心 福建 350000)

随着信息化的发展,高校数据中心中基于Docker容器技术的各种微应用越来越多,学校数据中心面临着由容器技术所带来的各种安全问题。本文结合高校数据中心Docker容器应用的安全情况,从Docker容器生命周期的各个环节全面分析Docker容器技术的安全漏洞,提出了每个环节的安全措施,建立了一套Docker容器安全问题的安全防护体系。实践证明该安全体系能解决数据中心Docker容器的大多数安全问题,提高了高校数据中心的信息化安全水平。

Docker;容器技术;安全;数据中心

0 引言

随着高校信息化的不断深入,高校数据中心业务系统采用微服务容器架构的越来越多。由于容器技术封装应用环境,可移植性强,资源利用率高,相比传统的业务应用从安装操作系统、中间件到应用的复杂部署方式,容器技术从应用开发、发布和部署都更加快速、灵活。目前容器技术已经广泛应用到高校数据中心的应用部署中,由于Docker是开源新技术,对比传统的虚拟化技术其隔离性更差,安全风险点也不少,从应用的开发、应用容器镜像的制作和发布、应用容器的部署和运行都存在潜在的安全风险,因此需要从这些风险点构建一套安全体系来保障高校数据中心的容器应用安全。

1 Docker容器技术安全风险分析

Docker容器技术的应用生命周期,包括从应用的开发,应用容器镜像的制作和发布,应用容器的部署和运行。Docker容器技术的安全风险在容器应用的生命周期每个环节都有可能存在,Docker容器技术的安全风险分析图如图1所示,下面将针对Docker容器技术在每个环节可能遇到的安全风险进行详细分析。

在容器应用开发的环节,开发者在编码时所写的代码存在安全漏洞,或者开发人员所使用的应用开发环境存在安全漏洞,这样当这个软件应用和运行环境打包成容器后就会带有这些安全隐患,导致后期制作的容器镜像以及镜像生成容器在生产环境运行时都会有可以被攻击者利用的安全漏洞。攻击者可以通过安全漏洞控制运行的容器,甚至获得宿主机的控制权限。

在应用容器镜像的制作和发布环节,应用镜像的dockerfile可能被写入恶意代码,导致制作的镜像在编译时取得执行任意代码的运行权限。同时应用镜像所打包的软件应用环境也可能存在漏洞,镜像可能集成了有安全漏洞的操作系统和中间件,导致后期攻击者可以利用这些漏洞提权。容器镜像发布时,可能存在黑客在发布的镜像中植入恶意程序和容器镜像仓库被攻陷,仓库中的正常镜像被改写的风险,从而导致用仓库中的镜像生成的容器应用都会成为攻击和控制的目标[1]。

在应用容器的部署和运行环节,首先Docker容器运行的底层机制可能存在问题,比如Docker本身实现的代码存在一定程度的缺陷,造成权限的恶意提升和利用。Docker是利用linux的内核机制namespaces和cgroup来隔离容器和分配容器资源,但linux的隔离机制还不够完善,存在关键系统目录,系统时钟等没有被完全隔离的问题,有可能被攻击者获取到系统关键信息来进行恶意攻击。Docker容器运行时由于一台服务器上的容器共享底层linux的内核,攻击者可能会利用一个已经被控制的容器执行恶意代码,导致底层linux的内核崩溃,从而使所有服务器上容器都无法正常运行。其次Docker容器部署时是基于容器的镜像来生成容器,可能存部署的容器镜像存在安全漏洞导致生成的容器也存在漏洞,从而被攻击者利用漏洞提权和控制[2]。容器部署时也可能存在部署不当而导致安全风险的问题,比如当部署启动容器时,容器启动选项使用参数-cap-add=sys_admin,导致启动的容器获得读写系统关键目录的权限,并获得修改某些内核参数的权限,从而使攻击者利用这些权限达到攻击容器和宿主系统的目的。最后Docker容器运行时的通讯采用的是生成宿主机虚拟网桥,来桥接各个容器的虚拟网络接口来实现容器之间的通信。在虚拟网桥默认配置模式下,为提高通讯效率,Docker容器之间的通讯数据没有进行过滤和加密,攻击者可以利用这个缺陷,发动MAC Flood和ARP欺骗攻击或者监听容器之间通信的敏感信息。同时在虚拟网桥模式下,容器之间默认可以相互通讯,无法对容器间通讯流量进行监控和控制。由于容器的创建和销毁也比传统的虚拟机频繁,新容器的IP地址有可能被以前的旧容器使用过,导致旧容器所遭受的攻击会重新定位到新容器上[3]。

图1 Docker容器安全风险分析图

2 Docker容器技术安全体系建设

针对Docker在整个应用生命周期的每个环节中所遇到的安全问题,结合高校容器应用的实际情况,从每个环节采取各种安全措施,构建容器安全体系保障高校数据中心各种容器应用安全运行。

面对在容器应用开发的环节中可能遇到的安全问题,可以采取以下的安全措施:一是在应用开发的阶段需按照统一的代码安全规范来编写容器应用,避免容器应用本身的代码安全漏洞。二是使用经过安全验证的可靠的应用运行环境进行开发,避免容器应用中开发环境所带的安全漏洞。三是要对开发完成的容器应用进行完善的安全测试,消除应用程序中所存在的可被攻击者利用的漏洞。

面对在应用容器镜像的制作和发布环节中可能遇到的安全问题,可以采取以下的安全措施:一是构建安全可信的本地容器镜像仓库,并部署镜像漏洞扫描器Clair对发布的镜像都进行漏洞扫描,保证每个发布的镜像都是安全可信的。二是启用镜像发布客户端的证书,对客户端与镜像仓库之间的通讯进行加密,防止攻击者发起中间人攻击,对发布镜像的动作进行窃听和攻击。三是在制作容器应用镜像时使用安全可信的基础镜像,强制使用Docker或者Alpine-linux的经过安全验证的官方基础镜像。四是在制作容器镜像时,进行恰当的权限设置,如可以在Dockerfile中定义容器以非root的身份运行并删除setuid和setgid权限,避免攻击者通过容器获取宿主服务器的权限。五是采用镜像制作的最小化安装原则,只在镜像中打包需要的程序,避免安装无关的不安全程序,导致后期被攻击者利用。六是启用镜像发布客户端的镜像签名机制,保证下载和上传的镜像的完整性和可靠性,防止容器镜像被恶意篡改和保证镜像的完整性[4]。

面对在应用容器的部署和运行环节中可能遇到的安全问题,可以采取以下的安全措施:一是在Docker宿主机的内核层面采取相应的安全措施。比如按照要求及时升级操作系统内核,修复可能存在的内核安全漏洞;利用linux的安全加固组件SELinux、AppArmor、GRSEC等对容器应用的系统执行权限,文件系统挂载权限,网络读写权限进行限制;合理利用linux的Namespace隔离功能,确保容器只能读写自己命名空间的资源,防止出现攻击者跳出容器的命名空间获得操作系统的更高权限[5];配置linux的cgroup功能,对容器对CPU,内存资源的使用进行控制和审计,防止出现攻击者利用容器大量消耗宿主机资源导致其他容器无法正常运行的情况。开启Sec-comp安全计算模式,设置系统调用白名单,对容器对系统的调用进行访问控制,防止执行非法的系统调用命令[6]。二是在Docker容器应用运行层面采取相应的安全措施。比如以最低的操作系统权限和必要的最小资源运行Docker容器,避免攻击者控制容器后的进一步攻击;建立统一的ELK日志监控平台对容器的运行日志进行采集分析,实时掌握容器的运行情况和安全威胁;确保容器上运行的服务只包含必要的应用服务,除非必要否则禁止在容器上开放ssh服务;确保容器不采用p-rivileged标记运行在特权模式下,并给每个容器挂载只读的独立目录,实现每个容器对应的文件目录权限不同,防止攻击者由于权限设置不当提升权限或获取未经授权的资源。三是在Docker的网络设置层面采取相应的安全措施。比如设置Docker的守护进程的运行参数为–icc=false,限制同一服务器上的容器相互通讯,防止攻击者利用容器网络进行监听和ARP欺骗攻击等;为docker的守护进程配置TLS身份认证,防止未经授权的用户访问Docker服务,获得Docker的控制权限;使用iptables设置安全规则,控制所有容器之间的网络通信,并控制Docker容器与外界网络的访问;禁用Docker容器的hos-t网络模式,隔离宿主机和容器的网络通信;配置容器只开放必要的网络端口,禁用与容器业务端口无关的网络端口开放,利用Nmap端口扫描工具定期对运行容器开放的端口进行扫描,并关闭无用的容器端口,防止因为配置不当导致的容器端口对外无限制开放;部署多台Docker主机集群时,容器网络尽量使用Overlay Network网络架构,隔离每个主机容器网络的直接通讯,并开启IPsec 通道加密主机之间的容器通讯,防止攻击者窃听或劫持[7]。

3 结束语

Docker容器技术为高校部署业务应用提供了新的方式,让高校数据中心部署各种应用更加高效,灵活,且资源利用率高,但容器技术也存在各种安全上隐患,本文从Docker容器生命周期的各个环节分析了该技术的各个安全风险点,并针对安全风险提出了每个环节的安全措施,建立了一套Docker容器的安全体系解决方案,为高校微应用容器安全提供了保障。

[1]艾明振.基于Docker平台的安全信息管理的研究与实现[D].北京:北京邮电大学,2018.

[2]杨文林,谭曦等. Docker脆弱性分析与安全增强[J]. 信息安全与技术,2016(04):21-23.

[3]王鹃,胡威等.基于Docker的可信容器[J]. 武汉大学学报(理学版),2017(02):102-108.

[4]魏兴慎,苏大威等. SecDr:一种内容安全的Docker镜像仓库[J].计算机与现代化,2018(05):70-73.

[5]陈莉君,张义飞.基于LKM的Docker资源信息隔离方法[J].计算机系统应用,2016(12):250-254.

[6]李平平,陈莉君.基于LSM的Docker访问控制机制研究[J].信息技术,2016(11):134-138

[7]简智强.Docker容器安全监控系统设计与实现[D].重庆:重庆邮电大学,2017.

猜你喜欢
安全漏洞安全措施攻击者
10kV配电线路维护工程的安全措施分析
基于贝叶斯博弈的防御资源调配模型研究
农村电网电力工程的技术问题分析与施工安全措施
刍议计算机软件中的安全漏洞检测技术
智能设备安全漏洞知多少
正面迎接批判
正面迎接批判
玩轮滑
计算机软件安全漏洞检测技术
两幅照片背后的故事