熊熊出没 发表于 2025-4-2 07:22:02

红队-云计算基础

声明

通过学习 泷羽sec的个人空间-泷羽sec个人主页-哔哩哔哩视频,做出的文章如涉及侵权马上删除文章
笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则结果自尊

一.云架构介绍

无论是防御照旧进攻,强大的底层技术基础都是必要的
从防御的角度,相识底层技术才华知道如何构建防御体系
从进攻的角度,相识底层技术才华发现毛病并且开发毛病利用
攻击者和防御者都必须相识对方的运作方式

1.汗青

从前构建系统需要购买设备,租用数据中心机柜,搭建基础办法
处理器进化,假造机将一台机器的资源分成多台机器
进步资源利用率,灵活可拓展,从裸机基础办法到假造化基础办法
容器化进一步进步服从,实现服务器,网络和存储的假造交付
最新一代的基础办法我们称为“云”,它不是单一的技术,而是技术的集合。

2.云服务

云是一种it基础办法系统,它将资源的创建抽象在容错,地理分布和可扩展的物理基础办法上。并将本领以服务器的形式按需要交付
易于使用,可以自动创建,无论是服务器,存储,网络等等
云基础架构必须稳固且无频繁停止
地理分布的云基础办法进步容错本领
云必须能够快速扩展以满足需求

3.公有云服务商

Amazon web services (AWS)
Azure
google(GCP)
.华为云,腾讯云,阿里云....
组织可以使用openStack等工具在自己的数据中心搭建私有云。或者部门业务运行在私有云中,部门运行在公有云中

4.云分类

基础办法既服务(laas)
平台既服务(PAAS) [相当于直接装好了]
软件既服务(SaaS)

5.共享责任模型

云服务提供容错和扩展,同时在不同层面增加了的安全性上的含糊性
AWS步伐毛病导致大量数据泄露,AWS不承担责任
假如aws数据中心物理安全遭到破坏,客户数据偷取,aws要承担责任

6.云架构假造化

将一台机器的资源分 成多台假造机器,多台裸机汇集形成的资源集群隔离资源的使用,灵活且可扩展资源池
抽象了硬件安装过程,但仍有改进空间(并非为云而生)
技术栈的灵活性和可定制性提拔,导致容器出现
容器允许开发 职员与堆栈各部门进行灵活交互,实现按需生成服务和网络抽象程度不断进步,方便应用迁移扩展,更加高效使用资源
系统管理和网络工程可以外包给其他公司
云不是单一的技术,而是技术的集合7.

7.云架构设计

(1)组件选择

确定架构(难改),选择绑定/非绑定组件(开发、开源、购买)
云原生组件: 为分布式系统设计,CNCF认证(非必须)、安全编码、开源(部门)
laC:引导介质(Packer)、安装系统(Terraform)、 自动设置(Ansible)、 状态强制(Monit)

(2)集成摆设

使用持续集成和持续交付(CICD) 管道来构建环境
包括测试、测量和扫描代码更改的自动化测试和摆设(GitOps)

(3)弹性可靠

任何单点故障都有故障转移或其他机制,使业务可以持续提供(冗余)
GSLB (智能DNS、GTM)解决客户单访问的单点故障隐患

(4)平衡控制

控制掩护系统免受毛病和内部攻击的组件,应平衡控制和可用性



8.云设计模式

云架构设计不必从头开始, 使用已检验的设计模式是最佳选择

(1)微服务架构

疏松耦合、 模块化服务而设计,微服务协同工作以完成整体服务每个服务都可以独立修改代码和重用,进步系统整体弹性和容错
大多数云利用微服务架构,云原生应用被构建充当微服务,便于水平扩展安全优势:每个微服务应用强化、隔离,单一服务毛病对整体系统影响小缺点:调试更加复杂,需要跨不同服务跟踪事件;性能短板

(2)零信托架构

对资源的每个哀求都需要验证泉源已授权,然后授权短期访问(令牌)实现ZTA的一种常见方法是Open ID Connect (OIDC) 同盟访问
授权处于运动状态时可以访问任何联合内服务
密码重置是针对ZTA的常见攻击方式


9.安全控制

(1)网络控制

传统架构使用防火墙实现网络控制,云环境网络抽象为SDN、SD WANSDN对不同的接口(如API或GUI) 设置网络规则
通过mTLS不但流量加密,也对客户端进行身份验证,拥有证书才华访问微服务访问控制
不正确的访问管理可导致权限提拔,甚至破坏整个基础办法
当代访问管理系统多使用令牌进行访问控制,提供对服务的短时访问权
JWT通常用于访问云端资源,伪造和破解密码是常见攻击本领
另一种范例的权限控制机制是强制访问控制MAC

(2)身份管理

企业通常使用AD、LDAP进行身份管理
AWS IAM是身份和访问管理(IAM)的公共云服务
Google同盟认证OIDC经常用于2FA
云身份提供者(ldP)作为真实身份泉源, 是更安全的解决方案(Azure AD)


二.容器与云

1.容器介绍

假造化中每个VM需要运行自己的操纵系统, 显着增加了总体开销
容器化是一种更加当代的架构,容器共享内核与硬件,更快、更小、更高效

容器远没有假造化强大,因此容器是对假造化的补充,而非取代
容器的系统开销更小(可忽略),因此可以进一 步分离应用组件,比方搜索、登录、查询、订单功能分开
容器使用映像作为模板生成。映像相当于计算机硬盘
容器使用不同发行版文件加载内核,运行容器

2、安装docker

在Ubuntu上生成CentOS 7容器,你可以使用Docker这个盛行的容器化工具。以下是生成CentOS 7容器的步调和示例代码:
(1)安装docker

确保你已经安装了Docker。假如没有安装,可以使用以下下令安装:
sudo apt-get update
sudo apt-get install docker.io

(2)启动Docker

sudo service docker start 启动乐成后,没有错误信息输出
可以使用sudo docker ps下令来验证Docker是否正常启动
sudo docker ps
(3)Docker设置中国镜像源

起首,需要找到 daemon.json 文件。在 Linux 系统中,该文件通常位于 /etc/docker/ 目录下。假如没有这个文件,可以使用文本编辑器(如 vi 或 nano )创建一个。

阿里云镜像源:(registry-mirrors字符中不能存在空格否则就会设置失败)
阿里的这个镜像源每个人的都不一样,可以去官网看 阿里云登录 - 接待登录阿里云,安全稳固的云计算服务平台

重启 Docker 服务:完成设置后,需要重启 Docker 服务使设置见效。在 Ubuntu
或 Debian 系统中,可以使用下令sudo service docker restart ;在 CentOS
或 RHEL 系统中,可以使用sudo systemctl restart docker

3.Docker中安装CentOS 7

拉取CentOS 7的官方Docker镜像:
sudo docker pull centos:7
  运行一个基于CentOS 7镜像的容器:
sudo docker run -it --name my_centos7 centos:7 /bin/bash 在这个下令中:
    -it 选项允许你交互式地运行容器。
    --name my_centos7 给容器定名为my_centos7。
    执行上述下令后,你会进入到一个新的CentOS 7容器中,可以在这个环境中执行CentOS 7系统的下令。
    centos:7 指定使用的镜像。
    /bin/bash 启动容器后执行的下令,这里启动了bash让你能与容器交互。

    4.创建Apache容器后台运行

    docker container run -d --rm -p 8080:80 httpd

    curl localhost:8080

    常用下令
    查看所有容器
    docker container ls
    登陆后台运行的容器
    docker exe -it 899 /bin/bash
    停止容器
    dochker container stop 899
    挂载宿主机目录
    dock container run -d --rm -p 8080:80 -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
    侦听宿主机80端口
    docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httd

    查看docker 后台历程
    # 列出所有正在运行的容器
    docker ps
     
    # 查看特定容器的历程信息
    docker top <container_name_or_id>

三.PODMAN

Podman 是个Docker的更换产物,无守护历程
   
运行容器 (不加sudo启动报错,默认禁止侦听1024以下端口)
sudo podman run -d --r-m --network host httpd pod是共享名称的多个容器的集合

创建名为wha的空pod (加入两个容器,访问容器1)
podman pod create --name wha    
在 pod 中运行容器
podman run -d --pod wha httpd
在 pod 中运行可找东西的工具并互动
podman run -pod wha -it alpine/curl /bin/asho  大部门容器化过程都采用开放容器计划(OCI) 标准,因此Podman和Docker可互操纵



   四.容器的原形

    Linux没有被称为“容器”的单一特性,实际上“容器"是阻止历程访问其他历程和资源的特性组合。由于这些发生在内核级别,以是可以控制“容器”的限定级别
    Linux中八种用户定名空间:挂载、历程ID、网络、历程间通信、UTS、用户ID、控制组、时间、syslog

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

五. Capabilities

1.capabilities概念

在 Linux 系统中,Capabilities(本领)是一种细粒度的权限控制机制,用于限定历程可以执行的特权操纵。   
Docker默认不使用用户 定名空间。为了防止特权内核调用,其使用内核capabilities和seccomp设置文件限定访问
    Linux具有特权或非特权历程
    具有正确权限的非特权历程可以写入系统文件,但特权历程几乎无所不能用户权限过于宽泛,当非特权用户只需要特殊权限时,可使用Capabilities
    Linux将一 些系统级任务分组为40多个类别,称为Capabilities
    本领允许非特权历程运行特定的系统级任务,而无需授予其完全访问权
    内核限定历程使用自界说数据包创建原始套接字的本领

   2.内核不支持半开TCP连接

    nmap 127.0.0.1-sS
    Yourequested a scan type which requires root privileges.

    3.非特权用户需要运行调用原始套接字本领的下令

    SUID(所有者为root)   
#提权隐患

    sudo cp /usr/bin/nmap /usr/bin/nmap-cap

    sudo setcap cap_ net raw+eip /usr/bin/nmap-capo

    nmap-cap --privileged 127.0.0.1-sS 下令解释
    sudo cp /usr/bin/nmap /usr/bin/nmap-cap 这一步是使用管理员权限(sudo)将系统中的 nmap 工具复制一份并定名为 nmap-cap。
    sudo setcap cap_net_raw+eip /usr/bin/nmap-cap 这一步是给新复制的 nmap-cap 工具赋予特定的权限,使其能够进行原始套接字操纵等高级权限操纵。
    nmap-cap --privileged 127.0.0.1 -sS 这一步是使用具有特殊权限的 nmap-cap 工具去扫描本地地址。
    这里的提权隐患在于:
    随意提拔工具的权限可能会被恶意用户利用。假如一个恶意用户得到了对这个工具的控制,或者通过某种方式利用这个工具的高权限状态,就可能对系统进行破坏,比如访问本不应该被访问的系统资源、盗取敏感信息等。 这种提权操纵可能会绕过系统正常的安全机制。系统通常有一系列的权限控制和安全战略来防止未经授权的操纵,但通过这种方式提权可能会冲破这些安全防线,使系统更容易受到攻击。 假如这个工具被黑客利用,他们可以利用其高权限来进一步渗透系统,甚至完全控制整个系统,给系统的安全性带来极大的威胁。

    4.常见Capabilities

    CAP_ CHOWN:允许历程修改文件所有者
    CAP NET _ADMIN: 对网络设置(IP、 防火墙等)执行管理任务0 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: 允许写入内核审计日志

    六、什么是 Kubernetes(k8s)

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

1.Kubernetes 的焦点概念

  (1)  Pod
    Pod 是 Kubernetes 中最小的可摆设单元,它可以包含一个或多个容器。这些容器共享网络定名空间和存储卷,并且被一起调度和管理。

  (2)  Deployment
    Deployment 用于管理 Pod 的副本数量和更新战略。它可以确保应用始终保持指定数量的副本在运行,并且可以实现滚动更新等功能。

  (3)  Service
    Service 界说了一组 Pod 的访问方式。它提供了一个稳固的 IP 地址和端口,使得外部可以通过这个地址访问到一组 Pod。

  (4)  Node
    Node 是 Kubernetes 中的工作节点,它可以是物理服务器或假造机。每个 Node 上运行着 Kubelet 和容器运行时,负责管理容器的生命周期。

2 安装 Kubernetes

安装 Minikube(一种用于本地开发的 Kubernetes 环境)
      下载 Minikube 的安装包,根据你的操纵系统选择合适的版本。
      安装 Minikube,按照安装领导进行操纵。

启动 Minikube
      打开终端,运行以下下令启动 Minikube:
      minikube start

3 摆设应用到 Kubernetes

# 创建一个 Deployment
kubectl create deployment nginx --image=nginx  #部署 Nginx 服务器

# 查看 Deployment
#使用以下命令查看 Deployment 的状态:
kubectl get deployments

# 创建一个 Service
#为了让外部可以访问到 Nginx 服务器,需要创建一个 Service:
kubectl expose deployment nginx --port=80 --type=NodePort    
#让外部访问 Nginx 服务器

# 查看 Service
#使用以下命令查看 Service 的信息:
kubectl get services

4 访问应用

在 Service 信息中找到 NodePort 的端口号,使用“:”在浏览器中访问 Nginx 服务器。

5 扩展应用

#扩展 Deployment 的副本数量

#使用以下命令将 Nginx 的副本数量扩展到 3:

kubectl scale deployment nginx --replicas=3
   

#查看副本数量
       
#使用以下命令查看 Deployment 的副本数量是否已经扩展:
       
kubectl get deployments
   

#获取 Service 的 NodePort
       
#在输出的 Service 信息中,可以找到 NodePort 的端口号。
   
#在浏览器中访问应用
       
使用 <Minikube IP>:<NodePort> 的地址在浏览器中访问 Nginx 服务器。
6 更新应用

# 更新 Deployment 的镜像
kubectl set image deployment/nginx nginx=new-image:version
# 查看更新进度
kubectl rollout status deployment/nginx
七,Git

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

1 安装 Git

在不同操纵系统上的安装方法:
        Windows:可以从 Git 官方网站下载安装步伐进行安装。
        macOS:可以使用 Homebrew 等包管理器安装 Git。
        Linux:可以通过系统的包管理器安装 Git,比方在 Ubuntu 上可以使用 sudo apt-get install git。

2 Git的安全审计

1.掩护 Git 仓库很紧张,由于它通常包含项目标源代码和敏感信息。
2.使用强密码,为 Git 远程仓库设置强密码,避免简朴或常用密码。
3.限定访问权限,只授予必要职员访问权限,可使用 Git 提供的权限管理功能或第三方工具。
4.避免提交敏感信息,若不小心提交,可使用git rm --cached <文件名>从暂存区删除,然后git commit --amend修改上一次提交。创建.gitignore文件,列出不需要被跟踪的文件和目录。
5.确保与 Git 远程仓库的通信是加密的,可以使用 SSH 或 HTTPS 协议进行通信。
6.定期进行安全审计,检查 Git 仓库的安全性,包括权限设置、敏感信息泄露等,可使用第三方工具。
7.定期备份 Git 仓库,防止数据丢失,可以使用 Git 的备份工具或复制到其他存储设备中。

3 常用下令

设置用户信息

git config --global user.name "你的用户名"
git config --global user.email "你的邮箱"
初始化仓库

git init
克隆仓库

git clone <远程仓库地址> 处理冲突:当多个开发者同时修改同一个文件时,可能会出现冲突,在合并分支时需要手动解决冲突,然后提交更改。

查看仓库状态

git status
添加文件

git add <文件名>
git add .  # 添加当前目录所有文件
提交更改

git commit -m "提交说明"
查看提交汗青

git log
分支

# 创建分支
git branch <分支名>

# 切换分支
git checkout <分支名>

# 合并分支:在一个分支上完成工作后,可将其合并到另一个分支。先切换到目标分支,
git merge <分支名>

远程仓库

# origin为默认远程仓库名称,当你克隆后,git会自动将仓库命名为origin
git push origin <分支名称>
git pull
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 红队-云计算基础