在普通网络上,发送明文数据是一种安全风险,因为攻击者可以嗅探甚至操纵所有通信量。加密是安全通信所必需的。当使用Docker容器时,可以使用虚拟网络接口将这些容器连接在一起。这些网络是否存在相同的安全问题,或者Docker网络连接是否安全?是否有必要加密码头网络上的流量?
编辑:我感兴趣的是,两个码头集装箱之间的流量是否可以被第三个码头集装箱拦截,当所有这些都在同一主机上的同一桥接网络上时。
发布于 2019-12-09 14:26:51
是的,你得确保交通安全。
阅读docs.docker.com:
“如果您需要以安全的方式通过网络访问Docker,则可以通过指定tlscacert标志并将Docker的tlscacert标志指向受信任的CA证书来启用TLS。在守护进程模式下,它只允许来自由该CA签名的证书认证的客户端的连接。在客户端模式下,它只能连接到由该CA签名的证书的服务器。”
在杰夫·黑尔( Jeff )的文章前20名码头保安贴士中,作者写道
"Docker还提供专用容器网络。这样可以防止容器获得对同一主机上其他容器的网络接口的特权访问。因此,Docker环境有点孤立,但对于您的用例来说可能不够隔离。“
本文对加强码头安全提出了更多的建议,包括:
来源:
发布于 2019-12-12 18:19:11
与大多数安全问题一样,答案是,这取决于。这里有一些相关的信息,看看这对你是否重要。
Docker提供默认桥接网络(默认安装中为docker0)。这只是一个标准的Linux网桥网络。您的威胁模型可能是两种情况之一。
在这两种情况下,攻击者都需要足够的权限来嗅探该网络上的流量和/或ARP欺骗。这通常涉及到要么拥有主机上的root特权,要么具有与流量嗅探和ARP欺骗相关的NET_RAW功能。
在第一种情况下,不幸的是(从安全的角度来看) Docker默认为所有容器提供了NET_RAW功能,因此默认安装将允许访问一个容器的攻击者攻击该网络上的其他容器。您可以通过从容器特权中删除NET_RAW来减轻这一点。
在第二种情况下,如果攻击者有特权访问运行容器的主机,他们可以访问该网络,但也可以访问所有容器,因此您可能不需要担心流量嗅探:)
这都是假设标准的Docker网络,如果您使用Kubernetes,有更多的变量在发挥作用,因为有各种各样的网络选项可用。
关于这个主题的一些好的补充材料。有一个白皮书这里讨论这个问题。Liz今年在Kubecon做了一个很好的关于这个话题的演讲(视频这里)。
另一个注意事项是,在Docker默认网络上,而不是在Docker创建的任何其他网络上,您可以设置--icc=false,以防止容器之间的链接没有明确列出的任何容器间通信。这是一个遗留的选择,所以我不会依赖它,继续前进。
发布于 2019-12-11 15:03:14
您需要考虑到,码头容器可以共享一个桥接设备,因此如果两个容器都驻留在同一台主机上,则可以从另一个容器中嗅探来自一个容器的所有通信量。
另一个要考虑的变量是bug。码头主机可能有一个错误,允许停靠器实例嗅探不应该允许的通信量。因此,最好的方法是加密通信量,如果您正在考虑这种情况。
https://security.stackexchange.com/questions/222481
复制相似问题