SELinux的Docker安全性

原文译自:http://opensource.com/business/14/7/docker-security-selinux

这篇文章基于我今年在DockerCon一个讲座,它将讨论我们当前听到的Docker容器的安全问题.

容器并不"包容"

我听到也读到许多假定Docker容器是应用沙盒的观点--这意味着他们可以在他们的系统上使用有根权限的Docker来运行任意的程序. 他们相信Docker容器将会保护他们的主机系统.

  • 我听到人们说Docker容器就像在VMs/KVM执行程序一样安全
  • 我知道人们在随意的下载Docker镜像然后在他们的主机上执行
  • 我甚至看到PaaS服务器(不是OpenShift)允许用户上传他们自己的镜像运行在多租户系统上
  • 我有一个同事说道: Docker就是从网上下载任意的代码并以root模式运行

"你要来我的客厅吗", 蜘蛛对蝴蝶说道.

停止这种设为Docker和Linux会保护你免于恶意软件的想法吧!

你在乎吗?

如果你不在一个多租户系统里运行Docker,并且你对运行在容器里的服务使用良好的安全策略,那你基本上不需要担心.仅仅假定运行在容器里的特权进程就像在容器外的特权进程一样.

一些人错误的认为容器是一种比虚拟机更好更快的方式,但从安全的角度来看,容器更脆弱,这点我将在文章的后面说明.

如果你相信我说的,Docker容器应该被视作"容器服务"-这意味着你要把运行Apache的容器看作在你的Host系统上运行的Apache服务,这就是说你要:

  • 尽快的降低特权
  • 尽可能以非root模式运行你的服务
  • 将容器里的root模式视为容器外的root模式

目前我们正在通用规范中告诉人们把容器的特权进程当在容器外的特权进程.

不要在你的系统里运行任意的Docker镜像,我从许多方面看到Docker容器革命类似于1999年的Linux革命,那时当一个管理员听到一个新的很酷的Linux服务时,他们会:

  • 去rpmfind.net和其他一些网站上去搜索包
  • 下载这些包
  • 通过RPM或make install来安装
  • 以管理者模式执行

会出什么问题?

两周后管理员听到一个zlib的脆弱性问题并不得不指出( 他们希望并祈祷不是), 软件是不安全的!

这就是Red Hat发行版和其他一些值得信赖的第三方介入并拯救他们的时刻, Red Hat的企业版Linux给管理员提供了:

  • 一个提供下载的安全的repository
  • 安全的升级来修复问题
  • 发现问题并修复的团队
  • 管理/维护/安全增强的工程师团队
  • 通用的认证标准来检查OS的安全性问题

只运行从可信赖组织获得的容器,我相信你应该继续从相同的人那边获得代码/包,就像你以前做的一样.如果代码不从那边来, 不要相信容器技术会保护你的主机.

所以问题是什么? 为什么容器并不"包容"?

最大的问题就是Linux的一切都不是命名空间 (namespaced). 现在, Docker使用5个命名空间来改变系统的进程: 进程, 网络, Mount, 主机名,共享内存.

虽然有给用户一定的安全级别, 但无法像KVM实施全面的安全保护. 在KVM环境下进程不直接和主机的内核交互.它们也不访问内核的文件系统如/sys和/sys/fs, /proc/*

设备结点是用于和VMs 内核交互的,而不是主机.因此, 想要越过VM来扩展特权级别, 进程要去攻击VM内核,找到HyperVisor的弱点,打破SELinux的控制(sVirt),最终攻击主机的内核.

当你运行在一个容器里时,你就已经直接可以和主机的内核打交道了.

没有被当成命名空间的主要的内核子系统如:

  • SELinux
  • Cgroups
  • /sys下的文件系统
  • /proc/sys/proc/sysrq-trigger/proc/irq/proc/bus

没有被当成命名空间的设备:

  • /dev/mem
  • /dev/sd* 文件系统设备
  • 内核模块

如果通过一个特权进程对以上的某个模块通信或攻击的话,你就拥有了整个系统.

SELinux的Docker安全性

时间: 2024-09-29 16:49:02

SELinux的Docker安全性的相关文章

Docker安全性(二)——带来了新的安全功能给Docker

Docker安全性(二)--带来了新的安全功能给Docker 本篇翻译自Daniel J Walsh的一篇开源文章:http://opensource.com/business/14/9/security-for-docker 作者的演讲视频:http://v.youku.com/v_show/id_XODQwNjUwNTIw.html 在这系列的第一篇Docker的安全性,我写了"容器中不包含".在第二篇文章中,我将讨论为什么我们这样做并且我们正在对它做什么. Docker,红帽和开

Docker安全性——官方文档[译]

Docker安全性--官方文档[译] 本文译自Docker官方文档:https://docs.docker.com/articles/security/ 在审查Docker的安全时,需要考虑三个主要方面:?容器内在的安全性,由内核命名空间和cgroup中实现;?docker守护程序本身的攻击面;?加固内核安全特性,以及它们如何与容器中互动. 内核 命名空间 Kernel Namespace Docker容器中非常相似LXC容器,并且它们都具有类似的安全功能.当您以"docker run"

Docker安全性(一)——Docker容器真的安全吗?

Docker安全性(一)--Docker容器真的安全吗? 本文翻译自Daniel J Walsh的一篇开源文章:http://opensource.com/business/14/7/docker-security-selinux 这篇文章是基于一个演讲中"今年在我DockerCon上的分享":http://v.youku.com/v_show/id_XODQwNjUwNTIw.html. 这将讨论Docker容器的安全性,我们目前正在做什么,和我们将朝哪里走. 这是一个系列Docke

Docker的安全性

现在讨论Docker安全性的话题颇多,主要集中在对使用容器方式的隔离性.攻击防护性等方面. 往往与虚拟机方式进行比较. 首先,从安全性上看,Docker容器的安全性比不上虚拟机,这点是毋庸置疑的. 容器内的应用可以直接访问到主机系统内核:而虚拟机中的应用首先要访问到虚拟机的操作系统,然后在经过hypervisor层才能访问到外部的系统. 而且,虚拟机方式在生产环境中经过诸多检验,更加成熟一些. 然而,从我的角度看,容器方式确实牺牲掉了部分的安全性,但却换来了高效性和灵活性. 且不说它的快速启动和

8.docker的安全性

在查看Docker安全性时,有四个主要方面需要考虑: 内核的内在安全性及其对命名空间和cgroup的支持; Docker守护进程本身的攻击面; 容器配置配置文件中的漏洞,默认情况下或用户自定义时. 内核的“强化”安全功能以及它们如何与容器交互. 原文地址:https://www.cnblogs.com/leleyao/p/10591392.html

Docker入门教程(五)Docker安全

Docker入门教程(五)Docker安全 [编者的话]DockOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第五篇,介绍了Docker的安全问题,依然是老话重谈,入门者可以通过阅读本文快速了解. 我们必须高度重视开源软件的安全问题,当开发者在使用Docker时,从本地构建应用程序到生产环境部署是没有任何差异的(译者注:作者的言外之意是更应该重视Docker的安全问题).当Docker被越来越多的平台使用的时候,我们需要严格保证Docker作为一个项目或者平台的安全性.

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整) 本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习.原文地址,http://dockone.io/article/101. 文中一些链接可能会跳转国外的网站,如果没有插件或开VPN的朋友,可以尝试修改一下Hosts文件,如何修改Hosts文件.或者使用XXNet插件,如何使用XXnet 介绍 Docker是一个新的容器化的技术,它轻巧,且易移植,号称"build once, configure

docker命名空间、控制组及联合文件系统概念

基本架构 命名空间 控制组 联合文件系统 docker底层依赖的核心技术主要包括操作系统的命名空间(Namespace).控制组(Control Groups).联合文件系统(Union File Systems)和linux虚拟网络支持. 基本架构 docker采用标准的c/s架构,客户端和服务端可以运行在一个机器上,也可以用过socke或者RESTful API进行通信. docker daemon接受客户端的请求并处理,像容器的创建.运行.分发等.docker daemon是一个非常松耦合

RHEL7.0修改SSH默认端口及SELinux运行状态修改

Linux系统安装好后,默认会开启SSH服务以便远程配置.但使用默认端口22不安全,一般不建议使用默认端口,那就需要修改SSH默认端口.在RHEL7.0上修改和7.0以下类似,但要注意SELinux的修改. SSH 为 Secure Shell,由IETF的网络工作小组(Network Working Group)所制定:SSH 是建立在应用层和传输层基础上的一种安全协议.SSH传输数据是加密的,可以有效防止传输过程被截取数据保障安全.SSH的数据是经过压缩的,所以可以加快传输的速度. 修改步骤