容器网络隔离防范内网横向渗透攻击:容器网络隔离实战

内网横向渗透攻击是攻击者利用一台被攻破的容器,向内网其他容器或主机发起扫描和连接,从而扩大战果。
如果容器之间没有网络隔离,攻击者能轻松发现敏感服务并提权。
本文面向零基础用户,手把手教你用 Docker 自身的网络功能实现容器隔离,阻断横向移动路径。

理解内网横向渗透与容器网络隔离

内网横向渗透核心在于“信任链”:传统架构中,同一宿主机上的容器默认可以互相通信。
攻击者只要拿下任意一个容器,就能扫描内网并尝试连接其他服务。
容器网络隔离就是打破这种信任,让容器之间不可见、不可达,即使某个容器失陷,也无法扩散到其他容器。

环境准备与基础概念

你需要一台安装了 Docker 的 Linux 服务器(Ubuntu/CentOS 均可)。
登录后确认 Docker 运行正常:

docker version

了解两个关键概念:

  • 默认 bridge 网络:Docker 自动创建的 docker0,同一宿主机上的容器默认通过它通信。
  • 自定义 bridge 网络:用户自己创建的网络,可以控制容器间是否允许通信。

创建隔离网络(关闭容器间通信)

核心操作:创建自定义 bridge 网络时,通过 -o 参数关闭容器间通信(ICC)。

docker network create --driver bridge \
  -o "com.docker.network.bridge.enable_icc"="false" \
  secure_net

查看网络确认选项生效:

docker network inspect secure_net | grep -A5 "Options"

如果看到 "com.docker.network.bridge.enable_icc": "false",说明配置成功。

启动容器并连接到隔离网络

启动两个容器,都加入 secure_net

docker run -d --name web --network secure_net nginx:alpine
docker run -d --name db --network secure_net mysql:8.0

此时两个容器虽然在同一网段,但因为 ICC 被禁用,无法互相 ping 通。

验证隔离效果

进入 web 容器尝试 ping db:

docker exec -it web sh
ping db

应该一直卡住(无响应)。
按 Ctrl+C 退出。
再用 mysql 客户端尝试连接 3306 端口同样会失败。

如果想验证“默认网络可以通信”的对比效果,可以用 docker network create default_net(不设 ICC 选项),重复以上步骤就能看到 ping 成功。

避坑指南

  1. 不要使用默认 docker0 网络:默认网络 ICC 是开启的,且无法动态关闭。必须创建自定义网络。
  2. 检查宿主机防火墙:如果宿主机开启了 iptables 并限制了 FORWARD 规则,可能影响容器通信,但 ICC 关闭后容器间会被直接阻断。确保宿主机没有额外放行规则。
  3. 使用 --internal 的副作用--internal 会禁止容器访问外部网络(如互联网),如果你需要容器能向外请求(例如拉取依赖),请不要用 --internal,而用上面的 ICC 关闭方法。
  4. 容器名解析:即使 ICC 关闭,DNS 解析仍然有效,但底层流量会被拒绝。在容器中执行 getent hosts db 仍能拿到 IP,但 ping db 不通,这是正常现象。

如何进一步加固

如果需求更严格,可以考虑:

  • 使用 macvlanipvlan 网络,让容器直接使用物理网络,但这种方法配置复杂,适合高级用户。
  • 配合 iptablesnftables 编写白名单规则,只在必要容器间开放特定端口。
  • 使用 Docker Compose 的场景,在 network 定义中直接设置 enable_icc: false(需注意 Compose 版本)。

常见问题解答

Q:为什么我创建网络时加上了 ICC 关闭参数,容器之间还是能 ping 通?
A:检查是否使用了自定义网络名称,并且容器确实连接到了该网络。可以用 docker inspect 容器名 | grep Networks 确认。如果容器还连接了其他网络(如默认 bridge),则可能通过其他网络通信。确保容器只有一个网络接口。

Q:关闭 ICC 后,容器还能访问外部互联网吗?
A:可以,ICC 仅限制容器间通信,不影响容器通过宿主机 NAT 访问外网。

Q:我已有大量容器在默认网络,怎么批量迁移?
A:需要逐一 docker network disconnect bridge 容器名 然后 docker network connect secure_net 容器名。建议在业务低峰期操作,并提前验证新网络的连通性。

总结

容器网络隔离是防范内网横向渗透的基础手段。
通过创建自定义 bridge 网络并关闭 ICC,能有效阻断攻击者在容器间的横向移动。
本文的步骤从环境准备到验证,零基础也能照做。
如果你正在部署业务容器,建议优先实施网络隔离策略,再根据实际需求微调防火墙规则。
遇到异常时回看避坑部分,通常会找到原因。

分享到:
上一篇
内核漏洞紧急补丁升级修复服务器风险
下一篇
GPU温度过高住宅主机散热优化方案
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意