云安全—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,而是通过支持多个容器运行时来提供更好的灵活性和选择性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 带安装教程

2023全新小程序广告流量主奖励发放系统源码 流量变现系统 分享软件,吃瓜视频,或其他资源内容,通过用户付费买会员来变现,用户需要付费,有些人喜欢白嫖,所以会流失一部分用户,所以就写了这个系统…

C++二叉搜索树

本章主要是二叉树的进阶部分,学习搜索二叉树可以更好理解后面的map和set的特性。 1.二叉搜索树概念 二叉搜索树的递归定义为:非空左子树所有元素都小于根节点的值,非空右子树所有元素都大于根节点的值,而左右子树也是二叉搜索树…

GEE数据集——原住民土地(原住民土地地图)数据集

原住民土地(原住民土地地图) 土地承认是人们在日常生活中融入原住民存在和土地权利意识的一种方式。这通常在仪式、讲座或教育指南开始时进行。它可以是一种明确但有限的方式来认识殖民主义和第一民族的历史以及定居者殖民社会变革的需要。在这种情况下…

Electron[1] 缘起桌面应用

1 Electron是什么? 官方的解释: Build cross-platform desktop apps with JavaScript, HTML, and CSS 简单说,就是通过前端技术栈实现桌面应用的开发,桌面应用包括:linux、window、mac。 1.1 中文官网地址 Build c…

Excel中行列范围的转换

将 行&#xff1a;1,4-5,8,11 列&#xff1a;a,c-e,f 这种写法转换成单元格地址的方法。 public static Tuple<List<int>, List<string>> ConvertRowColumn(string rowRep, string colRep){List<int> rowIdxs new List<int>();rowRep rowRep.…

053基于web+springboot的宠物咖啡馆平台的设计与实现

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本基于Spring Boot的宠物咖啡馆平台的设计与实现有管理员和用户以及看护师三个角色。用户功能有个人中心&#xff0c;咖啡菜品管理&a…

后端nginx报reset by peer while reading upstream

目录 1 解决 1 解决 加大nginx请求体或者nginx缓存 或者浏览器读取json大小设置成—1

微信小程序授权登录获取用户的openid

小程序可以通过微信官方提供的登录能力方便地获取微信提供的用户身份标识&#xff0c;快速建立小程序内的用户体系然而因为小程序中的openid不可以直接使用需要用code&#xff08;登录凭证&#xff09;去换取openid 获取openid的思路 获取openid首先需要调用小程序的login方法…

S5PV210(十):LCD

本文主要探讨210的LCD相关知识。 LCD LCD称液晶(透光背光呈色),可在电信号驱动下使液晶分子旋转,呈现不同的颜色(被动发光) lcd接口为TTL接口(5V为1&#xff0c;0V为0),不能传输太远,远距离传输方式:SoC(TTL) ->VGA-> LCD(TTL) 其他显设备:CRT(…

基于STM32设计的室内环境监测系统(华为云IOT)_2023

一、设计需求 基于STM32+华为云物联网平台设计一个室内环境监测系统,以STM32系列单片机为主控器件,采集室内温湿度、空气质量、光照强度等环境参数,将采集的数据结果在本地通过LCD屏幕显示,同时上传到华为云平台并将上传的数据在Android移动端能够实时显示、查看。 【1…

windows自动登陆

新建文本粘贴下面代码&#xff0c;另存为注册表文件 Windows Registry Editor Version 5.00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Driver Signing] "Policy"hex:00[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"DefaultUserN…

2024最新mac电脑清理垃圾的软件有哪些?

mac电脑是许多人喜爱的电子产品&#xff0c;它拥有优美的设计、流畅的操作系统和强大的性能。但是&#xff0c;随着使用时间的增长&#xff0c;mac电脑也会积累一些不必要的垃圾文件&#xff0c;这些文件会占用宝贵的存储空间&#xff0c;影响电脑的运行速度和稳定性。因此&…

微信小程序获取openid

1.需要小程序中调用 wx.login获取临时code值&#xff08;每次获取的code值只能用一次&#xff09; wx.login({success (res) {console.log(res)} }) 打印结果为&#xff1a; 2.调用微信提供的apid接口&#xff0c;获取openid&#xff0c;入参需要三个参数&#xff1a;AppID(小…

mysql执行顺序与索引算法

mysql执行顺序与索引算法 书写顺序&#xff1a; select->distinct->from->join->on->where->group by->having->order by->limit必须字段&#xff1a;select、from可选字段&#xff1a;distinct、join、on、where、group by、having、sum、count、…

C#中LINQtoObjects、LINQtoDataSet和LINQtoXML

目录 一、使用LINQ操作数组和集合 二、使用LINQ操作DataSet数据集 1.AsEnumerable()方法 2.CopyToDataTable()方法 3.AsDataView()方法 4.Take()方法 5.Sum()方法 6.示例 &#xff08;1&#xff09;源码 &#xff08;2&#xff09;生成效果 三、使用LINQ操作XML 1.…

(论文阅读11/100)Fast R-CNN

文献阅读笔记 简介 题目 Fast R-CNN 作者 Ross Girshick 原文链接 https://arxiv.org/pdf/1504.08083.pdf 目标检测系列——开山之作RCNN原理详解-CSDN博客 Fast R-CNN讲解_fast rcnn-CSDN博客 Rcnn、FastRcnn、FasterRcnn理论合集_rcnn fastrcnn fasterrcnn_沫念的博客…

单例模式浅析

程序中仅存在一个对象实例&#xff0c;避免重复构建浪费资源。 1.饿汉式 主要分为3步&#xff1a;1.构造方法私有化 2.内部创建静态实例化对象 3.提供公有静态方法&#xff0c;返回对象实例 public class SingleTon { // 构造方法私有化private SingleTon(){} // 内部…

Java字符串常用函数 详解5000字 (刷题向 / 应用向)

1.直接定义字符串 直接定义字符串是指使用双引号表示字符串中的内容&#xff0c;例如"Hello Java"、"Java 编程"等。具体方法是用字符串常量直接初始化一个 String 对象&#xff0c;示例如下&#xff1a; 1. String str"Hello Java"; 或者 …

【C++语法讲解】 | 运算符重构 | 三种运算符的重构方式 |代码演示

文章目录 1&#xff0c;简述2&#xff0c;结构体的定义1&#xff0c;结构体的声明2&#xff0c;结构体的申请 3.1 &#xff0c;在结构体中重构3.2 在结构体外进行重构 1&#xff0c;简述 通常情况下&#xff0c;我们会创建一些简单的数据结构以应对日常的算法使用&#xff0c;…

npm create vue@latest 原理

文章目录 使用实际调用流程 使用 npm create vitelatest当执行上述命令时&#xff0c;会通过一个可交互的命令行终端下载模版&#xff0c;实际最终是调用 create-vue 库实现的 实际调用流程 npm create、innit 实际是 npm init 别名 ,npm init 后面加包名时&#xff0c;实际…