V2EX 21小时前
[Docker] docker 重磅安全漏洞
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

在使用Docker进行端口映射时,通常会通过iptables的INPUT Chain设置白名单规则来限制访问IP。然而,Docker为了实现其功能,会自行管理iptables,插入一系列名为DOCKER的Rule Chain,绕过INPUT Chain的管理,导致非白名单IP也能访问。这与防火墙默认的白名单安全理念相悖。文章建议关闭Docker的自动防火墙管理功能,通过修改/etc/docker/daemon.json添加"iptables": false,然后手动清理Docker生成的Rule Chain,并自行管理防火墙规则,以增强安全性。

🛡️ Docker端口映射安全隐患:Docker在进行端口映射时,会绕过iptables的INPUT Chain,插入自定义的Rule Chain,使得非白名单IP也能访问。这是因为Docker默认采用黑名单机制管理iptables,与通用的白名单安全策略相冲突。

💡 Docker绕过iptables的机制:通过执行`iptables --list --verbose --numeric`和`iptables --list --verbose --numeric --table nat`命令,可以发现Docker在iptables中创建了大量以DOCKER命名的Rule Chain,这些Chain的插入使得Docker的网络流量管理独立于传统的防火墙规则。

✅ 规避风险的配置方案:为了解决这一安全问题,建议在`/etc/docker/daemon.json`文件中添加`"iptables": false`来关闭Docker的自动防火墙管理功能。

🛠️ 手动管理防火墙的必要性:关闭Docker的自动管理后,需要手动清理Docker先前添加的所有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 防火墙 安全
相关文章