security - 用户可以在Docker容器中更改内核配置形式吗?

标签 security docker linux-kernel containers

根据我从阅读Docker文档中了解到的信息,容器共享运行它们的主机的内核。这是否意味着用户可以通过使用容器来按自己的意愿设置内核配置?如果是这样的话,原因是如果用户可以自行设置内核,为什么我们还要麻烦允许/拒绝内核功能?我的第三个问题是:如果确实用户可以设置内核,那么Apparmor之类的系统是否可以帮助防止这种情况的发生?

总结一下,这是我的问题:

  • 用户是否可以从正在运行的容器中更改docker主机的内核配置(因为他们共享内核)?
  • 如果对1的回答为是,那么为什么要麻烦限制容器的内核功能?
  • 如果对1的回答是肯定的,那么像Apparmor这样的系统(在this entry of docker's security documentation中提供的一种可以增强docker主机内核安全性的解决方案之一)是否可以防止此类攻击?
  • 最佳答案

    Can users change a docker host's kernel configuration from within a running container (since they share the kernel)



    容器在其自己的沙箱中运行。它具有与主机隔离的自己的文件系统。因此,默认情况下,它无权影响主机及其内核。

    现在,您可以通过挂载只能由root管理员用户访问的主机目录,使容器可以访问关键内容。由于默认情况下,容器内的root如果在容器外部添加root,则可以从安装的目录中利用计算机上的关键内容。但是,这是使用user namespaces解决的。

    因此,只要您不让容器访问重要的东西,它仍然是安静安全的,甚至比直接在主机上运行应用程序更安全。

    您可以在official docs中阅读有关docker安全性的更多信息。

    关于security - 用户可以在Docker容器中更改内核配置形式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190321/

    相关文章:

    java - IBM Appscan 安全漏洞 SQL 注入(inject)

    python - docker-compose构建错误: command 'gcc' failed with exit status 4

    c - 内核模块上的 addr2line

    c - unix DECLARE_WAIT_QUEUE_HEAD (var) var 原型(prototype)?

    asp.net - 是 SQL 注入(inject)吗?

    java - 将 Google 身份验证的客户端 Web ID 放入 Strings.xml 中是否安全?

    regex - 使用查询参数限制对URL的访问

    docker - 将网络连接到服务

    安装了 docker 的 Azure Windows 自托管代理

    linux - 检查多路径 TCP 连接中的子流