云安全—docker Deamon攻击面

0x00 前言

本篇文章主要是讲docker Deamon的原理以及docker Deamon攻击面相关的内容,属于抛砖引玉系列,如有不妥之处还请斧正。

0x01 docker Deamon

还是先来看一下docker Deamon的一些相关知识,依旧是采用问答的方式来进行。为了文章的整体完整度,所以会加一些基本内容介绍

  • 什么是docker Deamon
  • docker Deamon是否可以远程调用

1.什么是docker Deamon

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

docker Deamon实际上就是docker的守护进程,作为docker的核心来处理docker命令行发起的一些命令。

2.docker Deamon是否可以远程调用

我们都明确,docker是一个CS架构的,平时我们操作的都是他的客户端,但是由于常规情况下,他是CS一体的,但是会存在一种情况就是CS并非一体,而是分离部署的,客户端和服务端不在同一台服务器上,那么就会涉及到docker Deamon的远程调用的问题。

默认情况下,dockerd在unix套接字上监听本地docker client连接。配置远程连接有加密(基于TLS)和不加密两种方式,都可以通过systemd或者daemon.json完成

[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375

远程调用docker Deamon有两种方式,一种是非安全模式,一种是安全模式,在非安全模式下,任何客户端都可以直接连接服务端,操作服务端的内容,还有一种就是安全的SSL的方式,通过证书的方式来进行远程的访问,当然推荐的肯定是安全模式会好很多。

默认情况下,docker Deamon端口是2375

0x02 docker Deamon的攻击面

实际上docker Deamon这个攻击面不仅仅出现在云环境下,就算是只有docker部署的集群的情况下也是会出现这个问题的,只不过因为k8s包含了docker这个部分,所以才会有这个问题,但是在最新版的k8s中已经弃用了docker

1.不安全端口2375

环境搭建

修改文件docker.service

vim /lib/systemd/system/docker.service

新增配置-H tcp://0.0.0.0:2375
在这里插入图片描述
首先reload一下 systemctl daemon-reload,然后重启docker,systemctl restart docker

访问一下http://192.168.247.156:2375/version,出现如下内容,环境配置成功

在这里插入图片描述

如果此端口暴露的话,那么就可以通过docker执行任意docker命令,比如查看一下启动的docker

docker -H 192.168.247.156:2375 ps

在这里插入图片描述

或者查看信息:docker -H 192.168.247.156:2375 info

在这里插入图片描述

其他操作和本地使用docker没有任何差别

2.证书遗失

既然控制是可以通过证书控制的,那么攻击者如果拿到了证书,自然也可以通过此方式来获取到docker Deamon的相关权限了。

下面是docker的连接方式

docker --tlsverify \ --tlscacert=ca.pem \ --tlscert=cert.pem \ --tlskey=key.pem \ -H=$HOST:2376 version

连接后继续docker相关操作即可。

候选的攻击方式多种多样,可以轻松的获取到目标服务器的权限。

补充知识

docker 优势

Docker 的优势包括:

  1. 简化开发流程:Docker 提供了一个轻量级的容器化解决方案,使得应用程序的开发和部署过程更加简单、快捷和可靠。

  2. 更容易迁移和部署:Docker 容器可以在不同的操作系统和云平台上运行,使得应用程序的迁移和部署变得更加容易。

  3. 节省资源:Docker 容器共享内核和系统资源,使得系统资源的利用率更高。

  4. 更安全:Docker 容器提供了隔离和安全性,使得应用程序在容器内运行时更加安全。

  5. 更具可扩展性:Docker 容器可以通过扩展集群规模来提高应用程序的可用性和可伸缩性。

  6. 开源社区支持:Docker 是一个非常活跃的开源社区,提供了丰富的资源和支持,使得开发者可以更加便捷地使用它。

k8s的优势

Kubernetes(简称K8s)是一个流行的开源容器编排平台,它的优势包括:

  1. 自动化容器管理:Kubernetes通过自动化容器部署、伸缩、故障恢复等操作,简化了应用程序的部署和管理过程,减少了手动操作的出错率。

  2. 跨平台支持:Kubernetes支持多种容器运行时,如Docker和rkt,也支持多个云供应商,如AWS,Azure等,从而使应用程序的部署更加灵活和可移植。

  3. 可靠性和弹性:Kubernetes提供了多点故障恢复和自我修复机制,如果一个容器失败,Kubernetes会自动重启或创建替代的容器,从而确保应用程序的高可用性。

  4. 自定义扩展:Kubernetes提供了许多API和插件,应用程序可以根据需要进行自定义扩展,以满足特定的需求。

  5. 社区支持:Kubernetes具有广泛的社区支持,可以获得社区成员的建议和帮助,从而提高了应用程序的生产力和质量。

k8s 和docker

Kubernetes (k8s) 并没有放弃 Docker,而是放弃了 Docker 作为其默认的容器运行时(CRI)。这是因为在 Kubernetes 的早期版本中,Docker 是唯一可用的容器运行时,因此 Kubernetes 使用了 Docker 的 API 作为其 CRI。然而,随着时间的推移,其他容器运行时,如CRI-O、containerd 和 frakti 等,逐渐成为了 Kubernetes 生态系统的一部分,并且这些容器运行时与 Kubernetes 更紧密地集成。此外,Docker 提供的特性在 Kubernetes 中也不是必需的,并且 Kubernetes 用户需要的特性可以通过其他容器运行时实现。因此,Kubernetes 并没有放弃 Docker,而是通过支持多个容器运行时来提供更好的灵活性和选择性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/116821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

设计模式_访问者模式

访问者模式 介绍 设计模式定义案例问题堆积在哪里访问模式访问模式是行为型设计模式 从对象中分类出算法 这些算法封装为对象, 这样这些算法类很容易扩展,添加新的算法类就可以了不同的VIP用户 在不同的节日 领取不同的礼物if else太多 解决办法小技巧…

专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家

导读 HuggingFace CTO Julien Chaumond认为,在大模型时代,AI民主化至关重要。随着大语言模型和复杂人工智能系统的崛起,持续提升AI技术的可及性有助于确保这些技术的获取和控制不集中在少数强大实体手中。技术民主化促进了机会均等&#xff0…

下载安装PyCharm的步骤

1、首先进入Pycharm官网,并进行下载,日常使用社区版也是OK的 官网:https://www.jetbrains.com/pycharm/download/?sectionwindows 2、可以自定义路径进行安装,注意路径要全英哈 3、大家可以根据自己的需要来进行勾选 4、安装完成…

(免费领源码)小程序+spring boot+masql校园志愿者管理系统99213-计算机毕业设计项目选题推荐

摘 要 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,校园志愿者管理系统被用户普遍使用,为方便用户…

多态 虚函数表深度剖析 纯干货讲解(2)

💯 博客内容:多态 😀 作  者:陈大大陈 🚀 个人简介:一个正在努力学技术的准C后端工程师,专注基础和实战分享 ,欢迎私信! 💖 欢迎大家:这里是CSD…

两种MySQL OCP认证应该如何选?

很多同学都找姚远老师说要参加MySQL OCP认证培训,但绝大部分同学并不知道MySQL OCP认证有两种,以MySQL 8.0为例。 一种是管理方向,叫:Oracle Certified Professional, MySQL 8.0 Database Administrator(我考试的比较…

Mac安装VMware

去官网下载一下VMware Download VMware Fusion | VMware | SG 下载完成之后,打开直接闪退,参考这篇文章解决 解决macOS13安装Fusion13闪退的问题-CSDN博客 然后即可成功顺行

「视频编码软件」Media Encoder(Me) 2024 Mac/win中文版下载安装

Adobe Media Encoder(Me) 2024是一款专业的视频编码工具,它可以将各种视频格式进行转换、压缩和编码,以满足不同媒体平台和设备的需求。 以下是 Media Encoder 2023 的主要功能和新增功能: 视频编码和转换:支持将各种视频格式进…

idea文件比对

idea文件比对 1.项目内的文件比对2.项目间的文件比对3. 剪切板对比4. 版本历史(不同分支和不同commit)对比 1.项目内的文件比对 在项目中选择好需要比对的文件(类),然后选择Compare Files Mac下的快捷键是Commandd, 这样的比对像是git冲突解决一样 …

Leetcode41缺失的第一个正数

思路:原地哈希表 长度为N的数组,没有出现过的正整数一定是1~N1中的一个。 此时会思考能不能用一个哈希表来保存出现过的1~N1的数,然后从 1 开始依次枚举正整数,并判断其是否在哈希表中 但是题目要求常数级别的空间,就不…

OpenGL_Learn06(纹理)

接着之前的OpenGL_Learn05(纹理)-CSDN博客 1. 修改片段着色器 修改片段着色器,仅让笑脸图案朝另一个方向看 >>>>> 纹理坐标的Y轴没有进行改变,需要改变的是X轴的纹理坐标 片段代码改写如下 #version 330 core out…

SpringCloud 微服务全栈体系(十一)

第十章 RabbitMQ 三、SpringAMQP SpringAMQP 是基于 RabbitMQ 封装的一套模板,并且还利用 SpringBoot 对其实现了自动装配,使用起来非常方便。 SpringAmqp 的官方地址:https://spring.io/projects/spring-amqp SpringAMQP 提供了三个功能&…

九、W5100S/W5500+RP2040树莓派Pico<SNTP 获取网络时间>

文章目录 1 前言2 协议简介2.1 什么是SNTP2.2 SNTP的优点2.3 SNTP原理2.4 应用场景 3 WIZnet以太网芯片4 SNTP网络设置示例概述以及使用4.1 流程图4.2 准备工作核心4.3 连接方式4.4 主要代码概述4.5 结果演示 5 注意事项6 相关链接 1 前言 随着科技的不断进步和应用需求的不断变…

el-cascader级联选择器选中一个全选中问题

问题 只选中一个却把同级全选中 解决 :props中添加label、value、children属性 label、value、children属性值需要和后端返回的集合中的字段名保持一致 后端返回数据:

AI:55-基于深度学习的人流量检测

🚀 本文选自专栏:AI领域专栏 从基础到实践,深入了解算法、案例和最新趋势。无论你是初学者还是经验丰富的数据科学家,通过案例和项目实践,掌握核心概念和实用技能。每篇案例都包含代码实例,详细讲解供大家学习。 📌📌📌在这个漫长的过程,中途遇到了不少问题,但是…

redis源码分析之IO多路复用

文章目录 1、简述2、多路复用的三个函数3、创建epoll实例4、绑定端口、监听端口5、向epoll实例注册连接事件6、从epoll实例中获取就绪的事件 1、简述 众所周知,redis是一款抗高并发的利器,据官方压测,单机可达10万qps。但背后实际处理命令的…

07、vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。

目录 问题解决: 问题 vue : 无法加载文件 C:\Users\JH\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本。 在使用 VSCode 时,创建 Vue 项目报的错 创建不了 Vue 项目 解决: 因为在此系统上禁止运行该脚本&#xff0…

什么是DITA?从百度的回答说起

▲ 搜索“大龙谈智能内容”关注GongZongHao▲ 什么是DITA? 把这个问题输入百度,获得以下回答: DITA 是“Darwin Information Typing Architecture”(达尔文信息类型化体系结构)的缩写,它是IBM 公司为OASIS 所支持…

交叉编译程序:以 freetype 为例

1 程序运行的一些基础知识 1.1 编译程序时去哪找头文件? 系统目录:就是交叉编译工具链里的某个 include 目录;也可以自己指定:编译时用 “ -I dir ” 选项指定。 1.2 链接时去哪找库文件? 系统目录&#…

面试算法48:序列化和反序列化二叉树

题目 请设计一个算法将二叉树序列化成一个字符串,并能将该字符串反序列化出原来二叉树的算法。 分析 先考虑如何将二叉树序列化为一个字符串。需要逐个遍历二叉树的每个节点,每遍历到一个节点就将节点的值序列化到字符串中。以前序遍历的顺序遍历二叉…