Ubuntu 提高Docker安全性

Ubuntu 提高Docker安全性,ubuntu,docker,Ubuntu,Docker,我正在对一个web应用程序进行最后润色,该应用程序允许用户运行承载各种不同应用程序的Docker会话。在我回顾安全性时,我想到的一个想法是,用户只需向文件系统写入太多数据,就可以让整个系统——所有用户的所有托管会话——陷入瘫痪 为了避免这种情况,我采取的措施之一是使用有限的空间设置虚拟驱动器,用于映射(通过Docker)用户可能访问的文件夹。映射的精确文件夹取决于Docker容器中承载的内容。例如,在托管MySQL数据库时,我映射/var/lib/MySQL文件夹以防止数据库以不受控制的方式增长

我正在对一个web应用程序进行最后润色,该应用程序允许用户运行承载各种不同应用程序的Docker会话。在我回顾安全性时,我想到的一个想法是,用户只需向文件系统写入太多数据,就可以让整个系统——所有用户的所有托管会话——陷入瘫痪

为了避免这种情况,我采取的措施之一是使用有限的空间设置虚拟驱动器,用于映射(通过Docker)用户可能访问的文件夹。映射的精确文件夹取决于Docker容器中承载的内容。例如,在托管MySQL数据库时,我映射
/var/lib/MySQL
文件夹以防止数据库以不受控制的方式增长

到目前为止一切都很好——然而,就在几个小时前,我意识到另一个普遍的薄弱环节是
/tmp
文件夹。因此,我也尝试将该文件夹映射到虚拟驱动器。一开始很幼稚——由www数据所有,并且
chmod'd
到775:这很快让一切都停止了。我无法运行包含php5、mysql、memcached或大多数内容的容器

在我的“真实”服务器上翻找之后,我将映射的
/tmp
文件夹更改为root所有,并将
chmod'd
文件夹更改为777,使所有内容都重新工作

在这个过程中,我发现了一些别的东西:

  • Docker使用文件系统。因此,例如,Docker会话中的“普通”
    /tmp
    文件夹将位于AUFS上
  • 你可能会说没问题。然而,AUF并没有与EXT4一样的所有功能
  • 仅举一个例子:我想在我的
    /tmp
    文件夹中的一些文件上使用扩展文件系统属性
    apt get install attr
    ,然后使用
    setfattr-n.
整洁的事情-如果映射卷,Docker将保留已映射文件夹的文件系统。因此,如果我将虚拟驱动器设置为EXT4,并将其上的文件夹映射为Docker会话中的
/tmp
,则会话中的
/tmp
文件夹将是EXT4

然而,所有这些提出的问题比它回答的问题还多

  • 允许docker会话用户以不受控制的方式写入磁盘会带来哪些确切的风险
  • 在发现了AUFS vs EXT4的问题后,我搜索并发现它是第一次成功。听起来像是一个了解所有相关问题的地方,但你会发现链接没有任何意义
  • ”/tmp
    文件夹的正确所有权和权限是什么
  • 我是否存储了映射
    /tmp
    、更改其所有者和
    chmod'ing
    的其他问题
  • 最后,是否还有其他操作系统文件夹可能被滥用,并且是映射到有限大小虚拟驱动器的有价值的竞争者
  • 我还要提到:

    • 所有这些冒险都是在Ubuntu14.10上进行的
    • 当虚拟驱动器的磁盘空间不足时会发生什么情况?-我运行了一个每分钟一次的CRON作业,当用户的磁盘空间不足时会发出警报

    在过去的几个月里,我对Docker和Linux有了很多了解,但我远不是一个专家。我非常感谢任何能够填补这里空白并回答其中一些问题的人。

    您帖子中的一些答案

  • 这是码头工人最大的问题之一。但在这些情况下,通常的做法是形成一个NAS设备(网络连接存储)并将容器装入该驱动器中,这样,如果存储空间已满,主机将覆盖其正常运行时间
  • 关于这个问题,是的,这是一个开销较小的问题,因为在AUF中只有一个层系统,即“只保存更改”。这就是为什么你会遇到这样的问题
  • 对于
    /tmp
    ,将为每个人提供正确的读写权限
  • 我不能回答这个问题
  • 尽量不要将容器连接到根卷,这样可以从一开始就防止很多事情发生。但要始终小心这些文件夹

    /bin/tmp/boot/proc


  • 我对你的问题没有确切的答案,因为我自己仍在学习这些细节,但我来这里是想说一些我认为可能有用的东西。阅读以下文档有助于我了解运行docker守护程序及其配置以及主机配置的风险:显然,应用程序代码也应该没有漏洞。