V2EX 前天 08:20
[Docker] docker 重磅安全漏洞
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

在使用Docker进行端口映射时,仅设置宿主机防火墙的白名单规则存在安全隐患。Docker默认通过其自定义的iptables规则链绕过了宿主机的INPUT链管理,导致非白名单IP也能访问映射端口。这是因为Docker的防火墙机制采用黑名单制,与普遍采用白名单制的防火墙安全理念相悖。为加强安全性,建议关闭Docker的自动防火墙管理功能,通过在`/etc/docker/daemon.json`中添加`"iptables": false`来实现,并手动管理Docker相关的iptables规则链。

🚀 **Docker端口映射的安全隐患**: Docker默认使用`-p`或`--publish`映射端口到宿主机,并依赖iptables进行访问控制。然而,Docker会自行管理iptables,插入名为`DOCKER`的Rule Chain,绕过了宿主机的INPUT链,使得即使在宿主机防火墙设置了白名单,非白名单IP也可能访问到映射的端口。

🚫 **Docker防火墙机制与安全理念冲突**: 与标准的软硬件防火墙(如iptables、Windows防火墙)普遍采用的白名单制不同,Docker的防火墙机制实际执行的是黑名单制,这与“默认拒绝,只允许已知安全连接”的安全核心理念存在冲突,可能导致潜在的安全漏洞。

💡 **关闭Docker自动防火墙管理**: 为解决上述安全问题,建议关闭Docker的自动防火墙管理功能。这可以通过修改Docker的配置文件`/etc/docker/daemon.json`,并添加`"iptables": false`来实现。

🛠️ **手动管理Docker防火墙规则**: 在关闭Docker自动管理功能后,需要手动清理Docker先前插入的iptables Rule Chain,并根据实际需求手动配置iptables规则,以实现更精细和安全的端口访问控制,确保只有授权的IP才能访问Docker服务。

我们在使用 docker 时,一般会使用 -p / --publish 来映射端口到宿主机,然后在 iptables 的 INPUT Chain 里开一条白名单规则,允许指定的 IP 或 IP 范围来访问这个端口。

问题是,很多朋友测试能访问后,很容易偷懒,不再测试别的 IP 是否能访问了。docker 的重磅安全漏洞也就在这里出现。如果你继续测试,你会发现,不在白名单的 IP 地址,也能访问这个端口。

原因在于 docker 自行管理 iptables ,它给 iptables 里插入一大堆 Rule Chain ,绕开了 INPUT Chain 的管理。

通过以下两条命令:

iptables --list --verbose --numeric

iptables --list --verbose --numeric --table nat

可以发现 docker 插入了一堆以 DOCKER 命名的 Rule Chain 。

本来标准的软硬件防火墙,包括 iptables 、Windows 防火墙,为了安全,都是默认使用白名单制,而 docker 的防火墙却是黑名单制的,这与安全理念冲突。

建议关闭 docker 的自行管理防火墙的功能,向 /etc/docker/daemon.json 添加 "iptables": false

然后手动清理 docker 向 iptables 里添加的各种 Rule Chain

最后手动管理 docker 的防火墙,来加强安全。

Fish AI Reader

Fish AI Reader

AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

FishAI

FishAI

鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

联系邮箱 441953276@qq.com

相关标签

Docker 端口映射 iptables 防火墙 安全
相关文章