0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

外部网络可直接访问映射到127.0.0.1 的本地服务

马哥Linux运维 来源:马哥Linux运维 作者:马哥Linux运维 2022-06-30 11:23 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

近日Hacker News 上面有一个贴子[1]火了,这是一封发给 Docker 安全团队的邮件,主要讲的是 Docker 有一个非常离谱的安全隐患。即使你通过像-p 127.0.0.180这样的参数将端口暴露到回环地址,外部仍然可以访问该服务,怎么回事呢?

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

→iptables-nvLDOCKER
ChainDOCKER(2references)
pktsbytestargetprotoptinoutsourcedestination
00ACCEPTtcp--!docker0docker00.0.0.0/0172.17.0.2tcpdpt: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
→dockerrun-ePOSTGRES_PASSWORD=password-p127.0.0.15432postgres

② 同一个局域网中的 B 机器添加路由表,将所有访问172.16.0.0/12的流量指向 A 机器。

#IP:192.168.0.200
→iprouteadd172.16.0.0/12via192.168.0.100

③ 在 B 机器中扫描 A 机器的端口。

→nmap-p5432-Pn--open172.16.0.0/12
StartingNmap7.92(https://nmap.org)at2021-11-0515:00CDT
Nmapscanreportfor172.17.0.2
Hostisup(0.00047slatency).

PORTSTATESERVICE
5432/tcpopenpostgresql

④ 在 B 机器中直接连接 PostgreSQL。

→psql-h172.17.0.2-Upostgres
Passwordforuserpostgres:

解决方案

事实上不仅仅是 127.0.0.1,你将容器端口映射到主机的任何一个地址,外部都可以访问到,这就离了大谱了!

邮件作者给 Docker 团队提出了一个解决方案,希望能优化 Docker 的 iptables 规则:

① 首先要严格限制允许访问容器端口的源地址和网络接口,例如docker run -p 127.0.0.15432iptables 规则如下:

ChainDOCKER(2references)
pktsbytestargetprotoptinoutsourcedestination
00ACCEPTtcp--!docker0docker00.0.0.0/0172.17.0.2tcpdpt:5432

改进后的 iptables 规则如下:

ChainDOCKER(2references)
pktsbytestargetprotoptinoutsourcedestination
00ACCEPTtcp--lodocker0127.0.0.1/8172.17.0.2tcpdpt:5432

同理,如果主机的地址为192.168.0.100,掩码为24,那么docker run -p 192.168.0.1005432的 iptables 规则就应该是:

ChainDOCKER(2references)
pktsbytestargetprotoptinoutsourcedestination
00ACCEPTtcp--eth0docker0192.168.0.0/24172.17.0.2tcpdpt:5432

② 最后要修改默认行为,如果使用-p参数时没有指定任何 IP 地址,就默认映射到 127.0.0.1。

虽然评论区也有很多人给出了添加 iptables 规则来进行限制的方案,但这是不现实的,目前全世界有成千上万的用户在使用-p参数将容器端口映射到 127.0.0.1,攻击者估计早就发现了这个漏洞,我们不能期望用户自己添加 iptables 规则来限制外部访问,最靠谱的方式还是等 Docker 官方修复这个 bug 然后升级吧。

审核编辑 :李倩


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 端口
    +关注

    关注

    4

    文章

    1102

    浏览量

    33853
  • 容器
    +关注

    关注

    0

    文章

    522

    浏览量

    22847
  • Docker
    +关注

    关注

    0

    文章

    526

    浏览量

    14047

原文标题:Docker 暴重大安全漏洞:外部网络可直接访问映射到 127.0.0.1 的本地服务

文章出处:【微信号:magedu-Linux,微信公众号:马哥Linux运维】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    服务器数据恢复—RAIDZ多盘离线导致服务器崩溃的数据恢复案例

    某存储设备中一共有40块磁盘组建存储池,其中4块磁盘作为全局热备盘使用。存储池内划分出若干空间映射到服务器使用。 服务器存储设备在没有断电、进水、异常操作、供电不稳定等外部因素的情况
    的头像 发表于 12-11 14:16 76次阅读
    <b class='flag-5'>服务</b>器数据恢复—RAIDZ多盘离线导致<b class='flag-5'>服务</b>器崩溃的数据恢复案例

    飞凌嵌入式ElfBoard-文件I/O的深入学习之存储映射I/O

    较低。对于存储映射I/O来说,由于源文件和目标文件都已映射到了应用层的内存区域中,所以直接操作映射区来实现文件复制。使用存储映射I/O减少了
    发表于 12-06 16:39

    映射的操作

    为了能直接操作 ODR 的某个 Bit 位,在内核中开辟了一块地址区域(位带别名):可将 ODR这类 Bit 位(位带区)映射到位带别名区域对应的地址,只需操作映射后的地址,就可实现操作 ODR1 位
    发表于 11-18 07:03

    内网穿透:从原理到实战部署

    本文介绍了内网穿透技术的原理及其应用解决方案。由于NAT网络和动态IP的限制,外部无法直接访问内网设备。内网穿透通过公网中转服务器建立连接通道,实现
    的头像 发表于 11-04 16:57 1282次阅读
    内网穿透:从原理到实战部署

    飞凌嵌入式ElfBoard-常用的网络服务的搭建之NFS服务搭建

    的选择。通过NFS服务,主机将用户指定的目录通过网络共享给目标机(和windows的文件网络共享类似)。目标机可以直接运行存放于Linux主机共享目录下的二进制程序,这样调试程序时十分
    发表于 10-22 09:23

    服务器数据恢复—SUN RAID6存储LUN重复映射致数据损坏与恢复案例

    一台服务器跑新的应用。服务器管理员在原服务器在线的状态下,将其中一个lun映射到一台新服务器上。实际上,这个刚
    的头像 发表于 09-25 12:01 196次阅读

    网络访问卡慢怎么办?

    过程经历了用户本地客户端、客户端到接入服务器之间的网络节点以及服务器。在这三个环节中,任意一个环节出现问题都有可能导致网站访问卡慢。
    的头像 发表于 06-28 14:51 546次阅读

    本地网站秒变公网可访问!开发者必备的内网穿透工具

    效率拉满! 为什么开发者需要这个技能? 远程协作 :前端开发完本地页面,直接分享链接给后端/产品,无需部署到测试服务器 实时预览 :修改代码后刷新公网链接,即时看到效果,告别反复打包部署 准备工作 一台运行
    的头像 发表于 06-19 10:50 545次阅读
    <b class='flag-5'>本地</b>网站秒变公网可<b class='flag-5'>访问</b>!开发者必备的内网穿透工具

    内网穿透和公网ip什么区别

    原理:设备通过路由器获取独立的公网IP地址,直接暴露在互联网中。 典型配置: 向运营商申请固定公网IP(或动态公网IP+DDNS) 在路由器设置端口转发(如将公网IP的80端口映射到内网服务器) 优缺点: ✅ 使用动态IP成本
    的头像 发表于 05-14 14:18 518次阅读
    内网穿透和公网ip什么区别

    新品 | 服务:InfineonSpice 离线仿真工具

    的全套功能。用户可直接访问所有英飞凌SPICE产品模型,但由于它是作为开放式工具创建的,因此也可访问竞争对手的SPICE模型和无源元件的SPICE模型,在功能或性能
    的头像 发表于 04-30 18:21 723次阅读
    新品 | <b class='flag-5'>服务</b>:InfineonSpice 离线仿真工具

    Wi-Fi 定位服务

    的 Wi-Fi 网络数据库进行比较。 Wi-Fi 定位系统包含以下关键组件: 用户设备中的 Wi-Fi 无线电设备,用于检测附近的网络。 将 MAC 地址等 Wi-Fi 网络信息映射到
    发表于 04-17 15:01

    AIWA JX705维修手册 (解密版,可直接打印)

    AIWA JX705 维修手册免费下载。独家解密,可直接打印
    发表于 04-16 16:42 20次下载

    InterBase和Firebird数据访问组件介绍

    和 Android 平台。 基于 IBDAC 的应用程序使用 InterBase 直接连接到服务器 客户。IBDAC 旨在帮助程序员更快、更清晰地开发 InterBase 数据库应用程序。 与 InterBase 的本地连接
    的头像 发表于 01-23 11:50 946次阅读
    InterBase和Firebird数据<b class='flag-5'>访问</b>组件介绍

    服务本地网关的选择

    在当今的数字化时代,企业面临着越来越多的数据管理和处理需求。为了满足这些需求,企业可以选择使用云服务本地网关。这两种技术各有优势和劣势,企业在选择时需要根据自身的业务需求、成本预算、安全性要求等
    的头像 发表于 01-02 17:47 1007次阅读

    教你三招异地访问NAS

    NAS 设备上安装节点小宝客户端,并在节点小宝的内网穿透界面添加服务,填入 NAS 设备的内网地址与端口号,再设置一个独属于自己的外网地址,之后便可以通过该外网地址直接访问 NAS. 比如,你在家中设置好了群晖 NAS 的内网穿透,之后在外
    的头像 发表于 01-02 11:26 1854次阅读
    教你三招异地<b class='flag-5'>访问</b>NAS