/images/personal_logo.png

人世纷乱,出入平安。

Linux开机引导和启动过程详解

Linux开机引导和启动过程详解

一、概述

操作系统的启动过程本质上分为2个阶段:boot(引导)阶段和startup(启动)阶段。引导阶段开始于打开电源剋管,结束于内核初始化完成和systemd进程成功运行;启动阶段接管了剩余的其他的工作,一直到OS进入可操作状态。其涵盖的内容可以用下图表示:

Linux操作系统的大千世界 -- OS——x86架构

Linux操作系统的大千世界——OS——x86架构

Linux操作系统的大千世界——OS——x86架构

前言

完整的计算机由操作系统和硬件组成,必须两者兼备,而且两者要完美适配才能良好运作。操作系统的数量屈指可数,但是在操作系统下面的硬件却是千千万万。如何做到操作系统兼容各类各式的硬件环境呢?大家都协议一个通用的架构,大家都适配这个架构好了。于是,一个业内通用的架构——x86架构诞生了。

Linux操作系统的大千世界 -- 综述

Linux操作系统的大千世界 – 综述

Linux操作系统的大千世界 – 综述

前言

Linux操作系统,目前服务器领域体量最大的操作系统。之前学习操作系统时,并未单独对Linux操作系统进行深入的学习和理解,仅仅停留在常规使用和运维层面,而且只在需要时对部分功能和过程进行了深入的探索。在学习编程时,也并没有将Linux当作编程主力,当时还主要是在做Windows平台下的开发,因此对于Unix平台和类平台的编程开发能力相对较弱。基于以上两点,我觉得从头再完整过一遍Linux,将Linux相关内容整理成完整的知识体系架构。

Mac下的多版本Python管理实践

Mac下的多版本Python管理实践

Mac平台下多版本Python的管理实践

前言

Mac系统自带一个Python2,但是在实际生产时现在越来越多使用Python3。如果直接在系统上添加一个Python3,非常不方便进行管理。在进行开发时,也需要进行相关配置才能明确使用的Python版本。经过多方式、多软件尝试,最终找到一种方便的Python版本管理方式。

微软SMBv3 Client/Server远程代码执行漏洞分析(CVE-2020-0796)

微软SMBv3 Client/Server远程代码执行漏洞分析(CVE-2020-0796)

前言

北京时间2020.03.11日,互联网中泄漏了关于CVE-2020-0796的相关信息。在此前的微软3月份例行补丁日更新中,无意中泄漏了该漏洞的存在。该漏洞影响组件为SMBv3,在Windows 10 1903和Windows Server 1903之后的版本中存在,影响范围较广。目前尚未发现可利用EXP,但已有crash的PoC,需要积极应对。此外,该漏洞具有蠕虫传播特性,可以轻松进行蠕虫传播,需要高度重视。

SMB 协议简单总结

SMB协议简单总结

SMB协议

一. Client和Server的连接过程

  1. client和server首先建立NetBIOS session
  2. clent和server确定使用的smb协议的dialect(定义了特定协议版本的消息包集)
  3. client登录到server
  4. client连接server上的一个share
  5. client在share中打开文件
  6. client开始读取文件

client和server首先要建立全双工的TCP连接,然后client建立并发送一个NetBIOS session请求包。 如果请求包格式化正确,server返回一个包含着确认session建立成功的消息包。然后,client 开始想server发送第一个smb协议数据包。

Windows Heap 漫游

Windows Heap 漫游

在系统安全研究中,堆,是一个极其重要的内存区域以及研究的热点。堆,区别于栈区、全局数据区以及代码区,它的主要作用是允许程序在运行时动态地申请某个大小的内存空间。本文将从宏观到微观,简单梳理总结一下Windows系统中的堆相关的知识以及常见的堆利用漏洞,方便自己后续的学习。

Uroburos Rootkit分析

Uroburos Rootkit Analyse

Uroburos Rootkit中的HOOK的简单分析以及驱动的提取

Uroburos是一个rootkit,由两个文件,一个驱动程序和一个加密的虚拟文件系统组成。它可以窃取信息(最著名的是:文件),还可以捕获网络流量。它的模块化结构使其可以轻松扩展新功能,这不仅使其非常复杂,而且具有很高的灵活性和危险性。Uroburos的驱动程序部分非常复杂,并且设计得非常离散且很难识别。 本文章的分析基于BAE Systems的report以及spresec的博客,使用的样本为626576e5f0f85d77c460a322a92bb267,使用的主要工具为volatility(rekall也可以)。

Hadoop--初学到漏洞(六)--分布式环境搭建

Hadoop–初学到漏洞(六)–分布式环境搭建

服务器功能规划

zy1 zy2 zy3
NameNode ResourceManage
DataNode DataNode DataNode
NodeManager NodeManager NodeManager
HistoryServer SecondaryNameNode
ip:10.251.0.144 ip:10.251.0.150 ip:10.251.0.151

一、解压Hadoop目录

1
2
3
wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-2.8.5/hadoop-2.8.5.tar.gz
tar -zxvf hadoop-2.8.5.tar.gz -C /opt/bigdata
mv hadoop-2.8.5 hadoop

在伪分布式安装时,已经配置了hadoop的环境变量,无需再重复配置了。验证:

Hadoop--初学到漏洞(五)--HDFS

Hadoop–初学到漏洞(五)–HDFS

一、架构

HDFS遵循主从架构。

https://atts.w3cschool.cn/attachments/image/20190627/1561603936683523.png

  • Block数据块;
    1. 基本存储单位,一般大小为64M(配置大的块主要是因为:1)减少搜寻时间,一般硬盘传输速率比寻道时间要快,大的块可以减少寻道时间;2)减少管理块的数据开销,每个块都需要在NameNode上有对应的记录;3)对数据块进行读写,减少建立网络的连接成本)
    2. 一个大文件会被拆分成一个个的块,然后存储于不同的机器。如果一个文件少于Block大小,那么实际占用的空间为其文件的大小
    3. 基本的读写单位,类似于磁盘的页,每次都是读写一个块
    4. 每个块都会被复制到多台机器,默认复制3份
  • NameNode
    1. 存储文件的metadata,运行时所有数据都保存到内存,整个HDFS可存储的文件数受限于NameNode的内存大小
    2. 一个Block在NameNode中对应一条记录(一般一个block占用150字节),如果是大量的小文件,会消耗大量内存。同时map task的数量是由splits来决定的,所以用MapReduce处理大量的小文件时,就会产生过多的map task,线程管理开销将会增加作业时间。处理大量小文件的速度远远小于处理同等大小的大文件的速度。因此Hadoop建议存储大文件
    3. 数据会定时保存到本地磁盘,但不保存block的位置信息,而是由DataNode注册时上报和运行时维护(NameNode中与DataNode相关的信息并不保存到NameNode的文件系统中,而是NameNode每次重启后,动态重建)
    4. NameNode失效则整个HDFS都失效了,所以要保证NameNode的可用性
  • Secondary NameNode
    1. 定时与NameNode进行同步(定期合并文件系统镜像和编辑日志,然后把合并后的传给NameNode,替换其镜像,并清空编辑日志,类似于CheckPoint机制),但NameNode失效后仍需要手工将其设置成主机
  • DataNode
    1. 保存具体的block数据
    2. 负责数据的读写操作和复制操作
    3. DataNode启动时会向NameNode报告当前存储的数据块信息,后续也会定时报告修改信息
    4. DataNode之间会进行通信,复制数据块,保证数据的冗余性

二、写文件

https://atts.w3cschool.cn/attachments/image/wk/hadoop/hdfs-write.png