这是"操作系统系列教程"的第二十六篇。前面几篇我们讲了操作系统的体系结构,知道了内核的设计方式。这一篇,我们聚焦一个和每个人都息息相关的话题------操作系统安全。你的电脑为什么需要密码?为什么有些文件你打不开?为什么系统会记录你的操作?这些问题的答案,都在操作系统的安全机制里。
一个每天都在发生的安全攻防
先来看几个场景:
- 你给电脑设置了登录密码,别人不知道密码就进不去;
- 你电脑里的私人照片,其他用户登录后看不到;
- 你安装软件时,系统弹出"是否允许此应用对设备进行更改";
- 你登录网上银行,系统要求输入短信验证码;
- 你公司的服务器记录了每个用户的登录时间和操作日志。
这些场景背后,都是操作系统的安全机制在起作用。操作系统安全要解决三个核心问题:
- 你是谁?------身份认证;
- 你能做什么?------访问控制;
- 你做了什么?------审计。
这三个问题,构成了操作系统安全的基本框架。这篇文章,我们就来把"操作系统安全"这件事讲清楚。
说明:本文涉及身份认证、访问控制、审计等概念。初学者如果遇到暂时看不懂的术语,可以先跳过细节,重点理解"操作系统通过认证确认身份、通过访问控制限制权限、通过审计记录行为"这一核心思想。
一、操作系统安全到底是什么?
1.1 从"门禁系统"说起
我们可以用"小区门禁"来类比操作系统安全。
| 小区场景 | 操作系统 |
|---|---|
| 门禁卡 | 用户账号和密码 |
| 保安验证门禁卡 | 身份认证 |
| 不同楼栋的访问权限 | 访问控制 |
| 小区监控录像 | 审计日志 |
| 保安巡逻 | 安全监控 |
| 门锁 | 加密机制 |
小区要安全,需要:
- 只有业主才能进入(身份认证);
- 业主只能进自己住的楼栋(访问控制);
- 监控记录所有进出(审计);
- 门锁保护财产(加密)。
操作系统安全也是同样的道理。
1.2 操作系统安全的定义
给出一个正式的定义:
操作系统安全是指操作系统通过身份认证、访问控制、审计、加密等机制,保护系统中的硬件、软件和数据不被未授权访问、使用、泄露、破坏或篡改。
这个定义里有四个关键点:
- 身份认证:确认用户是谁;
- 访问控制:限制用户能做什么;
- 审计:记录用户做了什么;
- 加密:保护数据不被窃取。
1.3 操作系统安全的核心目标
操作系统安全有三个核心目标,通常称为 CIA 三元组:
| 目标 | 含义 | 示例 |
|---|---|---|
| 机密性 | 数据不被未授权访问 | 私人文件不被他人查看 |
| 完整性 | 数据不被未授权修改 | 系统文件不被恶意篡改 |
| 可用性 | 系统和数据在需要时可用 | 服务器不被攻击导致宕机 |

图 1:操作系统安全的三大目标。 机密性、完整性、可用性。
二、操作系统面临的安全威胁
操作系统面临多种安全威胁,常见的有:
2.1 恶意软件
| 类型 | 说明 |
|---|---|
| 病毒 | 依附在正常程序中,自我复制传播 |
| 蠕虫 | 独立运行,通过网络自我复制 |
| 木马 | 伪装成正常软件,窃取数据或控制系统 |
| 勒索软件 | 加密用户数据,索要赎金 |
| 间谍软件 | 秘密收集用户信息 |
2.2 未授权访问
攻击者通过各种手段获取系统访问权限:
- 暴力破解:尝试所有可能的密码;
- 社会工程:欺骗用户泄露密码;
- 漏洞利用:利用系统或软件的漏洞;
- 提权攻击:从普通用户提升到管理员权限。
2.3 拒绝服务攻击
攻击者通过大量请求耗尽系统资源,使正常用户无法使用服务。
2.4 内部威胁
内部人员(员工、管理员)滥用权限,窃取或破坏数据。
#mermaid-svg-OirbMhYNaFUBPne6{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-OirbMhYNaFUBPne6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-OirbMhYNaFUBPne6 .error-icon{fill:#552222;}#mermaid-svg-OirbMhYNaFUBPne6 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-OirbMhYNaFUBPne6 .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-OirbMhYNaFUBPne6 .marker{fill:#333333;stroke:#333333;}#mermaid-svg-OirbMhYNaFUBPne6 .marker.cross{stroke:#333333;}#mermaid-svg-OirbMhYNaFUBPne6 svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-OirbMhYNaFUBPne6 p{margin:0;}#mermaid-svg-OirbMhYNaFUBPne6 .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-OirbMhYNaFUBPne6 .cluster-label text{fill:#333;}#mermaid-svg-OirbMhYNaFUBPne6 .cluster-label span{color:#333;}#mermaid-svg-OirbMhYNaFUBPne6 .cluster-label span p{background-color:transparent;}#mermaid-svg-OirbMhYNaFUBPne6 .label text,#mermaid-svg-OirbMhYNaFUBPne6 span{fill:#333;color:#333;}#mermaid-svg-OirbMhYNaFUBPne6 .node rect,#mermaid-svg-OirbMhYNaFUBPne6 .node circle,#mermaid-svg-OirbMhYNaFUBPne6 .node ellipse,#mermaid-svg-OirbMhYNaFUBPne6 .node polygon,#mermaid-svg-OirbMhYNaFUBPne6 .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-OirbMhYNaFUBPne6 .rough-node .label text,#mermaid-svg-OirbMhYNaFUBPne6 .node .label text,#mermaid-svg-OirbMhYNaFUBPne6 .image-shape .label,#mermaid-svg-OirbMhYNaFUBPne6 .icon-shape .label{text-anchor:middle;}#mermaid-svg-OirbMhYNaFUBPne6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-OirbMhYNaFUBPne6 .rough-node .label,#mermaid-svg-OirbMhYNaFUBPne6 .node .label,#mermaid-svg-OirbMhYNaFUBPne6 .image-shape .label,#mermaid-svg-OirbMhYNaFUBPne6 .icon-shape .label{text-align:center;}#mermaid-svg-OirbMhYNaFUBPne6 .node.clickable{cursor:pointer;}#mermaid-svg-OirbMhYNaFUBPne6 .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-OirbMhYNaFUBPne6 .arrowheadPath{fill:#333333;}#mermaid-svg-OirbMhYNaFUBPne6 .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-OirbMhYNaFUBPne6 .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-OirbMhYNaFUBPne6 .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OirbMhYNaFUBPne6 .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-OirbMhYNaFUBPne6 .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OirbMhYNaFUBPne6 .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-OirbMhYNaFUBPne6 .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-OirbMhYNaFUBPne6 .cluster text{fill:#333;}#mermaid-svg-OirbMhYNaFUBPne6 .cluster span{color:#333;}#mermaid-svg-OirbMhYNaFUBPne6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-OirbMhYNaFUBPne6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-OirbMhYNaFUBPne6 rect.text{fill:none;stroke-width:0;}#mermaid-svg-OirbMhYNaFUBPne6 .icon-shape,#mermaid-svg-OirbMhYNaFUBPne6 .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-OirbMhYNaFUBPne6 .icon-shape p,#mermaid-svg-OirbMhYNaFUBPne6 .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-OirbMhYNaFUBPne6 .icon-shape .label rect,#mermaid-svg-OirbMhYNaFUBPne6 .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-OirbMhYNaFUBPne6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-OirbMhYNaFUBPne6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-OirbMhYNaFUBPne6 :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 操作系统安全威胁
恶意软件
未授权访问
拒绝服务
内部威胁
病毒 · 蠕虫 · 木马
勒索软件 · 间谍软件
暴力破解
漏洞利用
提权攻击
资源耗尽
权限滥用
图 2:操作系统面临的主要安全威胁。
三、身份认证:确认你是谁
3.1 什么是身份认证?
身份认证(Authentication)是操作系统确认用户身份的过程。用户登录系统时,需要提供身份凭证,操作系统验证凭证是否正确。
3.2 三种认证因素
身份认证通常基于三种因素:
| 因素 | 说明 | 示例 |
|---|---|---|
| 你知道什么 | 知识因素 | 密码、PIN 码、安全问题 |
| 你拥有什么 | 持有因素 | 手机、U 盾、智能卡 |
| 你是什么 | 生物因素 | 指纹、人脸、虹膜 |

图 3:身份认证的三种因素。
3.3 密码认证
密码是最常见的认证方式。操作系统通常不会明文存储密码,而是存储密码的哈希值。
在 Linux 中,用户密码的哈希值存储在 /etc/shadow 文件中。当用户登录时,系统计算输入密码的哈希值,与存储的哈希值比对。
bash
# 查看 /etc/shadow(需要 root 权限)
sudo cat /etc/shadow
输出格式:
text
用户名:哈希值:最后修改时间:最小间隔:最大间隔:警告天数:失效天数:保留
密码安全建议:
- 使用强密码(长度 ≥ 12,包含大小写字母、数字、符号);
- 不同系统使用不同密码;
- 定期更换密码;
- 不要使用常见密码。
3.4 多因素认证
多因素认证(Multi-Factor Authentication,MFA)要求用户提供两种或多种认证因素。
例如:
- 密码 + 短信验证码;
- 密码 + 指纹;
- 密码 + U 盾。
多因素认证大大提高了安全性,因为攻击者即使获得了密码,也无法通过其他因素的验证。
3.5 生物认证
生物认证使用用户的生理特征进行认证,如指纹、人脸、虹膜、声纹。
优点 :难以伪造,使用方便。
缺点:不能更换(指纹泄露后无法更改),成本较高。
3.6 单点登录
单点登录(Single Sign-On,SSO)允许用户一次登录,访问多个系统。
例如,企业员工登录一次,就可以访问邮件、OA、CRM 等系统。SSO 提高了便利性,但也增加了单点故障的风险。
四、访问控制:限制你能做什么
4.1 什么是访问控制?
访问控制(Access Control)是操作系统限制用户对资源访问的机制。身份认证确认了"你是谁",访问控制决定"你能做什么"。
4.2 访问控制的基本模型
访问控制涉及三个要素:
| 要素 | 说明 |
|---|---|
| 主体 | 发起访问的用户或进程 |
| 客体 | 被访问的资源(文件、设备、内存) |
| 权限 | 允许的操作(读、写、执行) |

图 4:访问控制的基本模型。 主体请求访问客体,访问控制检查权限后决定允许或拒绝。
4.3 访问控制模型
常见的访问控制模型有四种:
自主访问控制(DAC):资源的所有者决定谁可以访问。Linux 的文件权限就是 DAC。
强制访问控制(MAC):系统根据安全标签决定访问权限,用户无法更改。SELinux、AppArmor 使用 MAC。
基于角色的访问控制(RBAC):根据用户角色分配权限。例如,管理员角色有所有权限,普通用户角色只有基本权限。
基于属性的访问控制(ABAC):根据用户、资源、环境的属性决定访问权限。例如,只有工作时间、公司网络内才能访问敏感数据。
#mermaid-svg-J8oO4IzigOrZ9wwt{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-J8oO4IzigOrZ9wwt .error-icon{fill:#552222;}#mermaid-svg-J8oO4IzigOrZ9wwt .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-J8oO4IzigOrZ9wwt .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-J8oO4IzigOrZ9wwt .marker{fill:#333333;stroke:#333333;}#mermaid-svg-J8oO4IzigOrZ9wwt .marker.cross{stroke:#333333;}#mermaid-svg-J8oO4IzigOrZ9wwt svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-J8oO4IzigOrZ9wwt p{margin:0;}#mermaid-svg-J8oO4IzigOrZ9wwt .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster-label text{fill:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster-label span{color:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster-label span p{background-color:transparent;}#mermaid-svg-J8oO4IzigOrZ9wwt .label text,#mermaid-svg-J8oO4IzigOrZ9wwt span{fill:#333;color:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt .node rect,#mermaid-svg-J8oO4IzigOrZ9wwt .node circle,#mermaid-svg-J8oO4IzigOrZ9wwt .node ellipse,#mermaid-svg-J8oO4IzigOrZ9wwt .node polygon,#mermaid-svg-J8oO4IzigOrZ9wwt .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-J8oO4IzigOrZ9wwt .rough-node .label text,#mermaid-svg-J8oO4IzigOrZ9wwt .node .label text,#mermaid-svg-J8oO4IzigOrZ9wwt .image-shape .label,#mermaid-svg-J8oO4IzigOrZ9wwt .icon-shape .label{text-anchor:middle;}#mermaid-svg-J8oO4IzigOrZ9wwt .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-J8oO4IzigOrZ9wwt .rough-node .label,#mermaid-svg-J8oO4IzigOrZ9wwt .node .label,#mermaid-svg-J8oO4IzigOrZ9wwt .image-shape .label,#mermaid-svg-J8oO4IzigOrZ9wwt .icon-shape .label{text-align:center;}#mermaid-svg-J8oO4IzigOrZ9wwt .node.clickable{cursor:pointer;}#mermaid-svg-J8oO4IzigOrZ9wwt .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-J8oO4IzigOrZ9wwt .arrowheadPath{fill:#333333;}#mermaid-svg-J8oO4IzigOrZ9wwt .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-J8oO4IzigOrZ9wwt .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-J8oO4IzigOrZ9wwt .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-J8oO4IzigOrZ9wwt .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-J8oO4IzigOrZ9wwt .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-J8oO4IzigOrZ9wwt .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster text{fill:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt .cluster span{color:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-J8oO4IzigOrZ9wwt .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-J8oO4IzigOrZ9wwt rect.text{fill:none;stroke-width:0;}#mermaid-svg-J8oO4IzigOrZ9wwt .icon-shape,#mermaid-svg-J8oO4IzigOrZ9wwt .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-J8oO4IzigOrZ9wwt .icon-shape p,#mermaid-svg-J8oO4IzigOrZ9wwt .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-J8oO4IzigOrZ9wwt .icon-shape .label rect,#mermaid-svg-J8oO4IzigOrZ9wwt .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-J8oO4IzigOrZ9wwt .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-J8oO4IzigOrZ9wwt .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-J8oO4IzigOrZ9wwt :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 访问控制模型
DAC
自主访问控制
MAC
强制访问控制
RBAC
基于角色
ABAC
基于属性
图 5:常见的访问控制模型。
4.4 Linux 中的访问控制
Linux 使用多种访问控制机制:
传统权限:
bash
# 查看文件权限
ls -l file.txt
# 输出:-rw-r--r-- 1 user group 1024 Jan 1 12:00 file.txt
权限分为三组:所有者、所属组、其他人。每组有读(r)、写(w)、执行(x)三种权限。
SELinux:Security-Enhanced Linux,由美国国家安全局开发,提供强制访问控制。
bash
# 查看 SELinux 状态
getenforce
# 输出:Enforcing / Permissive / Disabled
AppArmor:另一种强制访问控制机制,比 SELinux 更易用。
bash
# 查看 AppArmor 状态
aa-status
4.5 Windows 中的访问控制
Windows 使用访问控制列表(ACL)管理权限。每个文件、文件夹、注册表项都有 ACL,记录哪些用户或组有什么权限。
Windows 还使用用户账户控制(UAC),当程序需要管理员权限时,弹出提示让用户确认。

图 6:Windows 的访问控制机制。
4.6 最小权限原则
最小权限原则 (Principle of Least Privilege)是访问控制的核心原则:用户和进程只应拥有完成工作所需的最小权限。
例如:
- 普通用户不需要管理员权限;
- 一个程序只需要读取文件,就不应给它写入权限;
- 服务账户只应拥有服务所需的权限。
最小权限原则可以限制攻击者的操作范围,减少安全风险。
五、审计:记录你做了什么
5.1 什么是审计?
审计(Audit)是操作系统记录用户和进程操作的过程。审计日志用于:
- 追踪安全事件;
- 检测异常行为;
- 满足合规要求;
- 事后取证分析。
5.2 审计日志的内容
审计日志通常记录:
| 内容 | 说明 |
|---|---|
| 时间 | 操作发生的时间 |
| 用户 | 执行操作的用户 |
| 进程 | 执行操作的进程 |
| 操作 | 执行了什么操作 |
| 结果 | 成功还是失败 |
| 资源 | 操作涉及的资源 |
5.3 Linux 中的审计
Linux 使用 auditd 守护进程进行审计。
bash
# 查看审计服务状态
systemctl status auditd
# 查看审计日志
ausearch -m USER_LOGIN
# 添加审计规则
auditctl -w /etc/passwd -p wa -k passwd_change
Linux 的日志文件通常位于 /var/log/ 目录下:
| 日志文件 | 内容 |
|---|---|
/var/log/auth.log |
认证日志 |
/var/log/syslog |
系统日志 |
/var/log/kern.log |
内核日志 |
/var/log/audit/audit.log |
审计日志 |
5.4 Windows 中的审计
Windows 使用事件查看器(Event Viewer)查看审计日志。
常见的事件类型:
| 事件 ID | 说明 |
|---|---|
| 4624 | 登录成功 |
| 4625 | 登录失败 |
| 4672 | 分配特殊权限 |
| 4720 | 创建用户账户 |
#mermaid-svg-e3kzF3TaV0x0zRoT{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-e3kzF3TaV0x0zRoT .error-icon{fill:#552222;}#mermaid-svg-e3kzF3TaV0x0zRoT .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-e3kzF3TaV0x0zRoT .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-e3kzF3TaV0x0zRoT .marker{fill:#333333;stroke:#333333;}#mermaid-svg-e3kzF3TaV0x0zRoT .marker.cross{stroke:#333333;}#mermaid-svg-e3kzF3TaV0x0zRoT svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-e3kzF3TaV0x0zRoT p{margin:0;}#mermaid-svg-e3kzF3TaV0x0zRoT .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster-label text{fill:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster-label span{color:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster-label span p{background-color:transparent;}#mermaid-svg-e3kzF3TaV0x0zRoT .label text,#mermaid-svg-e3kzF3TaV0x0zRoT span{fill:#333;color:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT .node rect,#mermaid-svg-e3kzF3TaV0x0zRoT .node circle,#mermaid-svg-e3kzF3TaV0x0zRoT .node ellipse,#mermaid-svg-e3kzF3TaV0x0zRoT .node polygon,#mermaid-svg-e3kzF3TaV0x0zRoT .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-e3kzF3TaV0x0zRoT .rough-node .label text,#mermaid-svg-e3kzF3TaV0x0zRoT .node .label text,#mermaid-svg-e3kzF3TaV0x0zRoT .image-shape .label,#mermaid-svg-e3kzF3TaV0x0zRoT .icon-shape .label{text-anchor:middle;}#mermaid-svg-e3kzF3TaV0x0zRoT .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-e3kzF3TaV0x0zRoT .rough-node .label,#mermaid-svg-e3kzF3TaV0x0zRoT .node .label,#mermaid-svg-e3kzF3TaV0x0zRoT .image-shape .label,#mermaid-svg-e3kzF3TaV0x0zRoT .icon-shape .label{text-align:center;}#mermaid-svg-e3kzF3TaV0x0zRoT .node.clickable{cursor:pointer;}#mermaid-svg-e3kzF3TaV0x0zRoT .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-e3kzF3TaV0x0zRoT .arrowheadPath{fill:#333333;}#mermaid-svg-e3kzF3TaV0x0zRoT .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-e3kzF3TaV0x0zRoT .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-e3kzF3TaV0x0zRoT .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-e3kzF3TaV0x0zRoT .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-e3kzF3TaV0x0zRoT .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-e3kzF3TaV0x0zRoT .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster text{fill:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT .cluster span{color:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-e3kzF3TaV0x0zRoT .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-e3kzF3TaV0x0zRoT rect.text{fill:none;stroke-width:0;}#mermaid-svg-e3kzF3TaV0x0zRoT .icon-shape,#mermaid-svg-e3kzF3TaV0x0zRoT .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-e3kzF3TaV0x0zRoT .icon-shape p,#mermaid-svg-e3kzF3TaV0x0zRoT .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-e3kzF3TaV0x0zRoT .icon-shape .label rect,#mermaid-svg-e3kzF3TaV0x0zRoT .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-e3kzF3TaV0x0zRoT .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-e3kzF3TaV0x0zRoT .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-e3kzF3TaV0x0zRoT :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 审计机制
Linux: auditd
Windows: 事件查看器
auth.log
audit.log
安全日志
系统日志
图 7:Linux 和 Windows 的审计机制。
5.5 审计的挑战
审计面临几个挑战:
- 日志量大:系统每天产生大量日志,分析困难;
- 日志篡改:攻击者可能删除或修改日志;
- 隐私问题:审计可能记录用户隐私;
- 存储成本:长期保存日志需要大量存储空间。
解决方案:
- 使用集中式日志管理(如 ELK、Splunk);
- 日志加密和签名,防止篡改;
- 只记录必要的审计事件;
- 定期归档和清理。
六、其他安全机制
6.1 加密
加密把明文转换为密文,防止未授权访问。
| 类型 | 说明 | 应用 |
|---|---|---|
| 对称加密 | 加密和解密使用同一密钥 | 文件加密 |
| 非对称加密 | 加密和解密使用不同密钥 | 数字签名、密钥交换 |
| 哈希 | 单向转换,不可逆 | 密码存储、完整性校验 |
Linux 中常用的加密工具:
- LUKS:磁盘加密;
- GPG:文件加密和签名;
- OpenSSL:通用加密工具。
6.2 防火墙
防火墙控制网络流量,阻止未授权访问。
Linux 中常用的防火墙:
- iptables:传统防火墙工具;
- nftables:新一代防火墙;
- firewalld:动态防火墙管理。
6.3 沙箱
沙箱(Sandbox)把程序限制在隔离环境中运行,防止它影响系统其他部分。
例如:
- 浏览器的沙箱:每个标签页在独立沙箱中运行;
- Linux 的 seccomp:限制进程可用的系统调用;
- 容器:Docker 使用沙箱隔离应用。
6.4 安全更新
及时安装安全更新,修补已知漏洞。
bash
# Ubuntu/Debian
sudo apt update && sudo apt upgrade
# CentOS/RHEL
sudo yum update
#mermaid-svg-QyqSKPi4z7oKg0mR{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-QyqSKPi4z7oKg0mR .error-icon{fill:#552222;}#mermaid-svg-QyqSKPi4z7oKg0mR .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-QyqSKPi4z7oKg0mR .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-QyqSKPi4z7oKg0mR .marker{fill:#333333;stroke:#333333;}#mermaid-svg-QyqSKPi4z7oKg0mR .marker.cross{stroke:#333333;}#mermaid-svg-QyqSKPi4z7oKg0mR svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-QyqSKPi4z7oKg0mR p{margin:0;}#mermaid-svg-QyqSKPi4z7oKg0mR .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster-label text{fill:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster-label span{color:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster-label span p{background-color:transparent;}#mermaid-svg-QyqSKPi4z7oKg0mR .label text,#mermaid-svg-QyqSKPi4z7oKg0mR span{fill:#333;color:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR .node rect,#mermaid-svg-QyqSKPi4z7oKg0mR .node circle,#mermaid-svg-QyqSKPi4z7oKg0mR .node ellipse,#mermaid-svg-QyqSKPi4z7oKg0mR .node polygon,#mermaid-svg-QyqSKPi4z7oKg0mR .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-QyqSKPi4z7oKg0mR .rough-node .label text,#mermaid-svg-QyqSKPi4z7oKg0mR .node .label text,#mermaid-svg-QyqSKPi4z7oKg0mR .image-shape .label,#mermaid-svg-QyqSKPi4z7oKg0mR .icon-shape .label{text-anchor:middle;}#mermaid-svg-QyqSKPi4z7oKg0mR .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-QyqSKPi4z7oKg0mR .rough-node .label,#mermaid-svg-QyqSKPi4z7oKg0mR .node .label,#mermaid-svg-QyqSKPi4z7oKg0mR .image-shape .label,#mermaid-svg-QyqSKPi4z7oKg0mR .icon-shape .label{text-align:center;}#mermaid-svg-QyqSKPi4z7oKg0mR .node.clickable{cursor:pointer;}#mermaid-svg-QyqSKPi4z7oKg0mR .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-QyqSKPi4z7oKg0mR .arrowheadPath{fill:#333333;}#mermaid-svg-QyqSKPi4z7oKg0mR .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-QyqSKPi4z7oKg0mR .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-QyqSKPi4z7oKg0mR .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QyqSKPi4z7oKg0mR .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-QyqSKPi4z7oKg0mR .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QyqSKPi4z7oKg0mR .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster text{fill:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR .cluster span{color:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-QyqSKPi4z7oKg0mR .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-QyqSKPi4z7oKg0mR rect.text{fill:none;stroke-width:0;}#mermaid-svg-QyqSKPi4z7oKg0mR .icon-shape,#mermaid-svg-QyqSKPi4z7oKg0mR .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-QyqSKPi4z7oKg0mR .icon-shape p,#mermaid-svg-QyqSKPi4z7oKg0mR .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-QyqSKPi4z7oKg0mR .icon-shape .label rect,#mermaid-svg-QyqSKPi4z7oKg0mR .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-QyqSKPi4z7oKg0mR .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-QyqSKPi4z7oKg0mR .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-QyqSKPi4z7oKg0mR :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 操作系统安全机制
身份认证
访问控制
审计
加密
防火墙
沙箱
安全更新
图 8:操作系统安全机制的完整框架。
七、国产操作系统的安全机制
国产操作系统在安全方面有特殊要求,通常包含:
| 机制 | 说明 |
|---|---|
| 强制访问控制 | 基于 SELinux 或自研 MAC |
| 可信计算 | 基于 TPM/TCM 芯片的可信启动 |
| 安全审计 | 符合国家标准的审计日志 |
| 加密文件系统 | 支持国密算法 |
| 三权分立 | 管理员、安全员、审计员权限分离 |
例如,银河麒麟、统信 UOS 都支持等保 2.0(网络安全等级保护)要求,提供强制访问控制、安全审计、数据加密等功能。
八、常见误区澄清
| 误区 | 真相 |
|---|---|
| "设置了密码就安全了" | 密码只是第一道防线,还需要访问控制、审计等 |
| "Linux 比 Windows 安全" | 两者都有安全机制,安全性取决于配置和维护 |
| "开源软件一定安全" | 开源不等于安全,需要持续审查和更新 |
| "杀毒软件能解决所有安全问题" | 杀毒软件只是安全体系的一部分 |
| "管理员权限越高越好" | 应该遵循最小权限原则 |
| "审计日志没有用" | 审计日志是安全事件追踪和取证的关键 |
| "加密会影响性能,所以不用" | 现代硬件支持加密加速,性能影响很小 |