#渗透测试#SRC漏洞挖掘#云技术基础03之容器相关

目录

一、Podman相关

(一)Podman简介

(二)Pod相关操作

二、容器相关

(一)容器概念

(二)容器的历史发展

(三)Capabilities相关

三、Kubernetes(k8s)相关

(一)Kubernetes简介

(二)Kubernetes的核心概念

(三)Kubernetes的操作

四、Git相关

(一)Git简介

(二)Git的安装

(三)Git的基本使用


一、Podman相关

(一)Podman简介

Podman是Docker的替代产品,它无守护进程。在运行容器时,若不加sudo启动可能会报错,因为默认禁止侦听1024以下端口,例如运行httpd容器可以使用sudo podman run -d --r-m --network host httpd命令。

(二)Pod相关操作

  1. 创建Pod
    • 可以创建名为wha的空pod,命令为podman pod create --name wha
    • 然后向这个pod中加入容器,如运行httpd容器和alpine/curl容器,可以分别使用podman run -d --pod wha httpdpodman run -pod wha -it alpine/curl /bin/asho命令,之后在容器内可以使用curl localhost进行相关操作。

二、容器相关

(一)容器概念

容器是一种轻量级的虚拟化技术,用于将应用程序及其所有依赖项打包在一起,以便在不同的计算环境中进行移植和运行。它提供了一种隔离的运行环境,使得不同应用程序能够在独立的文件系统、网络和进程空间中运行,从而提升了安全性和稳定性。容器是一个轻量级、可执行的软件包,包含运行某个特定应用所需的所有代码、运行时环境、库和配置文件。与运行在物理或虚拟机上的应用不同,容器与宿主机共享内核,但在用户空间中以隔离的方式运行。

(二)容器的历史发展

  1. 早期技术
    • 197x年代引入chroot,它是Linux上最原始的沙盒之一,可以指示进程的新根目录,但chroot中的进程可以访问网络、挂载和其他内核功能,攻击者如破解其中进程,则能够逃逸到主机其余部分。进入chroot目录可以使用sudo chroot /home/userlroots/min/ /bin/bash命令查看主机ip等操作,虽然chroot实现了某种形式的分段,但并不完美。
  2. 重要技术的引入
    • 1999年FreeBSD发布Jails,在chroot之上提供更多限制(Linux不支持)。
    • 2002年引入namespaces,在需要时可分离内核资源,位于单独namespace中的进程不知道主机网络或其他进程网络。Linux中有八种用户命名空间,包括挂载、进程ID、网络、进程间通信、UTS、用户ID、控制组、时间、syslog等。以PID命名空间为例,可以查看当前shell的PID(如使用echo $$),还可以在新命名空间中运行bash(如使用sudo unshare --fork --pid --mount /bin/bash)来创建容器化环境等操作来进一步隔离命名空间。
    • 2006年谷歌引入进程容器,后被称为cgroup,可将内存和CPU资源限制在特定进程中。结合cgroup和命名空间发布了Linux容器(LXC)项目,可创建在单独命名空间中运行的容器。

(三)Capabilities相关

  1. Capabilities概念
    • Linux将一些系统级任务分组为40多个类别,称为Capabilities。能力允许非特权进程运行特定的系统级任务,而无需授予其完全访问权。例如Docker默认不使用用户命名空间,为了防止特权内核调用,其使用内核capabilities和seccomp配置文件限制访问。Linux具有特权或非特权进程,具有正确权限的非特权进程可以写入系统文件,但特权进程几乎无所不能,当非特权用户只需要特殊权限时,可使用Capabilities。
  2. 常见Capabilities
    • CAP_CHOWN:允许进程修改文件所有者。
    • CAP_NET_ADMIN:对网络配置(IP、防火墙等)执行管理任务。
    • CAP_NET_BIND_SERVICE:允许绑定低于1024的端口。
    • CAP_NET_RAW:允许使用RAW套接字。
    • CAP_SYS_ADMIN:“根”权限(危险),启用过多的功能集。
    • CAP_SYS_BOOT:允许重新启动主机。
    • CAP_SYS_MODULE:允许加载和卸载内核模块。
    • CAP_SYS_TIME:允许进程设置系统时钟。
    • CAP_SYS_CHROOT:允许使用chroot。
    • CAP_AUDIT_WRITE:允许写入内核审计日志。
  3. 提权隐患示例
    • 以nmap工具为例,内核限制进程使用自定义数据包创建原始套接字的能力,非特权用户需要运行调用原始套接字能力的命令时存在提权操作。如先使用sudo cp /usr/bin/nmap /usr/bin/nmap - cap将nmap工具复制一份,再使用sudo setcap cap_net_raw+eip /usr/bin/nmap - cap赋予权限,最后使用nmap - cap --privileged 127.0.0.1 - sS进行扫描。这里的提权隐患在于随意提升工具的权限可能会被恶意用户利用,如果恶意用户获得对这个工具的控制,可能对系统进行破坏,绕过系统正常的安全机制,使系统更容易受到攻击等。

三、Kubernetes(k8s)相关

(一)Kubernetes简介

Kubernetes,通常简称为K8s,是一个开源的容器编排平台。它可以自动化部署、扩展和管理容器化应用程序,能够在多个服务器上高效地运行容器,确保应用的高可用性和可扩展性。

(二)Kubernetes的核心概念

  1. Pod
    • Pod是Kubernetes中最小的可部署单元,可以包含一个或多个容器,这些容器共享网络命名空间和存储卷,并且被一起调度和管理。
  2. Deployment
    • 用于管理Pod的副本数量和更新策略,可以确保应用始终保持指定数量的副本在运行,并且可以实现滚动更新等功能。
  3. Service
    • 定义了一组Pod的访问方式,提供了一个稳定的IP地址和端口,使得外部可以通过这个地址访问到一组Pod。
  4. Node
    • 是Kubernetes中的工作节点,可以是物理服务器或虚拟机。每个Node上运行着Kubelet和容器运行时,负责管理容器的生命周期。

(三)Kubernetes的操作

  1. 安装
    • 可以安装Minikube(一种用于本地开发的Kubernetes环境),先下载Minikube的安装包(根据操作系统选择合适版本),然后按照安装向导进行安装,安装完成后使用minikube start命令启动Minikube。
  2. 部署应用
    • 创建一个Deployment,例如部署一个Nginx服务器可以使用kubectl create deployment nginx --image = nginx命令,然后查看Deployment状态使用kubectl get deployments命令。为了让外部可以访问到Nginx服务器,需要创建一个Service,使用kubectl expose deployment nginx --port = 80 --type = NodePort命令,查看Service信息使用kubectl get services命令。
  3. 扩展应用
    • 扩展Deployment的副本数量,如将Nginx的副本数量扩展到3,可以使用kubectl scale deployment nginx --replicas = 3命令,查看副本数量是否已经扩展使用kubectl get deployments命令,获取Service的NodePort后,可以在浏览器中使用<Minikube IP>:<NodePort>的地址访问Nginx服务器。
  4. 更新应用
    • 更新Deployment的镜像,如将Nginx的镜像更新为一个新的版本,可以使用kubectl set image deployment/nginx nginx = new - image:version命令,查看更新进度使用kubectl rollout status deployment/nginx命令。

四、Git相关

(一)Git简介

Git是一个分布式版本控制系统,用于跟踪文件的变化,方便团队协作开发软件项目。它可以记录文件的历史版本,允许开发者在不同版本之间切换,并且可以合并多个开发者的修改。

(二)Git的安装

  1. 不同操作系统的安装方法
    • Windows:可以从Git官方网站下载安装程序进行安装。
    • macOS:可以使用Homebrew等包管理器安装Git。
    • Linux:可以通过系统的包管理器安装Git,例如在Ubuntu上可以使用sudo apt - get install git

(三)Git的基本使用

  1. 仓库操作
    • 初始化仓库:在一个新的项目目录中,使用git init命令初始化一个Git仓库。
    • 添加文件:使用git add <文件名>命令将文件添加到暂存区,也可以使用git add.将当前目录下的所有文件添加到暂存区。
    • 提交更改:使用git commit - m "提交说明"命令将暂存区的文件提交到本地仓库。
    • 查看状态:使用git status命令查看当前仓库的状态,包括哪些文件被修改、哪些文件在暂存区等。
    • 查看历史记录:使用git log命令查看提交历史记录。
  2. 分支管理
    • 创建分支:使用git branch <分支名>命令创建一个新分支。
    • 切换分支:使用git checkout <分支名>命令切换到指定分支。
    • 合并分支:当在一个分支上完成工作后,可以将其合并到另一个分支。首先切换到目标分支,然后使用git merge <源分支名>命令进行合并。
  3. 远程仓库操作
    • 添加远程仓库:使用git remote add <远程仓库名> <远程仓库地址>命令添加一个远程仓库。
    • 推送更改:使用git push <远程仓库名> <分支名>命令将本地分支的更改推送到远程仓库。
    • 拉取更改:使用git pull <远程仓库名> <分支名>命令从远程仓库拉取最新的更改并合并到本地分支。
  4. 安全相关
    • 避免敏感信息泄露:不要在Git仓库中提交敏感信息,如密码、密钥、个人身份信息等。如果不小心提交了敏感信息,可以使用git rm --cached <文件名>命令从暂存区删除文件,然后使用git commit --amend命令修改上一次提交;创建一个.gitignore文件,列出不需要被跟踪的文件和目录;确保与Git远程仓库的通信是加密的,可以使用SSH或HTTPS协议进行通信。
    • 定期备份:定期备份Git仓库,以防止数据丢失,可以使用Git的备份工具,或者将仓库复制到其他存储设备中。
    • 定期进行安全审计:定期检查Git仓库的安全性,包括权限设置、敏感信息泄露等,可以使用第三方工具进行安全审计。
  5. 协作开发相关
    • 克隆仓库:如果要参与一个项目,可以使用git clone <远程仓库地址>命令克隆仓库到本地。
    • 处理冲突:当多个开发者同时修改同一个文件时,可能会出现冲突,在合并分支时,需要手动解决冲突,然后提交更改。

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

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

相关文章

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么&#xff1f; 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界&#xff08;文档&#xff09; 7、qiankun 四、我们选择的方案 引入qiankun并使用&#xff08;src外层作为主应用&#xff09; 主应…

Windows VSCode .NET CORE WebAPI Debug配置

1.安装C#插件 全名C# for Visual Studio Code&#xff0c;选择微软的 2. 安装C# Dev Kit插件 全名C# Dev Kit for Visual Studio Code&#xff0c;同样是选择微软的 3.安装Debugger for Unity 4.配置launch.json 文件 {"version": "0.2.0","config…

Linux——GPIO输入输出裸机实验

学习了正点原子Linux环境下的GPIO的输入输出的裸机实验学习&#xff0c;现在进行一下小结&#xff1a; 启动文件start.S的编写 .global _start .global _bss_start _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:/*设置处理器进入SVC模式*/m…

Cyberchef配合Wireshark提取并解析TCP/FTP流量数据包中的文件

前一篇文章中讲述了如何使用cyberchef提取HTTP/TLS数据包中的文件,详见《Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件》,链接这里,本文讲述下如何使用cyberchef提取FTP/TCP数据包中的文件。 FTP 是最为常见的文件传输协议,和HTTP协议不同的是FTP协议传输…

51c大模型~合集42

我自己的原文哦~ https://blog.51cto.com/whaosoft/11859244 #猎户座 「草莓」即将上线&#xff0c;OpenAI新旗舰大模型曝光&#xff0c;代号「猎户座」 ChatGPT 要进化了&#xff1f; 本月初&#xff0c;OpenAI 创始人、CEO 山姆・奥特曼突然在 X 上发了一张照片&#xff0…

【NOIP提高组】潜伏者

【NOIP提高组】潜伏者 &#x1f490;The Begin&#x1f490;点点关注&#xff0c;收藏不迷路&#x1f490; R国和S国正陷入战火之中&#xff0c;双方都互派间谍&#xff0c;潜入对方内部&#xff0c;伺机行动。 历尽艰险后&#xff0c;潜伏于 S 国的R 国间谍小C 终于摸清了S 国…

安培环路定理

回忆 静电场中的回路定理&#xff1a;→静电场是保守场 安培环路定理 1、圆形回路包围无限长载流直导线 &#xff08;1&#xff09;回路逆时针 &#xff08;2&#xff09;回路顺时针 规定&#xff1a; 回路正向由右手螺旋定则判断&#xff08;根据回路绕行方向&#xff0c;…

Locally Linear Embedding (LLE)

Locally Linear Embedding (LLE) Locally Linear Embedding (LLE) 是一种非线性降维算法&#xff0c;通常用于高维数据的流形学习。其核心思想是&#xff1a;假设数据点在局部是线性结构&#xff0c;通过保留每个数据点的局部线性结构关系&#xff0c;将数据嵌入到低维空间中。…

wsl配置ubuntu22.04,并配置docker

wsl配置ubuntu22.04&#xff0c;并配置docker 文章目录 wsl配置ubuntu22.04&#xff0c;并配置docker一、在Windows上安装Linux子系统前提条件安装步骤 二、wsl安装系统到其他盘①查看wsl运行状态&#xff0c;将其保持在关闭状态②导出当前Linux的镜像③注销之前的系统并检查④…

「QT」文件类 之 QDir 目录类

✨博客主页何曾参静谧的博客&#x1f4cc;文章专栏「QT」QT5程序设计&#x1f4da;全部专栏「Win」Windows程序设计「IDE」集成开发环境「UG/NX」BlockUI集合「C/C」C/C程序设计「DSA」数据结构与算法「UG/NX」NX二次开发「QT」QT5程序设计「File」数据文件格式「UG/NX」NX定制…

expo5.2运行web报错Cannot find module ‘react‘

修改app.json中的web output 配置为 ‘single’ 可以解决 expo run web 这个错误问题 "web": {"bundler": "metro","output": "single","favicon": "./assets/images/favicon.png"},相关链接&#xff1…

Xcode 16 pod init失败的解决方案

目录 前言 一、错误重现 二、解决方案 1.右击项目修改文件展示方式 2.修改.xcodeproj文件 3.参考文档 前言 我们使用Xcode创建新项目之后&#xff0c;执行pod init报错。我们看一下如何解决。 一、错误重现 RuntimeError - PBXGroup attempted to initialize an object …

Mysql-DDL语句

文章目录 DDL 语句DDL 操作库创建数据库修改数据库使用数据库 DDL 操作表Mysql 的数据类型创建表修改表结构 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Mysql专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月14日11点30分 DDL 语…

css三角制作(二十课)

代码&#xff1a; <style>/* 边框原理 */.box1 {width: 0;height: 0;border-top: 100px solid pink;border-bottom: 100px solid blue;border-left: 100px solid yellow;border-right: 100px solid greenyellow;}/* 三角制作 */.box2 {width: 0;height: 0;border: 100px …

高效稳定!新加坡服务器托管方案助力企业全球化布局

在全球化的商业环境中&#xff0c;企业对于高效、稳定的服务器托管方案的需求日益迫切。作为亚洲的服务器托管中心&#xff0c;新加坡凭借其独特的地理位置、稳定的政治环境、先进的科技设施以及开放的市场政策&#xff0c;为企业提供了理想的服务器托管解决方案&#xff0c;助…

【51单片机】LCD1602液晶显示屏

学习使用的开发板&#xff1a;STC89C52RC/LE52RC 编程软件&#xff1a;Keil5 烧录软件&#xff1a;stc-isp 开发板实图&#xff1a; 文章目录 LCD1602存储结构时序结构 编码 —— 显示字符、数字 LCD1602 LCD1602&#xff08;Liquid Crystal Display&#xff09;液晶显示屏是…

【Python · PyTorch】卷积神经网络(基础概念)

【Python PyTorch】卷积神经网络 CNN&#xff08;基础概念&#xff09; 0. 生物学相似性1. 概念1.1 定义1.2 优势1.2.1 权重共享1.2.2 局部连接1.2.3 层次结构 1.3 结构1.4 数据预处理1.4.1 标签编码① One-Hot编码 / 独热编码② Word Embedding / 词嵌入 1.4.2 归一化① Min-…

Qt 之 qwt和QCustomplot对比

QWT&#xff08;Qt Widgets for Technical Applications&#xff09;和 QCustomPlot 都是用于在 Qt 应用程序中绘制图形和图表的第三方库。它们各有优缺点&#xff0c;适用于不同的场景。 以下是 QWT 和 QCustomPlot 的对比分析&#xff1a; 1. 功能丰富度 QWT 功能丰富&a…

谷歌DeepMind推出了一种新的方式来“窥探”AI的“内心”

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

PowerBI 用RANK,RANKX和TOPN 排名的简单示例

1. 销量表 2. 添加计算总销量的度量值&#xff0c;它将在RANK和RANKX里被使用 总销售量 SUM(销量[销售量]) 3.计算排名的度量值 RANK函数 排名 RANK(ALL(销量[产品]),ORDERBY([总销售量],DESC)) RANKX函数: 排名2 RANKX(ALL(销量),[总销售量],,DESC,Skip) 4.页面上添…