内容简介
第1章 导言
1.1 什么是安全
1.2 计算机系统安全的历史
1.3 计算机系统安全的现状
1.4 Linux内核安全概貌
第一部分 自主访问控制
第2章 主体标记与进程凭证
2.1 进程凭证
2.2 详述
2.2.1 uid和gid
2.2.2 系统调用
2.3 proc文件接口
2.4 参考资料
习题
第3章 客体标记与文件属性
3.1 文件的标记
3.2 文件属性
3.3 系统调用
3.4 其他客体
3.5 其他客体的系统调用
习题
第4章 操作与操作许可
4.1 操作
4.2 操作许可与操作分类
4.3 允许位
4.4 设置位
4.4.1 文件
4.4.2 目录
4.5 其他操作的许可
4.6 系统调用
习题
第5章 访问控制列表
5.1 简介
5.2 扩展属性
5.3 结构
5.4 操作许可
5.5 两种ACL
5.6 与允许位的关系
5.7 系统调用
5.8 参考资料
习题
第6章 能力(capabilities)
6.1 什么是能力
6.2 能力列举
6.2.1 文件
6.2.2 进程
6.2.3 网络
6.2.4 ipc
6.2.5 系统
6.2.6 设备
6.2.7 审计
6.2.8 强制访问控制(MAC)
6.3 UNIX的特权机制
6.4 Linux的能力集合和能力机制
6.4.1 能力集合
6.4.2 能力机制
6.5 向后兼容
6.6 打破向后兼容
6.7 总结
6.8 参考资料
习题
第二部分 强制访问控制
第7章 SELinux
7.1 简介
7.1.1 历史
7.1.2 工作原理
7.1.3 SELinux眼中的世界
7.2 机制
7.2.1 安全上下文
7.2.2 客体类别和操作
7.2.3 安全上下文的生成和变化
7.3 安全策略
7.3.1 基本定义
7.3.2 安全上下文定义
7.3.3 安全上下文转换
7.3.4 访问控制
7.3.5 访问控制的限制和条件
7.4 伪文件系统的含义
7.5 SELinux相关的伪文件系统
7.5.1 selinuxfs
7.5.2 proc
7.6 总结
7.7 参考资料
习题
第8章 SMACK
8.1 历史
8.2 概述
8.3 工作机制
8.3.1 操作许可
8.3.2 类型转换
8.4 扩展属性
8.5 伪文件系统
8.5.1 策略相关文件
8.5.2 网络标签相关文件
8.5.3 其他文件
8.6 网络标签
8.7 总结
8.8 参考资料
习题
第9章 Tomoyo
9.1 简介
9.1.1 基于路径的安全
9.1.2 粒度管理
9.1.3 用户态工具
9.1.4 三个分支
9.2 机制
9.2.1 操作许可
9.2.2 类型和域
9.3 策略
9.3.1 域策略
9.3.2 异常
9.3.3 轮廓
9.4 伪文件系统
9.5 总结
9.6 参考资料
习题
第10章 AppArmor
10.1 简介
10.2 机制
10.2.1 操作许可
10.2.2 域间转换
10.3 策略语言
10.4 模式
10.5 伪文件系统
10.5.1 proc文件系统
10.5.2 sys文件系统
10.5.3 securityfs文件系统
10.6 总结
10.7 参考资料
习题
第11章 Yama
11.1 简介
11.2 机制
11.3 伪文件系统
11.4 嵌套使用
11.5 总结
11.6 参考资料
习题
第三部分 完整性保护
第12章 IMA/EVM
12.1 简介
12.1.1 可信计算
12.1.2 完整性
12.1.3 哈希
12.1.4 IMA/EVM
12.2 架构
12.2.1 钩子
12.2.2 策略
12.2.3 扩展属性
12.2.4 密钥
12.2.5 用户态工具
12.3 伪文件系统
12.4 命令行参数
12.5 总结
12.6 参考资料
习题
第13章 dm-verity
13.1 Device Mapper
13.2 drn-verity简介
13.3 代码分析
13.3.1 概况
13.3.2 映射函数(veri_map)
13.3.3 构造函数(veri_ctr)
13.4 总结
13.5 参考资料
习题
第四部分 审计和日志
第14章 审计(audit)
14.1 简介
14.1.1 审计和日志
14.1.2 概貌
14.2 架构
14.2.1 四个消息来源
14.2.2 规则列表
14.2.3 对文件的审计
14.3 接口
14.4 规则
14.5 总结
14.6 参考资料
第15章 syslog
15.1 简介
15.2 日志缓冲
15.3 读取日志
15.4 netconsole
15.5 参考资料
习题
第五部分 加密
第16章 密钥管理
16.1 简介
16.2 架构
16.2.1 数据结构
16.2.2 生命周期
16.2.3 类型
16.2.4 系统调用
16.2.5 访问类型
16.3 伪文件系统
16.4 总结
16.5 参考资料
第17章 eCryptfs
17.1 简介
17.2 文件格式
17.3 挂载参数
17.4 设备文件
17.5 用户态工具
17.6 总结
17.7 参考资料
第18章 dm-crypt
18.1 简介
18.2 架构
18.2.1 两个队列(queue)
18.2.2 五个参数
18.3 总结
18.4 参考资料
第19章 LUKS
19.1 简介
19.2 布局
19.3 操作
19.4 总结
19.5 参考资料
第六部分 其他
第20章 namespace
20.1 引言
20.1.1 容器与监狱
20.1.2 chroot()与pivot_root()
20.2 机制
20.2.1 挂载命名空间
20.2.2 进程间通信命名空间
20.2.3 UNIX分时命名空间
20.2.4 进程号命名空间
20.2.5 网络命名空间
20.2.6 用户命名空间
20.2.7 进程数据结构
20.3 伪文件系统
20.4 系统调用
20.4.1 clone
20.4.2 unshare
20.4.3 setns
20.5 总结
20.6 参考资料
习题
第21章 cgroup
21.1 简介
21.1.1 一种安全攻击
21.1.2 对策
21.1.3 历史
21.1.4 用法举例
21.2 架构
21.2.1 设计原则
21.2.2 代码分析
21.3 伪文件系统
21.4 总结
21.5 参考资料
第22章 seccomp
22.1 简介
22.2 架构
22.2.1 进程数据结构
22.2.2 模式
22.2.3 内核中的虚拟机
22.2.4 工作原理
22.3 内核接口
22.3.1 系统调用
22.3.2 伪文件
22.4 总结
22.5 参考资料
第23章 ASLR
23.1 简介
23.2 内存布局
23.2.1 伪文件/proc/[pid]/maps
23.2.2 ELF文件格式
23.2.3 动态链接的可执行文件
23.2.4 静态链接的可执行文件
23.2.5 位置无关的可执行文件
23.3 工作原理
23.4 内核接口
23.5 总结
23.6 参考资料
附录