跳转至

Linux操作系统概述

概述

Linux 是服务器领域使用最广泛的操作系统,也是安全测试和渗透测试的主要目标平台。本文从操作系统发展历史出发,介绍了 Linux 的诞生背景、内核与发行版的关系,以及 Linux 在安全领域的重要地位。

操作系统简史

计算机操作系统发展的 decades

年代 主要发展 关键事件
40年代 穿孔卡片 无操作系统,程序通过物理卡片输入计算机
50年代 批处理系统诞生 GM-NAA I/O 出现,计算机开始能读取内存、编程语言出现、可重用代码、汇编程序、中断机制诞生
60年代 多程序、多处理器、交互式操作 DOS(Disk Operating System)出现;小型计算机普及;分时系统、虚拟内存、多处理技术成熟;UNIX和鼠标诞生
70年代 Unix成熟、C语言诞生 Ken Thompson 和 Dennis Ritchie 开发Unix和C语言;数据网络和微处理器发展
80年代至今 百花齐放 Windows、MacOS、Linux等现代操作系统涌现

MULTICS 与 UNIX 的诞生

  • MULTICS(MULTiplexed Information and Computing System):60年代由贝尔实验室、MIT和通用电气联合开发的大型分时操作系统项目,虽然最终未大规模商用,但影响了后世所有操作系统的设计。
  • Ken Thompson(肯·汤普森):贝尔实验室研究员,在MULTICS项目基础上,于1969年开发了 Unics(后改名为Unix),初衷是为了在闲置的PDP-7小型机上运行游戏。
  • Dennis Ritchie(丹尼斯·里奇):与Thompson一起,用新发明的C语言重写了Unix,使Unix具有可移植性。两人因此获得图灵奖。

专业解读:Unix的设计理念"一切皆文件"、"小而美"、"管道机制"深深影响了Linux。Unix的版权问题后来直接促成了Linux的诞生。

个人电脑操作系统的发展

  • Microsoft:从QDOS发展为MS-DOS,再推出Windows系列。1985年发布Windows 1.0。
  • Apple:Macintosh + System 1.0,开创图形界面先河。其设计灵感部分来自Xerox(施乐)公司的Alto计算机(由John Ellenby设计)。
  • Xerox Alto:世界上第一台使用图形用户界面(GUI)的计算机,鼠标和窗口的概念都源于此。

Linux的诞生与分支

Linux is not UNIX

Linux虽然与Unix兼容(遵循POSIX标准),但Linux不是Unix。Linux是独立开发的类Unix操作系统。

Linux诞生的历史背景

时间 事件
Unix Version 7 AT&T开始将Unix闭源收费,限制了学术界的自由使用
Andrew S. Tanenbaum 教授开发了 Minix(mini-UNIX),用于教学,但功能有限且授权受限
1991年 Linus Benedict Torvalds 在 comp.os.minix 新闻组发布消息,宣布开发新的免费操作系统内核
GNU项目 Richard Stallman发起的自由软件运动,提供了大量开源工具(gcc、bash等),但缺少内核。Linux内核与GNU工具结合,形成了完整的操作系统

专业解读:严格来说,我们常说的"Linux系统"应称为 GNU/Linux,因为内核只是系统的一部分,大量的基础工具来自GNU项目。但日常习惯简称为Linux。

Unix分支与Linux分支

  • Unix分支:System V(AT&T)、BSD(加州大学伯克利分校)、HP-UX、AIX、Solaris等,多为商业闭源系统。
  • Linux分支:数百种发行版(Distribution),包括Redhat、Debian、SUSE、Arch等大家族。

Linux发行版时间线可参考:

https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg


Linux内核与发行版

Linux内核 (Kernel)

内核是操作系统的核心,负责四大功能:

功能 说明
设备驱动 管理硬件设备的驱动程序,使内核能与硬件通信
文件系统 管理文件的存储、读取、权限等
进程管理 调度CPU时间片,管理进程的生命周期
网络通信 实现TCP/IP协议栈,管理网络连接和数据传输

查看内核信息的命令:

uname -a          # 显示所有系统信息
uname -mrs        # 显示机器硬件名、内核release、内核版本
cat /proc/version # 显示内核版本详细信息

内核官网:https://www.kernel.org/

内核版本号解读

Linux 3.10.0-514.el7.x86_64 为例:

部分 含义
Linux 内核名
3 主版本号(重大架构更新)
10 次版本号(偶数为稳定版,奇数为开发版)
0 修订版本号
514 发行版本的补丁版本号
el7 RedHat / CentOS 系列发行版专用(Enterprise Linux 7)
x86_64 64位CPU架构

专业解读:自Linux 3.0版本后,内核版本号规则有所简化,不再严格区分奇偶稳定版。现在的版本号直接递增(如5.x、6.x)。

内核漏洞查询

关注内核安全漏洞对服务器运维至关重要: - CVE-2016-5195 (DirtyCow):本地提权漏洞,影响大量Linux内核版本 - CVE-2022-0847 (DirtyPipe):Linux内核5.8及以上版本的本地提权漏洞

查询网址:https://www.cvedetails.com/vulnerability-list/vendor_id-33/product_id-47/Linux-Linux-Kernel.html

发行版 (Distribution)

发行版 = Linux内核 + GNU工具 + 包管理系统 + 桌面环境 + 各种应用软件

不同的组织和公司基于相同的Linux内核,打包出不同的发行版,面向不同用户群体。

查看当前系统的发行版:

cat /etc/redhat-release
# 输出示例:CentOS Linux release 7.3.1611 (Core)

专业解读:常见的Linux发行版家族: - Redhat系:RHEL(企业版,收费)、CentOS(社区版,免费,已转向CentOS Stream)、Fedora(桌面版,红帽的试验田)、Rocky Linux/AlmaLinux(RHEL替代) - Debian系:Debian(社区驱动,极其稳定)、Ubuntu(桌面和服务器都流行)、Kali(渗透测试专用) - SUSE系:openSUSE、SLES(企业版) - Arch系:Arch Linux(滚动更新)、Manjaro(基于Arch的易用版)


安全测试视角:内核漏洞 Linux 内核漏洞是权限提升(Privilege Escalation)最常见的途径之一。以下是几个历史上影响广泛的内核漏洞: - CVE-2016-5195 (Dirty COW):Linux 内核的写时复制(Copy-On-Write)机制存在竞争条件漏洞,本地攻击者可利用此漏洞将只读内存映射改写为可写,进而提权到 root - CVE-2022-0847 (Dirty Pipe):Linux 内核 5.8+ 的管道机制存在漏洞,允许非特权用户向任意可读文件中写入数据,可导致权限提升 - CVE-2023-0386 (OverlayFS):Ubuntu 内核 OverlayFS 实现中的漏洞,本地用户可通过该漏洞提权 在安全测试中,应首先检查目标系统的内核版本,查询是否存在已知的 CVE 漏洞。

安全测试视角:发行版选择与安全 不同的 Linux 发行版在安全特性上有所差异: - Kali Linux:专为渗透测试设计,预装大量安全工具,但不应作为生产服务器使用 - CentOS/RHEL:企业级稳定发行版,SELinux 强制访问控制提供额外的安全层 - Ubuntu:社区活跃,安全更新及时,AppArmor 提供应用级安全防护 - Alpine Linux:基于 musl libc 和 BusyBox,体积小、攻击面小,是容器化部署的安全选择