Here我编写了一个 Dockerfile 用于测试用户访问。另一个文件(run.sh)在此link
到目前为止,我已经这样做了:
- 从 Ubuntu 12.04.05 开始,使用 sudo 和 ssh 服务器创建一个新容器。
- 将默认 root 密码更改为“root”
- 创建一个测试目录“/app”,并在其中创建一个名为“lalal”的文件,其中包含示例字符串。
- 创建用户“devops”并为其添加 sudo 功能以启动 ssh 服务。
- 配置 run.sh 脚本以在启动时启动 ssh 服务,并将默认用户更改为“devops”。
使用docker进行操作:
- 构建: docker build testuser/testuser:v1 -f ./Dockerfile 。
- 运行: docker run -d -P --name testuser -p 22:22 testuser/testuser:v1
- 查看日志: docker logs testuser
- 运行 bash: docker exec -i -t bash
- 使用 root 用户运行 bash: docker exec -i -t -user=root bash
由于 /app 目录的限制,在使用 devops 用户运行 bash 之前没有问题,但是当我使用 root 用户运行 bash 时,我可以做任何我想做的事情,而 devops 用户是无用的。我该如何修复这个安全漏洞?
正如中提到的问题 8664:
如果有人可以访问 Docker,他们就可以访问您的整个系统,可以加入命名空间等。
禁用docker exec
根本不会增强安全性。
如果你能跑docker exec
,您可以在任何正在运行的容器中以 root 身份运行它。这不是错误或安全风险。这是一个特点。
From 问题 8798:
I think exec
对于调试容器最有用,因此有必要能够执行为root
.
The 奥古斯丁·阿尔巴·奇卡尔确认(在评论中) with 问题 18640
(布莱恩·高夫——cpuguy83的回答)
No.
按照惯例,任何有权访问 docker 的用户都拥有对主机的完全 root 访问权限,这使得对容器的 root 访问权限变得毫无意义。
Docker现在在master中有一个授权框架,可以用来限制这种访问。它将在 Docker 1.10 中提供.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)