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发行版时间线可参考:
Linux内核与发行版¶
Linux内核 (Kernel)¶
内核是操作系统的核心,负责四大功能:
| 功能 | 说明 |
|---|---|
| 设备驱动 | 管理硬件设备的驱动程序,使内核能与硬件通信 |
| 文件系统 | 管理文件的存储、读取、权限等 |
| 进程管理 | 调度CPU时间片,管理进程的生命周期 |
| 网络通信 | 实现TCP/IP协议栈,管理网络连接和数据传输 |
查看内核信息的命令:
内核官网: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内核,打包出不同的发行版,面向不同用户群体。
查看当前系统的发行版:
专业解读:常见的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,体积小、攻击面小,是容器化部署的安全选择