云安全—docker Deamon攻击面

2023-11-04 01:52
文章标签 安全 docker 攻击面 deamon

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

这篇关于云安全—docker Deamon攻击面的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342418

相关文章

Centos7 firewall和docker冲突问题及解决过程

《Centos7firewall和docker冲突问题及解决过程》本文描述了一个在CentOS7上使用firewalld和Docker容器的问题,当firewalld启动或重启时,会从iptable... 目录系统环境问题描述问题排查解决办法总结本文只是我对问题的记录,只能用作参考,不能China编程说明问题,请

input的accept属性让文件上传安全高效

《input的accept属性让文件上传安全高效》文章介绍了HTML的input文件上传`accept`属性在文件上传校验中的重要性和优势,通过使用`accept`属性,可以减少前端JavaScrip... 目录前言那个悄悄毁掉你上传体验的“常见写法”改变一切的 html 小特性:accept真正的魔法:让

python项目打包成docker容器镜像的两种方法实现

《python项目打包成docker容器镜像的两种方法实现》本文介绍两种将Python项目打包为Docker镜像的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目录简单版:(一次成功,后续下载对应的软件依赖)第一步:肯定是构建dockerfile,如下:第二步

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

Redis的安全机制详细介绍及配置方法

《Redis的安全机制详细介绍及配置方法》本文介绍Redis安全机制的配置方法,包括绑定IP地址、设置密码、保护模式、禁用危险命令、防火墙限制、TLS加密、客户端连接限制、最大内存使用和日志审计等,通... 目录1. 绑定 IP 地址2. 设置密码3. 保护模式4. 禁用危险命令5. 通过防火墙限制访问6.

Docker + Redis 部署集群的实现步骤

《Docker+Redis部署集群的实现步骤》本文详细介绍了在三台服务器上部署高可用Redis集群的完整流程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录一、环境准备1. 服务器规划(3 台服务器)2. 防火墙配置(三台服务器均执行)3. 安装 docke

解决docker目录内存不足扩容处理方案

《解决docker目录内存不足扩容处理方案》文章介绍了Docker存储目录迁移方法:因系统盘空间不足,需将Docker数据迁移到更大磁盘(如/home/docker),通过修改daemon.json配... 目录1、查看服务器所有磁盘的使用情况2、查看docker镜像和容器存储目录的空间大小3、停止dock

docker 重命名镜像的实现方法

《docker重命名镜像的实现方法》在Docker中无法直接重命名镜像,但可通过添加新标签、删除旧镜像后重新拉取/构建,或在DockerCompose中修改配置文件实现名称变更,感兴趣的可以了解一下... 目录使用标签(Tagging)删除旧的php镜像并重新拉取或构建使用docker Compose在Do

Java JUC并发集合详解之线程安全容器完全攻略

《JavaJUC并发集合详解之线程安全容器完全攻略》Java通过java.util.concurrent(JUC)包提供了一整套线程安全的并发容器,它们不仅是简单的同步包装,更是基于精妙并发算法构建... 目录一、为什么需要JUC并发集合?二、核心并发集合分类与详解三、选型指南:如何选择合适的并发容器?在多

docker编写java的jar完整步骤记录

《docker编写java的jar完整步骤记录》在平常的开发工作中,我们经常需要部署项目,开发测试完成后,最关键的一步就是部署,:本文主要介绍docker编写java的jar的相关资料,文中通过代... 目录all-docker/生成Docker打包部署文件配置服务A的Dockerfile (a/Docke