操作系统安全基础

1. 计算机系统组成层次

1.1 硬件

  • 提供基本计算资源(CPU、Memory、I/O Devices)

1.2 操作系统

  • 控制、协调不同的应用程序使用计算机硬件

1.3 应用程序

  • 定义人们使用系统资源的方式

2. 操作系统安全目标

2.1 允许多用户安全的共享单机

  • 进程、内存、文件设备等的分离与共享
  • 处理器模式
  • 内存保护
  • 文件的访问控制
  • 鉴别

2.2 确保网络环境下的安全操作

  • 鉴别
  • 访问控制
  • 安全通信(加密)
  • 记录日志 & 审计
  • 入侵检测
  • 恢复

3. 系统安全保护方法

3.1 内存保护模式

  • 保证一个用户的进程不能访问其他人的内存空间:分段、分页、基/堆寄存器、重分配 \cdots
  • 操作系统进程、用户进程:具有不同的权限

3.2 CPU 模式(处理器模式、主模式、超模式、内核模式)

  • 系统模式
    可以执行任意指令、访问任意内存地址、硬件设备、中断操作、改变处理器特权状态、访问内存管理单元、修改寄存器

  • 用户模式

  1. 受限的内存访问,有些指令不能执行
  2. 不能:停止中断、改变任意进程状态、访问内存管理单元等

【注】从用户模式切换到系统模式必须通过系统调用。

  • 内核空间 vs. 用户空间
  1. 操作系统的一部分运行在内核模式
  2. 操作系统的其他部分运行在用户模式(服务程序、用户应用等):作为进程运行,形成用户空间
  3. root 运行的进程可能在内核模式或用户模式
  • 内核实现方法:单核 vs. 微内核
  1. 单核
  • 一个大内核提供所有的服务,包括文件系统、网络服务、设备驱动等:所有内核代码运行在单址空间,互相之间会产生影响
  • 优点:高效
  • 缺点:复杂,某部分 bug 会影响整个系统
  • 提供可加载内核模块的内核仍然是单核(如 MULTICS)
  1. 微内核
  • 内核较小,仅提供执行系统服务必须的机制
  • 内核提供:低地址空间管理,线程管理,进程间通信(IPC)
  • 操作系统的服务可在用户模式下工作:包括设备驱动、协议栈、文件系统、用户的接口代码
  • 优点:可实现最小特权,容忍设备驱动的失败/错误等
  • 缺点:性能差,系统的关键服务出错后会使得系统停机

4. 系统调用

4.1 概念

系统调用是指从用户模式进入内核模式的系统程序。

  • 所有操作系统都提供多种服务的入口点,由调用程序向内核请求服务
  • 系统调用不能更改的
  • 如果没有系统调用和内核函数,用户编写大型应用程序非常困难
  • UNIX 为每个系统调用在标准 C 库中设置一个同样名字的函数。用户进程用标准 C 调用序列来调用这些函数,启动函数调用对应的内核服务
  • 从执行者角度,系统调用和库函数有重大区别
  • 从用户角度,区别不重要

4.2 实例

  1. C 函数库、系统调用关系
  • 进程控制系统调用(fork、exec、wait)通常由用户的应用程序直接调用
  • UNIX 系统也提供了库函数 system 和 open
  1. 存储器分配函数 malloc、sbrk 系统调用关系
  • 内核中的系统调用 sbrk 分配另外一块空间给进程,而库函数 mallc 管理这一空间

4.3 系统调用分类

  • 进程控制
  • 文件管理
  • 设备管理
  • 信息维护
  • 通信

5. 用户空间的安全机制

5.1 鉴别 Authentication

用户反问计算机系统或系统资源时,需要鉴别用户的身份,以确保其是合法用户。

  • 账户密码
  1. 随机生成密码
  2. 检查用户的密码质量
  3. 强制密码过期
  4. 密码文件的保护(加密 & 访问控制)
  5. 连续几次登录失败后锁定账户
    \cdots
  • 智能卡(安全令牌)

  • 虹膜、指纹(生物学)

操作系统防止偶然性侵入、不能防御有能力的恶意攻击,权限提升:从网络用户 \rightarrow 普通用户 \rightarrow 超级用户。

5.2 访问控制 Access Control

  • 参考监控器 Referennce Monitor
    检测所有与安全相关的操作:创建进程、访问文件、\cdots

5.3 记录日志和审计 Logging & Auditing

  • 将系统信息记录到日志中
  • 记录信息
  1. 登录信息
  2. 修改时间
  3. 网络连接事件
  • 应用日志、API hooking、检测系统调用、捕包、\cdots

5.4 入侵检测 Intrusion Detection

  • 检测和记录网络相关事件、计算机系统遭到入侵和攻击事件
  • 主要方法
  1. 被动式 IDS vs. 响应式 IDS
  2. 基于主机 IDS vs. 基于网络 IDS

5.5 恢复 Recovery