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

内网横向渗透攻击是攻击者利用一台被攻破的容器,向内网其他容器或主机发起扫描和连接,从而扩大战果。
如果容器之间没有网络隔离,攻击者能轻松发现敏感服务并提权。
本文面向零基础用户,手把手教你用 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 不通,这是正常现象。

如何进一步加固

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

  • 使用 macvlan 或 ipvlan 网络,让容器直接使用物理网络,但这种方法配置复杂,适合高级用户。
  • 配合 iptables 或 nftables 编写白名单规则,只在必要容器间开放特定端口。
  • 使用 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
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意