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

lve*_*lla 23 security docker

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

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

Ste*_*itt 27

不完全是,您允许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/

如果您有兴趣在不需要 root 等效权限的情况下运行(大多数)OCI 容器,请查看Podman


Gil*_*il' 11

不可以。默认情况下,安装 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
Run Code Online (Sandbox Code Playgroud)

作为普通用户,你连连接 Docker 守护进程的权限都没有,更不用说指示它在容器中运行某些东西了。

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

在“命令替换”是adduser alice docker或有alice ALL = ( : docker) docker/etc/sudoers,不仅安装docker.io