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

 

在使用Docker进行端口映射时,仅依赖iptables的白名单规则存在安全风险。Docker默认会自行管理iptables,插入名为DOCKER的Rule Chain,绕过INPUT Chain的直接管理,并采用黑名单机制,导致未在白名单的IP地址也能访问映射端口。为了加强安全性,建议在/etc/docker/daemon.json文件中添加"iptables": false来关闭Docker的自动防火墙管理功能,然后手动清理Docker添加的Rule Chain,并自行管理Docker的防火墙规则,以符合白名单安全理念。

💡 Docker的端口映射机制存在潜在安全漏洞:通过`-p`或`--publish`映射端口后,即使在iptables的INPUT Chain中设置了白名单规则,不在白名单内的IP地址也可能访问到该端口。这是因为Docker会自行管理iptables,插入名为DOCKER的Rule Chain,绕过了INPUT Chain的直接控制。

🚫 Docker防火墙机制与安全理念冲突:Docker默认采用的是黑名单制的防火墙策略,这与传统的软硬件防火墙(如iptables、Windows防火墙)普遍采用的白名单制安全理念相悖。白名单制只允许明确授权的IP访问,而黑名单制则允许所有未被禁止的IP访问,安全性较低。

🛠️ 建议关闭Docker的自动防火墙管理并手动配置:为提升安全性,用户应在`/etc/docker/daemon.json`配置文件中添加`"iptables": false`选项,以禁用Docker对iptables的自动管理。之后,需要手动清理Docker之前添加的所有Rule Chain,并自行配置iptables规则,采用白名单策略来管理Docker容器的网络访问。

🔍 验证Docker的iptables规则:可以通过`iptables --list --verbose --numeric`和`iptables --list --verbose --numeric --table nat`命令来查看iptables的详细规则,从而发现Docker插入的以DOCKER命名的Rule Chain,了解其防火墙的实际运作方式。

我们在使用 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 端口映射 安全管理 防火墙
相关文章