容器安全之不使用Docker的默认网桥docker0
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器安全之不使用Docker的默认网桥docker0相关的知识,希望对你有一定的参考价值。
参考技术A不要使用 Docker 的默认 bridge docker0 。 使用 Docker 的用户定义的网络进行容器联网
Docker 将以桥模式创建的虚拟接口连接到名为 docker0 的公共桥。
这种默认网络模型易受 ARP 欺骗和 MAC 洪泛攻击的攻击,因为没有应用过滤
运行以下命令,并验证容器是否在用户定义的网络上,而不是默认的 docker0 网桥
若返回值不为空,说明使用 docker0 网桥
使用自定义网桥
默认网桥通过 IP 地址实现容器间的寻址,也可通过 --link 参数实现容器 DNS 解析(容器A名称->容器A IP地址),但不推荐 --link 方式
如果宿主机上所有容器没有指定 --network 参数,那它们将使用默认网桥 docker0 ,并可以无限制的互相通信,存在一定安全隐患。
而自定义网桥提供了的网络隔离,只有相同网络域(network)内的容器才能相互访问
更换docker容器默认网桥docker0
Docker允许管理docker0桥接或者通过-b选项自定义桥接网卡,需要安装bridge-utils软件包。
步骤:
1,确保docker的进程是停止的
2,创建自定义网桥,
3,给网桥分配特定的ip
4,以-b的方式指定网桥
操作步骤:
service docker stop
ip link set dev docker0 down
brctl delbr docker0
brctl addbr docker1
ip addr add 192.168.0.1/24 dev docker1 //192.168.0.1是容器的网关地址。
ip link set dev docker1 up
ip addr show docker1
vim /etc/sysconfig/docker //桥接口由docker0改为docker1
OPTIONS=‘--selinux-enabled --log-driver=journald‘
改为
OPTIONS=‘--selinux-enabled --log-driver=journald -b=docker1‘ //即添加-b=docker1
service docker restart
新建容器,查看新建容器的IP:
docker inspect --format=‘{{.NetworkSettings.IPAddress}}‘ 容器ID/容器名
以上是关于容器安全之不使用Docker的默认网桥docker0的主要内容,如果未能解决你的问题,请参考以下文章