服务器运维中保障 Bridge 桥接的安全性
一 架构与最小暴露面
二 二层防环与拓扑稳定
brctl showstp <br> 或 bridge fdb show 检查端口角色与 MAC 学习情况。三 访问控制与流量隔离
docker network create --internal 创建无外网桥,仅允许显式端口映射或白名单通信。daemon.json 的 “icc”: false 关闭容器间互通,按需以白名单方式在 DOCKER-USER 链放行。-P/--publish-all 造成过度暴露;定期审计 iptables -S | grep DOCKER。四 加密、监控与变更管理
tcpdump -i br0 -nn -vv 观察二层异常广播/未知单播;bridge fdb show 核对 MAC 漂移。brctl show、ip addr show、iptables-save/nft list ruleset。五 关键配置示例
# 1) 创建桥与上行口(eth0 仅二层加入,不配 IP)
sudo ip link add name br0 type bridge
sudo ip link set br0 up
sudo ip link set eth0 master br0
sudo ip link set eth0 up
# 2) 为桥分配网关 IP(示例网段 192.168.10.0/24)
sudo ip addr add 192.168.10.1/24 dev br0
# 3) 启用 STP(生产有冗余链路时建议开启)
sudo brctl stp br0 on
# 4) 限制广播/未知单播(示例:丢弃来自 eth1 的广播)
sudo ebtables -A FORWARD -i eth1 --pkttype broadcast -j DROP
sudo ebtables -A FORWARD -i eth1 --pkttype multicast -j DROP
# 5) 默认 FORWARD DROP,按需放行(示例:放行已建立的 TCP 会话)
sudo iptables -P FORWARD DROP
sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
sudo iptables -A FORWARD -i br0 -s 192.168.10.0/24 -p tcp --dport 443 -j ACCEPT
# 1) 创建无外网内部桥
docker network create --driver bridge --internal --subnet=192.168.20.0/24 internal_net
# 2) 关闭容器间互通
# /etc/docker/daemon.json
{ "icc": false }
# 3) 仅暴露必要端口,绑定宿主管理 IP
docker run -d --network internal_net --name app1 \
-p 10.0.0.10:8080:80 myapp
# 4) 在 DOCKER-USER 链做白名单(示例:仅允许 192.168.10.0/24 访问 8080)
sudo iptables -I DOCKER-USER -p tcp --dport 8080 ! -s 192.168.10.0/24 -j DROP
# 初始化 Swarm 并创建加密 overlay
docker swarm init --advertise-addr eth0
docker network create --driver overlay --attachable --opt encrypted myoverlay
# 防火墙放行 VXLAN 4789/UDP
sudo firewall-cmd --add-port=4789/udp --permanent && sudo firewall-cmd --reload
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。