先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新网络安全全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上网络安全知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注网络安全)
正文
如果没有PG这一层映射,通过算法将object直接映射到一组OSD上。如果这种算法是某种固定映射的哈希算法,则意味着一个object将被固定在一组OSD上,当其中一个或多个OSD损坏时,object无法被自动迁移至其他OSD上(因为映射函数不允许),当系统为了扩容新增了OSD时,object也无法被re-balance到新的OSD上(同样因为函数不允许)这些限制都违背了Ceph系统的高可靠性、高自动化的设计初衷
例如,在Ceph的现有机制中,一个OSD平时需要和与其共同承载一个PG的其他OSD交换信息,以确定各自是否工作正常,是否需要进行维护操作。由于一个OSD上约承载数百个PG,每个PG内通常有3个OSD,因此,一个OSD大约需要进行数百至数千次OSD信息交换
然后,如果没有PG的存在,则一个OSD需要和与其共同承载同一个object的其他OSD交换信息。由于每个OSD上承载的object很可能高达数百万个,因此同样长度的一段时间内,一个OSD大约需要进行的OSD间信息交换将暴涨至数百万乃至数千万次。而这种状态维护成本显然过高
总结:引入PG的好处有两种,一方面实现了object和OSD之间的动态映射,从而为Ceph的可靠性、自动化性等特征的实现留下了空间;另一方面也有效简化了数据的存储组织,大大降低了系统的维护管理开销。
1.4 Ceph集群
前面说过,monitor共同负责整个Ceph集群中所有OSD状态的发现与记录,并且共同形成cluster map的master版本,然后扩散至全体OSD以及client。OSD使用cluster map进行数据的维护,而client 使用cluster map进行数据的寻址。
在集群中,各个monitor的功能总体上是一样的,其相互间的关系可以简单理解为主从备份关系。monitor并不主动轮询各个OSD的当前状态。正相反,OSD需要向monitor上报信息状态。常见的上报情况有两种:一是新的OSD被加入集群,二是某个OSD发现自身或者其他OSD发生异常。在收到这些上报信息,monitor将更新cluster map的信息并加以扩散。
Cluster map包含如下内容 命令:ceph -s
(1) Eposh 即版本号。Cluster map的epoch是一个单调递增序列。Epoch越大,则cluster map版本越新。因此,持有不同版本cluster map的OSD或client可以简单的通过比较epoch决定应该遵从谁手中的版本。而monitor手中必定有epoch最大、版本最新的cluster map。当任意两方在通信时发现彼此epoch值不同时,将默认先将cluster map同步至高版本一方的状态。在进行后续状态
(2) health 集群内部健康状态,显示这台服务器在集群内部的状态
(3) monmap 各个OSD的网络地址
(4) osdmap 各个OSD的状态。OSD状态分为两个维度:up或者down (表示OSD是否正常工作),in或者out (表示OSD是否在至少一个PG中)。因此,对于任意一个OSD,共有四种可能的状态
状态 | 说明 |
---|---|
Up且in | 说明该OSD正常运行,且已经承载至少一个PG的数据。这是一个OSD的标准工作状态; |
Up且out | 明该OSD正常运行,但并未承载任何PG,其中也没有数据。一个新的OSD刚刚被加入Ceph集群后,便会处于这一状态。而一个出现故障的OSD被修复后,重新加入Ceph集群时,也是处于这一状态; |
Down且yin | 说明该OSD发生异常,但仍然承载着至少一个PG,其中仍然存储着数据。这种状态下的OSD刚刚被发现存在异常,可能仍能恢复正常,也可能会彻底无法工作 |
Down且out | 说明该OSD已经彻底发生故障,且已经不再承载任何PG |
(5) pgmap 集群中pg、pools、磁盘大小等信息
1.5 Ceph特点
介绍了这么多ceph的信息,我们这里做一个总结
- 高性能 a.摒弃了传统的集中式存储元数据寻址的方案,采用CHUSH算法,数据分布均衡,并行度高。 b.考虑了容灾域的隔离,能够实现各类的副本放置规则,例如跨机房、机架感知等。 c.能够支持上千个存储节点的规模,支持TB到PB的数据
- 高可用性 a.副本数可以灵活控制。 b.支持故障域分隔,数据强一致性。 c.多种故障场景自动进行修复自愈。 d.没有单点故障,自动管理。
- 高可扩展性 a.去中心化。 b.扩展灵活 c.随着节点增加而线性增长
- 特性丰富 a.支持三种存储接口:块存储、文件存储、对象存储 b.支持自定义接口,支持多种语言驱动
1.6 Ceph架构
Ceph支持三种接口
- Object:有原生的API,并且也兼容Swift和S3的api
- Block:支持精简配置、快照和克隆
- File:Posix接口、支持快照
1.7 Ceph核心组件及概念
组件 | 概念 |
---|---|
Monitor | 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据 |
OSD | OSD负责相应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSD |
MSD | msd全称Cepg Metadata Service,是CephFs服务依赖的元数据服务 |
Object | Ceph最底层的存储单位是Object对象,每个Object包含元数据和原始数据 |
PG | PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据 |
RADOS | 是Ceph集群的精华,为用户实现数据分配,Failover等集群操作 |
Libradio | Libradio是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFs都是通过librados访问的目前提供PHP、Ruby、Java、Python等支持 |
CRUSH | CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。 |
RBD | RBD全称RADOS block device,是Ceph对外提供的块设备服务 |
RGW | RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容 |
CephFs | CephFs全称Ceph File System,是Ceph对外提供的文件系统服务 |
Pool | pool 是Ceph存储时的逻辑分区,它起到namespace的作用 |
二、三种存储类型
2.1 块存储 rbd
典型设备:磁盘阵列,硬盘 主要是将裸磁盘空间映射给主机使用的
优点
- 通过Raid与LVM等手段,对数据提供了保护
- 多块廉价的硬盘组合起来,提高容量
- 多块磁盘组合出来的逻辑盘,提高读写效率
缺点
- 采用SAN架构组网时,光纤交换机,造价成本高
- 主机之间无法共享数据
使用场景
- docker容器、虚拟机磁盘存储分配
- 日志存储
- 文件存储
- 等等…
2.2 文件存储 fs
典型设备:FTP、NFS服务器 为了克服块存储文件无法共享的问题,所以有了文件存储。在服务器上架设FTP与NFS服务,就是文件存储
优点
- 造价低,随便一台机器就可以了
- 方便文件共享
缺点
- 读写速度低
- 传输速度慢
使用场景
- 日志存储
- 有目录结构的文件存储
2.3 对象存储 rgw
典型设备:内置大容量硬盘的分布式服务器(swift、s3) 多台服务器内置大容量硬盘,安装上对象存储管理软件,对外提供读写访问功能。
优点
- 具备块存储的读写高速
- 具备文件存储的共享等特性
使用场景 (适合更新变动比较少的数据)
- 图片存储
- 视频存储
3.1 正常io流程图
1.client创建cluster handler 2.client读取配置文件 3.client连接上monitor,获取集群map信息 4.client读写io根据crshmap算法请求对应的主osd数据节点 5.主osd数据节点同时写入另外两个副本节点数据 6.等待主节点以及两个副本节点写完数据状态 7.主节点及副本节点写入状态都成功后,返回给client,io写入完成。
3.2 新主io流程图
如果有新加入的OSD1取代了原有的OSD4成为Primary OSD,由于OSD1上未创建PG,不存在数据,那么PG上的IO无法进行,如何工作呢?
流程:
1.client 连接monitor获取集群map信息 2.同时新主OSD1由于没有pg数据会自动上报monitor告诉让osd2临时接替为主 3.临时主osd2会把数据全量同步给新主osd1 4.client IO读写直接连接临时主OSD2进行读写。 5.osd2收到读写io,同时写入另外两副本节点 6.等待osd2以及另外两副本写入成功 7.osd2三份数据都写入成功返回给client,此时client io读写完毕 8.如果osd1数据同步完毕,临时主osd2会交出出角色 9.osd1成为主节点,osd2变成副本
3.3 Ceph IO算法流程
在1.3Ceph存储过程 (Ceph IO算法流程)
中我们已经详细介绍了,这里只是简单过一下
1.File用户需要读写的文件。 File->映射成Object
- a.ino(File的元数据,File的唯一ID)
- b.ono (File切分产生的某个Object的序号,默认以4M切分一个块大小
- c.oid (object id:ino+one)
2.Object是RADOS需要的对象。Ceph指定一个静态的hash函数计算oid的值,将oid映射成一个近似均匀分布的伪随机值,然后和mask按位相与,得到pgid。 Object->映射PG
- a.bash (oid) & mask ->pgid
- b.mask=PG总数m(m为2的整数幂)-1
3.PG (Placement Group)用途是对object的存储进行组织和位置映射(类似于Redis cluster里面的slot的概念)一个PG里面会有很多object。采用CRUSH,将pgid代入其中,然后得到一组OSD。PG->OSD映射
- a.CRUSH(pgid)->(osd1,osd2,osd3)
3.4 Ceph RBD IO 流程 & Ceph RBD IO框架图
流程 1.客户端创建一个pool,需要为这个pool指定pg的数量 2.创建pool/image rdb设备进行挂载 3.用户写入的数据进行切块,每个块的大小默认为4M,并且每个块都有一个名字,名字就是object+序号 4.将每个object通过pg进行副本位置的分配 5.pg根据cursh算法会寻找3个osd,把这个object分别保存在这三个osd上 6.osd上实际是把底层disk进行了格式化操作,一般部署工具会将它格式化为xfs文件系统 7.object的存储就变成了存储一个文rbd0.object1.file
客户端写数据OSD过程
1.采用的是librados的形式,使用librbd创建一个块设备,向这个块设备中写入数据 2.在客户端本地通过调用librados接口,然后经过pool、rdb、pg进行层层映射,在PG这一层,可以知道数据保存在哪3个OSD上,这3个OSD分为主从的关系 3.客户端primay OSD简历SOCKET通信,将要写入的数据传给primary OSD,由primary OSD再讲数据发送给其他replica OSD数据节点
3.5 Ceph Pool和PG分布情况
说明:
- pool是ceph存储数据时的逻辑分区,它起到namespace的作用
- 每个pool包含一定数量(可配置)的PG
- PG里的对象被映射到不同的Object上
- pool是分布到整个集群的
- pool可以做故障隔离域,根据不同的用户场景不一进行隔离
Ceph数据扩容PG分布
- 现状3个OSD,4个PG
- 扩容到4个OSD,4个PG
现状:
扩容后:
每个OSD上分布很多PG,并且每个PG会自动散落在不同的OSD上。如果扩容那么相应的PG会进行迁移到新的OSD上,保证PG数量的均衡。
3.6 Ceph 心跳机制
1.心跳介绍 心跳是用于节点间检测对方是否故障的,以便及时发现故障节点进入相应的故障处理流程。
问题
- 故障时间和心跳报文带来的负载之间做权衡
- 心跳频率太高则过多的心跳会影响系统性能。
- 心跳频率过低则会延长发现故障点的时间,从而影响系统的可用性。
故障检测策略优点
- 及时:节点发生异常如宕机或网络中断时,集群可以在可接受的时间范围内感知
- 适当的压力:包括对节点的压力,和对网络的压力
- 容忍网络抖动:网络偶尔延迟
- 扩散机制:节点存活状态改变导致的元信息变化需要通过某种机制扩散到整个集群。
2.心跳检测
点会监听public、cluster、front和back四个端口
- public端口:监听来自Monitor和Client的连接
- cluster端口:监听来自OSD Peer的连接
- front端口:供客户端连接集群使用的网卡,这里临时给集群内部之间进行心跳
- back端口:供集群内部使用的网卡。集群内部之间进行心跳
- hbclient:发送ping心跳的messenger
3.Ceph OSD之间互相心跳检测
1).同一个PG内OSD互相心跳,他们互相发送PING/PONG信息。 2).每隔6s检测一次 (实际会在这个基础上加上一个随机时间来避免峰值) 3).20s没有检测到心跳回复,加入failure队列 (失败)
4.Ceph OSD与Mon心跳检测
如何自学黑客&网络安全
黑客零基础入门学习路线&规划
初级黑客
1、网络安全理论知识(2天)
①了解行业相关背景,前景,确定发展方向。
②学习网络安全相关法律法规。
③网络安全运营的概念。
④等保简介、等保规定、流程和规范。(非常重要)
2、渗透测试基础(一周)
①渗透测试的流程、分类、标准
②信息收集技术:主动/被动信息搜集、Nmap工具、Google Hacking
③漏洞扫描、漏洞利用、原理,利用方法、工具(MSF)、绕过IDS和反病毒侦察
④主机攻防演练:MS17-010、MS08-067、MS10-046、MS12-20等
3、操作系统基础(一周)
①Windows系统常见功能和命令
②Kali Linux系统常见功能和命令
③操作系统安全(系统入侵排查/系统加固基础)
4、计算机网络基础(一周)
①计算机网络基础、协议和架构
②网络通信原理、OSI模型、数据转发流程
③常见协议解析(HTTP、TCP/IP、ARP等)
④网络攻击技术与网络安全防御技术
⑤Web漏洞原理与防御:主动/被动攻击、DDOS攻击、CVE漏洞复现
5、数据库基础操作(2天)
①数据库基础
②SQL语言基础
③数据库安全加固
6、Web渗透(1周)
①HTML、CSS和JavaScript简介
②OWASP Top10
③Web漏洞扫描工具
④Web渗透工具:Nmap、BurpSuite、SQLMap、其他(菜刀、漏扫等)
恭喜你,如果学到这里,你基本可以从事一份网络安全相关的工作,比如渗透测试、Web 渗透、安全服务、安全分析等岗位;如果等保模块学的好,还可以从事等保工程师。薪资区间6k-15k
到此为止,大概1个月的时间。你已经成为了一名“脚本小子”。那么你还想往下探索吗?
如果你想要入坑黑客&网络安全,笔者给大家准备了一份:282G全网最全的网络安全资料包评论区留言即可领取!
7、脚本编程(初级/中级/高级)
在网络安全领域。是否具备编程能力是“脚本小子”和真正黑客的本质区别。在实际的渗透测试过程中,面对复杂多变的网络环境,当常用工具不能满足实际需求的时候,往往需要对现有工具进行扩展,或者编写符合我们要求的工具、自动化脚本,这个时候就需要具备一定的编程能力。在分秒必争的CTF竞赛中,想要高效地使用自制的脚本工具来实现各种目的,更是需要拥有编程能力.
如果你零基础入门,笔者建议选择脚本语言Python/PHP/Go/Java中的一种,对常用库进行编程学习;搭建开发环境和选择IDE,PHP环境推荐Wamp和XAMPP, IDE强烈推荐Sublime;·Python编程学习,学习内容包含:语法、正则、文件、 网络、多线程等常用库,推荐《Python核心编程》,不要看完;·用Python编写漏洞的exp,然后写一个简单的网络爬虫;·PHP基本语法学习并书写一个简单的博客系统;熟悉MVC架构,并试着学习一个PHP框架或者Python框架 (可选);·了解Bootstrap的布局或者CSS。
8、超级黑客
这部分内容对零基础的同学来说还比较遥远,就不展开细说了,附上学习路线。
网络安全工程师企业级学习路线
如图片过大被平台压缩导致看不清的话,评论区点赞和评论区留言获取吧。我都会回复的
视频配套资料&国内外网安书籍、文档&工具
当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
53b2778a3fe5198265bed9635d63469.webp?x-oss-process=image/format,png)
一些笔者自己买的、其他平台白嫖不到的视频教程。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注网络安全)
[外链图片转存中…(img-19tDDaAy-1713307866889)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!