保护Docker守护程序

时间:2019-08-09 14:36:48

标签: docker docker-swarm

我是否正确理解the docs讨论了在以远程计算机为目标的命令发出(docker run,...)时如何保护Docker守护进程?在本地控制docker时,这与我无关。

运行Docker集群也不需要执行此步骤,因为节点之间的安全性是由Docker automatically处理的。例如,由于在群集中的overlay网络默认情况下是加密的,因此在具有多个代理的群集中使用Portainer不需要额外的安全步骤。

基本上,当我的目标计算机始终为localhost时,无需采取额外的安全措施,对吗?

1 个答案:

答案 0 :(得分:0)

请记住,可以运行 any Docker命令的任何人几乎都能轻松地在主机上获得不受限制的根级访问:

docker run -v/:/host busybox sh
# vi /host/etc/passwd

是的,如果您使用的是远程Docker守护程序,则必须正确运行该文档中的每个步骤,否则系统将被植根。

如果您正在使用本地Docker守护程序,但尚未启用极其危险的-H选项,则安全性完全由/var/run/docker.sock特殊文件上的Unix权限控制。该套接字由docker组拥有,并向该组添加本地用户是很常见的。同样,任何可以运行docker ps的人都可以简单地编辑主机的/etc/sudoers文件并授予自己所需的任何权限。

所以:访问docker.sock意味着对主机上不受限制的根的信任。如果要将套接字传递到您希望启动其他容器的Docker容器中,则也暗含地信任它,以免在主机挂载系统目录时将其挂载到主机之外。如果您尝试启动容器以响应网络请求,则需要对参数处理进行疯狂的注意,以免外壳注入攻击损害您的系统。您几乎总会找到其他方法来运行工作负载。

简而言之,仅运行Docker并不是出于安全考虑的免费通行证。如果可以的话,许多常规做法实际上是不安全的。在Web上快速搜索“ Docker cryptojacking”可以很快发现后果。