学习连接
声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec]
泷羽-sec
前言
不管是防御系统还是进攻系统,强大的底层技术基础都是必不可少的。
从防御的角度来看,只有了解底层技术,我们才能知道如何构建防御体系。
从进攻的角度讲,了解底层技术才能发现漏洞并开发出漏洞利用的方法。
云技术历史
以前构建系统需要采购设备,租用数据中心机柜,搭建基础设施
然后随着处理器的进化升级,虚拟机将一台机器的资源分为多台机器,提高了资源的利用率,实现服务器,网络和存储的虚拟交付
最新一代产品被称为云,这个东西不仅仅是单一的技术,而且是技术的集合
云服务
这个东西是一种IT的基础设施系统,他将资源抽象在软件的层面
云服务以服务器的形式按需求交付能力,非常易于使用,可以自动创建服务器、存储、网络等等
云基础架构必须稳定,不能频繁出现中断
地理分布的云基础设施能够提高容错能力,地理分布的云基础设施意味着这些资源在多个地理位置上进行部署
云必须能够快速扩展,以满足各种需求
公有云服务商
Amazon Web Services(AWS)
Azure、Google(GCP)
华为云
腾讯云
阿里云
组织可以使用 OpenStack 等工具在自己的数据中心搭建私有云,或者一部分业务运行在私有云中,一部分运行在公有云中。
云分类
基础设施即服务(IaaS)
IaaS是一种云计算服务模式,通过互联网向用户提供计算、存储、网络和其他基本的计算资源。用户可以根据需求使用这些资源来部署和运行自己的应用程序和系统,而无需购买和维护本地的硬件和软件。
平台即服务(PaaS)
PaaS是一种云计算服务模式,它为用户提供一个在线平台,支持在完全托管的基础设施上开发、运行和管理应用程序。
软件即服务(SaaS)
SaaS是一种基于云计算的软件分发模型,用户通过互联网访问和使用软件应用,而无需在本地安装和维护软件。
云架构
虚拟化
把一台机器的资源分成多台虚拟机器,多台裸机汇集形成资源集群,隔离资源的使用,灵活且可扩展资源池。它抽象了硬件安装过程,但仍有改进空间,并非专为云而生。技术栈的灵活性和可定制性提升,促使了容器的出现。
容器
容器就像一个个独立的小空间,允许开发人员与堆栈各部分灵活交互,实现按需生成服务,提高网络抽象程度,方便应用迁移扩展,更高效地使用资源。系统管理和网络工程可以外包给其他公司。云是多种技术的集合。
云架构设计
组件选择
确定架构(一经确认很难更改),选择绑定或非绑定组件,可以自己开发、用开源的或者购买。最好选CNCF认证(不是必须的),安全编码,部分开源
基础设施即代码
引导介质(Packer)、安装系统(Terraform)、自动配置(Ansible)、状态强制(Monit)。
集成部署
持续集成(CI)
指的是在软件开发过程中,代码频繁地集成到共享的主分支(如master或main分支)中,每次集成都会通过自动化的构建(包括编译、链接等)和测试(如单元测试、集成测试)来验证代码更改是否破坏了现有功能。
持续交付(CD)
在CI的基础上,进一步自动化软件交付流程,确保软件可以快速、可靠地从开发环境部署到生产环境。这通常包括自动化部署、配置管理、环境准备等步骤。
弹性可靠
指的是系统在面对故障时能够自我恢复,确保业务连续性。这通常通过实施冗余机制(如故障转移、负载均衡等)来实现。在CICD管道中,这意味着即使某个构建或测试任务失败,整个流程也能继续执行,不会因单点故障而中断。
全球负载均衡(GSLB)
GSLB是一种技术,用于将用户请求分发到全球范围内的多个数据中心或服务器集群中,以提高应用的可用性和性能。智能DNS(如DNS负载均衡)和GTM(全局流量管理)是GSLB的两种常见实现方式。通过GSLB,可以确保即使某个数据中心或服务器出现故障,用户请求也能被自动路由到其他可用的数据中心或服务器,从而避免单点故障。
平衡控制
在确保系统高可用性和弹性的同时,还需要平衡控制,以保护系统免受漏洞和内部攻击。这包括实施严格的安全策略、访问控制、监控和日志记录等措施。然而,这些控制措施不应过度影响系统的可用性和性能。因此,需要在安全性和可用性之间找到一个平衡点,以确保系统既安全又高效。
云设计模式
云架构设计不必从头开始,采用已检验的设计模式是最佳选择。手段不重要,结果才是目的。
微服务架构
为松散耦合、模块化服务而设计,微服务协同工作完成整体服务。每个服务都可以独立修改代码和重用,提高系统整体弹性和容错。
零信任架构
对资源的每个请求都需要验证来源已授权,然后授权短期访问(用令牌)。实现零信任架构的一种常见方法是 Open ID Connect(OIDC)联盟访问。
安全控制
网络控制
传统架构用防火墙实现网络控制,云环境网络抽象为 SDN、SD WAN。SDN 可以对不同的接口(如 API 或 GUI)设置网络规则。通过 mTLS 不仅能加密流量,还能对客户端进行身份验证,有证书才能访问微服务。不正确的访问管理可导致权限提升,甚至破坏整个基础设施。现代访问管理系统多使用令牌进行访问控制,提供对服务的短时访问权。JWT 通常用于访问云端资源,伪造和破解密码是常见攻击手段。另一种类型的权限控制机制是强制访问控制 MAC。
身份管理
企业通常用 AD、LDAP 进行身份管理。AWS IAM 是身份和访问管理的公共云服务。Google 联盟认证 OIDC 经常用于 2FA。云身份提供者(IdP)作为真实身份来源,是更安全的解决方案,比如 Azure AD。
容器与云
虚拟化中每个 VM 需要运行自己的操作系统,大大增加了总体开销。容器化是更现代的架构,容器共享内核与硬件,更快、更小、更高效。容器是对虚拟化的补充,而非取代。容器的系统开销更小,可以进一步分离应用组件,比如搜索、登录、查询、订单功能分开。容器使用映像作为模板生成,映像相当于计算机硬盘。容器使用不同发行版文件加载内核,运行容器。
docker使用:在 Ubuntu 上生成 CentOS 7 容器
在 Ubuntu 上生成 CentOS 7 容器,可以使用 Docker 这个流行的容器化工具。这个可以这样理解就是我们下载软件是不是有很多文件夹生成,如果我们将这个文件夹复制到另外一台机器上是不是就可以直接使用这个软件。Docker就是用来提供这个功能
安装docker
sudo apt-get install docker.io
检查docker是否安装
docker -v
运行docker
systemctl start docker
启动docker
systemctl status docker
查看docker运行状态
查看是否正常启动
docker ps
创建容器
docker run -d --name test -p 3306:3306 -e KEY=环境变量 repository:tag
#run创建并运行一个容器
#-d是后台运行
#--name给容器取一个名字
#将Linux中端口映射到容器内端口
#按需求配置环境变量,环境变量以键值对的形式整
#repsoitory镜像名
#tag镜像版本,没有设置版本默认最新版本
拉取镜像
docker pull
推镜像
docker push
查看docker版本
docker -v
查看所有本地镜像
docker images
删除镜像
docker rmi
保存本地
docker save -o 文件名 镜像:版本
#-o写一个文件名
本地加载
docker load -i tar文件
运行容器
docker start
停止容器
docker stop
删除容器
docker rm
查看容器状态
docker ps
查看日志
docker logs
进入容器内部
docker exec -it 容器名 bash
#进入控制台
数据卷
创建数据卷在宿主机的路径下创建以下文件,创建什么卷就有什么路径
var/lib/docker/volumes/html/data_s
创建一个卷
docker volume create <volume_name>
列出所有卷
docker volume ls
这条命令列出当前所有的Docker卷。
查看卷的详细信息
docker volume inspect <volume_name>
这条命令显示指定卷的详细信息,包括卷的名称、驱动程序、挂载点等。
删除一个卷
docker volume rm <volume_name>
这条命令删除指定的卷。注意,只有当没有容器在使用该卷时才能删除。
删除所有未使用的卷
docker volume prune
版权归原作者 妙哉736 所有, 如有侵权,请联系我们删除。