单主机与跨节点Swarm集群下Docker容器间流量加密问题咨询
问题1解答
你的假设是合理的,绝大多数开发者在单主机部署场景下都不会额外关注这两段内部流量的加密问题。
- 单主机上的Docker虚拟网络流量完全通过主机内核的虚拟网卡转发,不会流出物理网卡,外部攻击者没有办法直接触达这部分流量
- 就算攻击者拿到了主机普通用户权限,没有root权限也无法抓取虚拟网卡的流量包,只有完全攻陷主机拿到最高权限的情况下才有可能获取明文流量,这种场景下就算内部加了加密,攻击者也能直接从容器内存或者磁盘拿到数据,额外加密的意义不大。
问题2解答
这种跨公网部署Swarm节点的场景下,未加密的内部流量确实有很高的被嗅探风险,攻击者可以轻松获取明文内容。
Docker Swarm默认的overlay网络仅加密控制平面(节点之间的集群管理信息),数据平面(容器之间的业务流量)默认不加密:跨节点的容器通信流量会直接明文在公网链路中传输,只要攻击者在两个节点的通信链路的任意节点进行抓包,就能直接拿到Traefik到API、API到MongoDB的明文请求、业务数据、数据库操作指令等敏感信息。
如果要规避这个风险,最简单的方案是在创建overlay网络时开启数据平面加密,创建命令改为:
docker network create --driver overlay --opt encrypted mynet
开启后Swarm会自动为跨节点的容器流量做IPsec加密,不需要修改任何业务代码和配置,性能损耗也在可接受范围内。
内容的提问来源于stack exchange,提问作者learningtech
相关产品推荐
相关产品推荐

