Docker 2375端口漏洞 全网安全风险报告

1. Docker简述

Docker图标

Docker是一个开源的应用容器引擎,基于LXC的高级容器引擎,源代码托管在Github 上,基于go语言并遵从Apache2.0协议,开源让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2. Docker 2375端口安全风险

为了实现集群管理,Docker提供了远程管理接口。Docker Daemon作为守护进程,运行在后台,可以执行发送到管理接口上的Docker命令。正是因为错误地使用了Docker远端接口,引起了安全漏洞,因此在启动Docker Daemon时,加入-H 0.0.0.0:2375,Docker Daemon就可以接收远端的Docker Client发送的指令。Docker是把2375端口作为非加密端口暴露出来,一般是用在测试环境中。此时,没有任何加密和认证过程,只要知道Docker主机的IP,任何人都可以管理这台主机上的容器和镜像。

Docker Daemon

2.1. 使用docker命令连接

当$HOST主机以docker daemon -H=0.0.0.0:2375方式启动daemon时,导致2375端口对外网开放,攻击者可以直接用Docker命令连接并管理docker daemon进行直接操作:

docker -H tcp://$HOST:2375 info

docker连接查看INFO信息

2.2. 进入容器获取SHELL

使用exec命令进入容器调用/bin/sh:

docker -H x.x.x.x:2375 exec -it 78c310597d11 "/bin/sh"

使用命令连接管理容器

3. 基于全网Docker 安全风险分析

对于全网范围内暴露出来的Docker 2375端口,部分用户会使用2376端口来配置。海特实验室进行了一次统计分析,以此进一步了解目前的安全风险分析。

对应端口号开放的Docker服务数量表

对于这2000+直接暴露在公网的Docker服务都有可能随时被攻击者入侵,以及破坏,或者用来发动网络DDOS攻击等危害。

3.1. Docker版本分析

我们基于这些暴露在全网中的docker进行版本分析,以便了解在这些有安全风险的Docker都存在于哪些系统版本和软件版本中。

Docker版本数量百分比TOP 5

Docker版本数量TOP 5

通过数据对比我们发现,暴露在公网中存在安全风险的Docker版本主要集中于1.13.1/1.12.6 占比达到28%。

KernelVersion版本数量百分比TOP 5

KernelVersion版本数量TOP 5

同时我们对比了系统内核版本,发现问题主要集中在3.13.0/4.4.0版本中。

对于暴露在互联网中的存在安全风险的Docker主要集中在以系统版本3.13.0/4.4.0以Docker 1.13.1/1.12.6的版本中。建议使用以上版本的用户进一步加强安全措施并有效加固服务器。避免服务器被入侵,以及破坏的可能。

3.2. 地理分布分析

对于这些暴露在互联中存在安全风险的Docker,进行IP归属地统计,帮助我们分析对于Docker 2375/2376端口问题,主要集中于那些国家地区。

存在安全风险的Docker地区分布版本TOP 5百分比

存在安全风险的Docker地区分布版本数量

通过数据对比我们发现Docker主要安全风险集中于美国和中国,同时我们建议对Docker的安全风险进行进一步加固。

4. 安全加固建议

1. 建议在使用Docker时将2375端口监听在内网IP地址,避免直接暴露在互联网中。

2. 公网中使用TLS的docker remote api(使用2376端口)。

原文发布于微信公众号 - 安恒信息(DBAPP2013)

原文发表时间:2017-02-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏云计算D1net

8个你可能不知道的Docker知识

自从上世纪 90 年代硬件虚拟化被主流的技术广泛普及之后,对数据中心而言,发生的最大的变革莫过于容器和容器管理工具,例如:Docker。在过去的一年内,Dock...

37350
来自专栏机器之心

教程 | 如何用Docker成为更高效的数据科学家?

57770
来自专栏Java面试通关手册

可能是把Docker的概念讲的最清楚的一篇文章

本文只是对Docker的概念做了较为详细的介绍,并不涉及一些像Docker环境的安装以及Docker的一些常见操作和命令。

32420
来自专栏生信技能树

跟着jimmy学docker系列之第2讲:一个软件一个容器

回过头来看当初在生信技能树发布的docker教程已经是2017-07-07的事情了,那是一个好日子?:

16720
来自专栏互联网杂技

Docker,改变程序世界的箱子

Docker容器是什么鬼? 简言之, Docker容器就是一个软件集装箱。 装什么? 特定版本的操作系统、数据库、服务器程序和 web 应用等…… ? ? ? ...

36550
来自专栏我是攻城师

8 个你可能不知道的 Docker 知识

30730
来自专栏北京马哥教育

高中生也能读懂的Docker入门教程

Docker 是 Golang 编写的, 自 2013 年推出以来,受到越来越多的开发者的关注。如果你关注最新的技术发展,那么你一定听说过 Docker。不管...

40470
来自专栏西安-晁州

Docker学习之基本概念

Docker学习之基本概念 作为一个后端noder,不了解docker有点说不过去,这节开始,学习一些docker层面的东西。 什么是docker Docker...

342120
来自专栏纯洁的微笑

Docker(一):Docker入门教程

如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,D...

36450
来自专栏云计算

OpenShift的容器镜像(第1部分):目标

本文来源于2017 EMEA (Europe, the Middle East and Africa,欧洲,中东和非洲) 红帽技术交流会议的会议记录,与会者包括...

29460

扫码关注云+社区

领取腾讯云代金券