docker0网桥存在横向移动、无访问控制、无加密审计等高危风险。其默认允许同网段容器自由互访,易成攻击跳板;应禁用默认bridge、改用带隔离的自定义网络,并在DOCKER-USER链加固iptables规则。
明确
docker
0 网桥的风险定位
docker0 是 Docker 启动时自动创建的默认桥接网桥,IP 通常为
172.17.0.1/16
,所有未指定网络的容器默认接入它。它的本质是 Linux 内核级二层交换机,不自带访问控制、加密或日志审计能力。默认状态下,同一 docker0 网段内的容器可自由互访(如 172.17.0.2 → 172.17.0.3:22),且流量不经额外策略过滤,容易成为横向移动跳板。
禁用或隔离默认 bridge 网络
生产环境应避免让业务容器直接使用 docker0。可通过以下方式切断依赖:
启动守护进程时禁用默认网桥:在
中添加
,重启 Docker 后 docker0 不再自动启用
若必须保留 docker0(如兼容旧脚本),禁止新容器默认接入:添加
并配合
显式指定网络
对已运行的容器,可用
主动剥离
用自定义桥接网络替代并启用通信约束
新建网络时开启内建隔离机制,比后期补 iptables 更可靠:
Docker Desktop(windows)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
创建带子网和网关的自定义桥:
容器启动时只加入该网络:
,不同网络间默认不通
如需有限互通,用
显式连接,并配合
固定 IP,便于后续策略绑定
禁用跨网络 DNS 解析:启动时加
参数,阻止容器通过内置 DNS 访问其他网络中的服务名
在 DOCKER-USER 链中加固转发规则
Docker 自动管理
和
规则,但
是预留的用户自定义链,位于 Docker 规则之前,适合插入安全策略:
拒绝非授权跨网段转发:
(阻止 docker0 流量外发到物理网卡)
限制容器主动外连:
(默认禁止容器主动发起新连接)
只允许可信源访问特定容器端口:
所有规则需保存(如
),并确保系统重启后加载
关闭冗余协议与强化日志追溯
精简协议面可减少潜在攻击入口,同时为异常行为提供线索:
禁用 IPv6(若业务不用):在宿主机执行
,并写入
关闭 docker0 的 ARP 响应(防 IP 冲突/ARP 欺骗):
启用容器网络操作审计:Docker 启动时加
,结合 rsyslog 收集网络相关事件
定期检查 docker0 转发状态:
应为 0(除非你明确需要 NAT 转发)
/etc/docker/daemon.json"bridge": "none""default-runtime": "runc", "default-address-pools": [{"base":"192.168.0.0/16","size":24}]--network nonedocker network disconnect bridge docker network create --driver bridge --subnet=10.10.1.0/24 --gateway=10.10.1.1 myapp-netdocker run --network=myapp-net ...docker network connect--ip--internalfilter/DOCKERnat/POSTROUTINGfilter/DOCKER-USERiptables -I DOCKER-USER -i docker0 -o eth0 -j DROPiptables -I DOCKER-USER -o docker0 -m state --state NEW -j REJECTiptables -I DOCKER-USER -i eth0 -d 172.17.0.5 -p tcp --dport 3306 -s 192.168.10.0/24 -j ACCEPTiptables-save > /etc/iptables/rules.v4sysctl -w net.ipv6.conf.docker0.disable_ipv6=1/etc/sysctl.confecho 0 > /proc/sys/net/ipv4/conf/docker0/arp_ignore--log-driver=syslog --log-opt syslog-address=udp://127.0.0.1:514cat /proc/sys/net/ipv4/ip_forward