gpt4 book ai didi

ubuntu - 提高 Docker 安全性

转载 作者:太空宇宙 更新时间:2023-11-03 16:53:20 24 4
gpt4 key购买 nike

我正在对 Web 应用程序进行最后的修改,该应用程序允许用户运行托管各种不同应用程序的 Docker session 。当我审查安全性时,我想到的一个想法是,用户可以通过简单地将过多数据写入文件系统来使整个系统——所有用户的所有托管 session ——停止。

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

到目前为止一切顺利 - 然而,我在几个小时前才意识到另一个通用的薄弱链接是 /tmp 文件夹。所以我也尝试将该文件夹映射到虚拟驱动器。起初很天真 - 由 www-data 和 chmod'd 拥有到 775:这立即使一切都停止了。我无法使用 php5、mysql、memcached 或大多数东西运行容器。

在我的“真实”服务器上四处寻找后,我将映射的 /tmp 文件夹更改为由 root 拥有,并 chmod 它到 777,一切都恢复正常了。

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

  • Docker 使用 AUFS文件系统。因此,例如,Docker session 中的“正常”/tmp 文件夹将位于 AUFS 上。
  • 你可能会说这不是问题。但是,AUFS 不具备与 EXT4 等所有相同的功能。
  • 仅举一个例子:我想对某些文件使用扩展文件系统属性 apt-get install attr 然后 setfattr -n...进入我的 /tmp 文件夹

巧妙之处 - 如果您映射一个卷,Docker 会保留被映射文件夹的文件系统。因此,如果我将我的虚拟驱动器设置为 EXT4,并在其上映射一个文件夹以在 Docker session 中充当 /tmp,则 session 中的 /tmp 文件夹将是 EXT4。

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

  1. 允许 docker session 用户以不受控制的方式写入磁盘会带来哪些具体风险?
  2. 在发现 AUFS 与 EXT4 问题后,我用谷歌搜索并找到了 this作为第一击。听起来像是去了解所有相关问题的地方,但正如您将看到的那样,该链接无处可去。
  3. '/tmp 文件夹的所有权和特权是什么?
  4. 我是否存储了映射 /tmp、更改其所有者和 chmod'ing 的其他问题?
  5. 最后,是否有其他操作系统文件夹可能会被滥用并且值得映射到有限大小的虚拟驱动器?

我还应该提到:

  • 所有这些冒险都在 Ubuntu 14.10 设置上进行。
  • 当虚拟驱动器的磁盘空间不足时会发生什么? - 我运行一个精确的 CRON 作业,当他们的磁盘空间不足时提醒用户。

在过去的几个月里,我学到了很多关于 Docker 和 Linux 的知识,但我还远不是专家。如果有人能够填补此处的空白并回答其中一些问题,我将不胜感激。

最佳答案

您帖子的一些回答;

  1. 这是 Docker 最大的问题之一。但是在这些情况下,通常的做法是构建一个 NAS 设备(网络附加存储)并将容器安装在该驱动器中,这样如果存储已满,主机将覆盖它的正常运行时间。
  2. 关于这个,是的,这是一个较小开销的问题,因为在 AUFS 中只有层系统,即“只保存更改”。这就是为什么您会遇到这些类型的问题。
  3. 对于 /tmp,每个人的正确权限都是读+写。
  4. 我无法回答这个问题
  5. 尽量不要将容器连接到根卷,这样您可以从一开始就防止很多事情发生。但请始终小心这些文件夹;

    /bin/tmp/boot/proc

关于ubuntu - 提高 Docker 安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com