Docker 火了!外部网络可直接访问映射到 127.0.0.1 的服务。。。

博客揭示了Docker的一个安全问题,即使通过-p 127.0.0.1:80:80将端口映射到回环地址,外部仍能访问服务。原因是Docker的Iptables规则允许通过主机IP访问容器。文章通过概念验证和解决方案阐述了问题,并建议Docker改进iptables规则以增强安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这两天 Hacker News 上面有一个贴子火了,这是一封发给 Docker 安全团队的邮件,主要讲的是 Docker 有一个非常离谱的安全隐患。

即使你通过像 -p 127.0.0.1:80:80这样的参数将端口暴露到回环地址,外部仍然可以访问该服务,怎么回事呢?

原因其实很简单,Docker 添加了这样一条 Iptables 规则:

🐳  → iptables -nvL DOCKERChain DOCKER (2 references) pkts bytes target prot opt in       out     source    destination    0 0     ACCEPT tcp  --  !docker0 docker0 0.0.0.0/0 172.17.0.2  tcp dpt:80

只要外部攻击者通过这台主机将流量发送到 172.17.0.2:80,就会匹配这条规则并成功访问容器中的服务,127.0.0.1 并没有什么卵用。

尴尬的是,选择将端口映射到 127.0.0.1 的用户基本上都是觉得这样很安全,以至于他们不再想采取进一步的安全措施。现在问题来了,映射到 127.0.0.1 不能说是非常安全吧,只能说是与安全毫不相干。。。

# 概念验证

下面通过一个例子来验证。

在 A 机器上运行一个 PostgreSQL 容器,并将端口映射到 127.0.0.1。

# IP: 192.168.0.100🐳  → docker run -e POS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值