操作系统安全基础
1. 计算机系统组成层次

1.1 硬件
- 提供基本计算资源(CPU、Memory、I/O Devices)
1.2 操作系统
- 控制、协调不同的应用程序使用计算机硬件
1.3 应用程序
- 定义人们使用系统资源的方式
2. 操作系统安全目标
2.1 允许多用户安全的共享单机
- 进程、内存、文件设备等的分离与共享
- 处理器模式
- 内存保护
- 文件的访问控制
- 鉴别
2.2 确保网络环境下的安全操作
- 鉴别
- 访问控制
- 安全通信(加密)
- 记录日志 & 审计
- 入侵检测
- 恢复
3. 系统安全保护方法
3.1 内存保护模式
- 保证一个用户的进程不能访问其他人的内存空间:分段、分页、基/堆寄存器、重分配
- 操作系统进程、用户进程:具有不同的权限
3.2 CPU 模式(处理器模式、主模式、超模式、内核模式)
-
系统模式
可以执行任意指令、访问任意内存地址、硬件设备、中断操作、改变处理器特权状态、访问内存管理单元、修改寄存器 -
用户模式
- 受限的内存访问,有些指令不能执行
- 不能:停止中断、改变任意进程状态、访问内存管理单元等
【注】从用户模式切换到系统模式必须通过系统调用。
- 内核空间 vs. 用户空间
- 操作系统的一部分运行在内核模式
- 操作系统的其他部分运行在用户模式(服务程序、用户应用等):作为进程运行,形成用户空间
- root 运行的进程可能在内核模式或用户模式
- 内核实现方法:单核 vs. 微内核
- 单核
- 一个大内核提供所有的服务,包括文件系统、网络服务、设备驱动等:所有内核代码运行在单址空间,互相之间会产生影响
- 优点:高效
- 缺点:复杂,某部分 bug 会影响整个系统
- 提供可加载内核模块的内核仍然是单核(如 MULTICS)
- 微内核
- 内核较小,仅提供执行系统服务必须的机制
- 内核提供:低地址空间管理,线程管理,进程间通信(IPC)
- 操作系统的服务可在用户模式下工作:包括设备驱动、协议栈、文件系统、用户的接口代码
- 优点:可实现最小特权,容忍设备驱动的失败/错误等
- 缺点:性能差,系统的关键服务出错后会使得系统停机
4. 系统调用
4.1 概念
系统调用是指从用户模式进入内核模式的系统程序。
- 所有操作系统都提供多种服务的入口点,由调用程序向内核请求服务
- 系统调用不能更改的
- 如果没有系统调用和内核函数,用户编写大型应用程序非常困难
- UNIX 为每个系统调用在标准 C 库中设置一个同样名字的函数。用户进程用标准 C 调用序列来调用这些函数,启动函数调用对应的内核服务
- 从执行者角度,系统调用和库函数有重大区别
- 从用户角度,区别不重要
4.2 实例
- C 函数库、系统调用关系
![]()
- 进程控制系统调用(fork、exec、wait)通常由用户的应用程序直接调用
- UNIX 系统也提供了库函数 system 和 open
- 存储器分配函数 malloc、sbrk 系统调用关系
![]()
- 内核中的系统调用 sbrk 分配另外一块空间给进程,而库函数 mallc 管理这一空间
4.3 系统调用分类
- 进程控制
- 文件管理
- 设备管理
- 信息维护
- 通信
5. 用户空间的安全机制
5.1 鉴别 Authentication
用户反问计算机系统或系统资源时,需要鉴别用户的身份,以确保其是合法用户。
- 账户密码
- 随机生成密码
- 检查用户的密码质量
- 强制密码过期
- 密码文件的保护(加密 & 访问控制)
- 连续几次登录失败后锁定账户
-
智能卡(安全令牌)
-
虹膜、指纹(生物学)
操作系统防止偶然性侵入、不能防御有能力的恶意攻击,权限提升:从网络用户 普通用户 超级用户。
5.2 访问控制 Access Control
- 参考监控器 Referennce Monitor
检测所有与安全相关的操作:创建进程、访问文件、
5.3 记录日志和审计 Logging & Auditing
- 将系统信息记录到日志中
- 记录信息
- 登录信息
- 修改时间
- 网络连接事件
- 应用日志、API hooking、检测系统调用、捕包、
5.4 入侵检测 Intrusion Detection
- 检测和记录网络相关事件、计算机系统遭到入侵和攻击事件
- 主要方法
- 被动式 IDS vs. 响应式 IDS
- 基于主机 IDS vs. 基于网络 IDS
5.5 恢复 Recovery
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!