操作系统安全
操作系统安全考查访问控制模型的形式化规则、安全操作系统的机制(可信计算、最小特权、审计)以及常见漏洞利用与加固。典型题型是给出主体与客体的密级,让考生判断读、写是否被允许。
访问控制模型
- DAC 自主访问控制:由属主授权,灵活但易被木马利用;对应 Linux 文件权限、Windows ACL。
- MAC 强制访问控制:系统按标签比较主体与客体级别,用户不能自行转让权限;对应 SELinux、BLP 模型。
- RBAC 基于角色:用户-角色-权限三层映射,便于最小权限与职责分离。
- ABAC 基于属性:按主体、客体、环境、操作四类属性做策略判决。
两个经典模型的规则方向
- BLP(保密性):简单安全特性--主体不得读级别高于自己的客体(不下读);星特性--主体不得写级别低于自己的客体(不上写)。
- Biba(完整性):方向相反--不下写(不写高完整性客体)、不上读(不读低完整性客体)。
- Clark-Wilson(商用完整性):良构事务、职责分离、强制审计。
加固与机制
- 最小安装与最小服务、及时打补丁、禁用默认账户、口令策略与多因素认证。
- 特权分离:日常不用 root,用 sudo 提权并留痕;Linux 可用 capabilities 细分特权。
- 强制访问控制:SELinux 的类型强制、AppArmor 的路径级策略,root 亦受约束。
- 可信计算:TPM/TPCM 做启动度量与信任链,度量值存入 PCR,支持远程证明。
- 漏洞利用缓解:栈保护(Canary)、DEP/NX、ASLR 需组合使用才有效。
工作示例
主体 A 密级为秘密(Secret),客体 B 为机密(Top Secret),客体 C 为公开(Public)。按 BLP:A 读 B 被拒绝(不能上读);A 写 C 被拒绝(不能下写),否则会向低级别泄露高密级信息。按 Biba 判断则相反:A 读 C 允许、写 B 允许,因为它关注的是高完整性数据不被污染。同一组对象在两个模型下结论相反,是最常见的失分点。
高频陷阱
- 把 BLP 记成“不上读、不下写”,正确口诀是“不下读、不上写”。
- 认为 SELinux 属于 DAC,它属于 MAC。
- 以为打全补丁即安全,配置错误与弱口令同样可被直接利用。