docker 是否安装了巨大的安全漏洞?

docker 是否安装了巨大的安全漏洞?

假设我有一台 Ubuntu 机器并且做了sudo apt install docker.io.我是否刚刚在我的机器上设置了一个巨大的安全漏洞,允许任何拥有终端访问权限的人升级为root?

我这么问是因为我可以将任何目录作为容器内的卷安装,升级到容器内的根目录,而且似乎我可以在安装的卷中做任何我想做的事情。这一切似乎都是错误的,我觉得我肯定错过了一些东西。或者就这么简单,Ubuntu 的存储库中确实有一个不需要密码的“sudo”替代品?

答案1

不完全是,您允许docker组中的任何人升级为root。这在/usr/share/doc/docker.io/README.Debian:

正如上游文档中所述(https://docs.docker.io),Docker将允许“docker”组中的非root用户访问“docker.sock”,从而与守护进程进行通信。要将自己添加到“docker”组,请使用以下命令:

adduser YOURUSER docker

正如上游文档中所述,“docker”组(以及访问 Docker API 的任何其他方式)与 root 等效。如果您不信任在您的机器上拥有 root 权限的用户,那么您也不应该信任他们的 Docker。如果您对 Docker 安全方面的更多信息感兴趣,请务必阅读上游文档中的“Docker 安全”文章:

https://docs.docker.com/engine/security/security/

如果您有兴趣能够运行(大多数)OCI 容器而不需要 root 等效权限,请查看波德曼

答案2

不可以。安装 Docker 默认情况下不允许任何人使用它。

$ docker info  
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.39/info: dial unix /var/run/docker.sock: connect: permission denied

作为普通用户,您甚至没有连接到 Docker 守护进程的权限,更不用说指示它在容器中运行某些内容了。

另一方面,该docker组中的任何用户实际上都拥有主机的 root 权限。在不授予用户主机 root 权限的情况下,允许用户创建 Docker 容器是非常困难的。如果容器配置安全,您可以允许用户在 Docker 容器中运行应用程序。安全配置不得授予对主机上任何敏感文件的访问权限,并且应包含USER不授予容器内 root 访问权限的指令。 (防止 root 逃逸容器是可能的,但很棘手。)

“sudo 替换”是adduser alice docker或具有alice ALL = ( : docker) docker/etc/sudoers而不仅仅是安装docker.io

答案3

是的,但可能没有你想象的那么糟糕。正如其他答案告诉您的那样,有一些访问控制,因此它不会立即向任意本地用户(仅访问列表中的用户)提供 root 权限,但它仍然是一个大枪。Docker 不是沙箱,至少在标准配置中不是这样。

如果可以的话,您应该阅读并考虑使用无根码头工人,或者至少使用用户重映射模式。这些可以像沙箱一样,并且如果仔细配置,则不允许有权访问 Docker 的任意用户在主机上获得 root 权限(至少在没有其他本地漏洞的情况下)。

相关内容