

























这是一个创建于 324 天前的主题,其中的信息可能已经有所发展或是发生改变。
我们在使用 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 的防火墙,来加强安全。
1 0x535 2025 年 7 月 25 日 via iPhone还以为是什么呢… 标题党 |
3 julyclyde 2025 年 7 月 26 日啊? INPUT 链?为什么是 INPUT 链? |
4 laminux29 2025 年 7 月 26 日因为当你需要允许某个 IP 能访问本机的某个端口,正规的做法是,写一条规则插入到 INPUT 链中,比如: iptables --insert INPUT --protocol tcp --dport 3306 --source 11.22.33.44 --jump ACCEPT |
5 0x535 2025 年 7 月 26 日 via iPhone@laminux29 我知道有这个问题存在,十年前就有人提出过 issue ,官方认定是 feature 而不是 bug 。 到你这儿成了重磅安全漏洞了,你是不是对这几个字有什么误解? |
6 laminux29 2025 年 7 月 26 日我遇到太多的场景,是需要通过 OS 内的防火墙,来给 docker instance 设置 IP 白名单,比如以下 3 种经典场景: 1.云服务器并不是从平台直接拿的,而是由同事或运维给的。他们为了图方便,把平台上的防火墙给直通,然后把防火墙的控制权下放给 OS 的内部防火墙,比如 iptables 。 2.拿到的云服务器,是测试用的专用系统,默认所有的安全规则都是清空的。比如 iptables 被清空,selinux 被关闭,直接启用 root 登录等等。 3.乙方拿到甲方机房的 2 台虚拟机,第一台用于 docker db ,第二台用于 docker web server ;甲方机房的同网段内还有其他虚拟机,乙方的 docker db 只能给乙方的 docker web server 使用,因此需要通过 iptables 设置白名单,否则有可能被甲方机房内其他服务器上的病毒或木马攻击。 至于技术信心,这个话题,只是计算机工程专业而已,没任何难度...有难度的是需要依赖数学的算法、数据分析、AI 等专业。当然,docker 官方故意恶心人,对 iptable 进行反向设计,那么无论技术多牛的人,除非纪律性拉满,把测试验证做完,否则都容易被这个问题给坑了。 在安全上,这个所谓的特性,就是重磅安全漏洞,目前已经有很多忽略测试的人被坑了。 |
7 laminux29 2025 年 7 月 26 日另外,防火墙,比如 iptables 、Windows 的内置防火墙,设计原理都是白名单制的。也就是默认拒绝,除非添加白名单规则。Docker 这种反向设计,会导致在系统运维时,每一种有共识的设计、逻辑、代码,都需要再验证一次,那么会导致安全这个方面的工作量被迫拉满。 举个假设的例子,Intel 与 AMD ,把加法指令,定义为计算两个操作数之和,多年以来,这种设计已经成为计算机的共识。然而,docker 官方在最近几年,出品了一款 CPU ,它把加法指令与减法指令进行互换,并且称之为 [特性] ,你觉得这是不是重磅漏洞? |
9 laminux29 2025 年 7 月 27 日@julyclyde docker 的网络模式取决于 linux 的能力。对于 Debian 来说可以让 docker 有 nat 、host 、bridge 以及隔离。 |
11 laminux29 2025 年 7 月 27 日@julyclyde 我写过基于二开 iptables 的全自动化 NAT + Bridge 的管理器,我认为至少我对 iptables 的理解,比你熟悉,所以你没必要建议我再去学习 iptables 。 你还没抓住这个问题的重点,就是 docker 官方,把业内通用的防火墙白名单机制,反向设计成黑名单形式,还美名为特性。 说白了,docker 官方,没有二开 iptables 的能力。人家 VMware 在 Windows ,没有依赖 Windows 的防火墙,而是通过二开,实现了一套完整的网络管理系统,彻底解决了这个问题。docker 官方没有这个能力,依赖 iptables ,不仅瞎搞,还嘴硬,这是造成这个漏洞的本质原因。 |
13 redial39 2025 年 8 月 28 日我是运维. |
14 laminux29 2025 年 8 月 28 日 |
15 redial39 2025 年 9 月 3 日@laminux29 |
16 redial39 2025 年 9 月 3 日即使是在同一个 zone 里, 机器上还有各种安全软件, 前面有 waf,定期漏扫,安骑士..我要这机器 iptables 做什么...徒增烦恼 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。