内容简介
第1章 Linux安全框架
1.1 Linux安全概述
1.1.1 安全评价标准
1.1.2 操作系统安全特性
1.1.3 网络安全的OSI安全模型
1.1.4 数据库安全
1.2 Linux安全框架
1.3 Linux常用安全技术
第2章 日志系统与审计系统
2.1 Linux日志系统
2.1.1 Linux日志系统概述
2.1.2 syslog系统构架
2.1.3 printk及控制台的日志级别
2.1.4 printk打印消息机制
2.1.5 sys_syslog系统调用
2.2 审计系统
2.2.1 审计系统构架
2.2.2 用户空间审计系统应用程序
2.2.3 内核审计缓冲区管理机制
2.2.4 审计事件分类
2.2.5 内核审计系统的接口函数
2.2.6 内核审计系统初始化
2.2.7 与用户空间审计系统的netlink通信机制
2.2.8 利用规则链表进行审计事件过滤
2.3 进程的审计
2.3.1 进程审计上下文
2.3.2 系统调用记录审计信息的过程
2.3.3 进程辅助审计数据
2.4 文件系统变化监视机制
2.4.1 文件系统改变发起事件的机制
2.4.2 用于文件系统监视的数据结构
2.4.3 inotify机制的事件处理
2.4.4 文件系统变化的审计
2.4.5 用户空间inotify机制
第3章 SELinux访问控制机制
3.1 SELinux概述
3.1.1 Linux与SELinux在安全管理上的区别
3.1.2 Flask安全框架概述
3.1.3 安全模块(LSM)框架
3.1.4 内核SELinux的组织结构
3.2 SELinux策略配置语言
3.2.1 基本概念
3.2.2 TE规则的描述
3.2.3 RBAC规则的描述
3.2.4 限制规则
3.2.5 标识安全上下文
3.2.6 boolean及条件描述语句
3.3 SELinux策略配置
3.3.1 策略文件的配置
3.3.2 系统启动时的策略
3.3.3 在/proc和/selinux文件系统中的策略
3.3.4 SELinux设置分析工具
3.3.5 策略的编译与装载
3.4 参考策略
3.4.1 安全策略的概念
3.4.2 target二进制策略目录与文件说明
3.4.3 参考策略源代码分析
3.4.4 如何创建一个策略模块
3.5 用户空间客体管理器
3.5.1 客体管理器机制概述
3.5.2 使用客体管理器的样例
3.5.3 客体管理器接口说明
3.5.4 libselinux库初始化
3.5.5 函数avc_init分析
3.5.6 netlink机制获取内核SELinux实时消息
3.5.7 函数avc_has_perm分析
3.6 内核策略库及库管理
3.6.1 策略库结构policydb
3.6.2 SID表sidtab
3.6.3 安全级别
3.6.4 符号表symtab
3.6.5 向量访问规则表avtab
3.6.6 操作类别及限制规则的结构
3.6.7 角色结构role_datum
3.6.8 用户结构user_datum
3.6.9 角色转移结构role_tran
3.6.10 条件规则结构
3.7 文件系统selinuxfs
3.7.1 创建selinuxfs文件系统
3.7.2 load文件操作与内核策略库装载
3.8 SELinux安全决策过程
3.8.1 SELinux内核模块初始化
3.8.2 任务的安全管理
3.8.3 AVC分析
3.8.4 计算访问向量决策
3.9 安全审计的管理
第4章 文件权限管理
4.1 UNIX文件权限管理
4.1.1 文件的权限位分配
4.1.2 改变权限的命令
4.1.3 suid/guid
4.1.4 umask
4.2 Linux能力机制
4.2.1 能力的定义
4.2.2 能力机制操作函数集
4.2.3 应用程序运行设置信任值
4.3 ACL权限管理
4.3.1 ACL权限管理命令
4.3.2 命令getfacl和setfacl机制分析
4.3.3 文件系统检查ACL权限
第5章 PAM用户认证机制
5.1 PAM机制
5.1.1 PAM框架
5.1.2 PAM配置文件
5.1.3 服务模块说明
5.2 编写普通PAM机制应用程序
5.2.1 PAM API与SPI
5.2.2 PAM上下文结构
5.2.3 服务应用程序样例
5.2.4 PAM机制的实现分析
第6章 ClamAV杀毒应用程序
6.1 ClamAV概述
6.2 ClamAV编译安装及使用
6.2.1 clamd后台与clamdscan客户端
6.2.2 clamav-milter邮件扫描器
6.2.3 建立病毒库自动更新
6.2.4 libclamav库API
6.3 clamd服务器
6.3.1 应用程序命令参数分析
6.3.2 clamd服务器入口函数clamd
6.3.3 设置系统限制及确定资源使用量
6.3.4 配置文件解析
6.3.5 log文件操作
6.3.6 使用syslog机制输出调试信息
6.3.7 用户组及文件权限设置
6.3.8 进程后台化
6.3.9 利用socket在进程间通信
6.3.10 子进程执行系统命令及环境变量设置
6.3.11 线程
6.3.12 线程池
6.3.13 信号处理
6.3.14 OnAccess扫描病毒线程clamukoth
6.3.15 服务器进程自动重新启动保护
6.4 libclamav库API
6.4.1 病毒库的装载
6.4.2 病毒扫描
6.5 客户端应用程序
6.5.1 clamdscan客户端
6.5.2 qtclamavclient客户端应用程序
6.6 病毒库升级程序freshclam
6.6.1 病毒库定时更新
6.6.2 域名信息查询
6.6.3 HTTP协议下载病毒库文件
第7章 On_access文件访问拦截
7.1 访问扫描器概述
7.2 Dazuko文件访问控制及库接口分析
7.2.1 dazukoio库接口应用
7.2.2 与内核模块通信方法
7.2.3 Dazuko库与内核通信的数据格式
7.2.4 Dazuko库函数dazukoGetAccess分析
7.2.5 应用程序操作字符设备
7.3 Dazuko字符设备内核模块
7.3.1 注册字符设备及扫描拦截模块
7.3.2 后台应用程序的请求分发
7.3.3 Dazuko内核模块注册扫描后台
7.4 Dazuko拦截文件机制
7.4.1 Dazuko内核线程同步机制
7.4.2 文件访问进程与扫描后台进程的通信
7.4.3 扫描后台获得扫描文件和返回许可的内核过程
7.4.4 Dazuko拦截文件源代码分析
7.5 文件访问拦截方法
7.5.1 Redirfs文件系统概述
7.5.2 RedirFS应用样例
7.5.3 root对象和filter对象管理
7.5.4 RedirFS框架与filter接口使用的数据结构
7.5.5 root对象与filter对象绑定
7.5.6 RedirFS模块的初始化
7.5.7 转发操作函数集控制文件访问
7.5.8 RedirFS与filter接口的函数分析
7.5.9 Dazuko内核模块注册RedirFS
第8章 防火墙
8.1 防火墙概述
8.1.1 网络攻击
8.1.2 防火墙配置
8.1.3 防火墙的规则
8.2 iptables工具介绍
8.2.1 iptables语法及组成
8.2.2 iptables工具簇
8.3 NetFilter框架
8.3.1 Netfilter框架的hook及规则表
8.3.2 规则表的相关结构
8.3.3 hook控制点接入方法
8.3.4 包排队及包再注入
8.3.5 hook点操作函数集及使用方法
8.3.6 setsockopt和getsockopt扩展系统调用
8.3.7 匹配、目标和nf_sockopt_ops的注册使用
8.4 filter模块
8.4.1 filter规则表
8.4.2 注册规则表filter
8.4.3 hook函数应用规则表规则
8.4.4 扩展匹配state
8.4.5 扩展目标ulog
8.5 连接跟踪
8.5.1 连接跟踪机制
8.5.2 连接跟踪的数据结构
8.5.3 连接跟踪源代码分析
8.6 iptables工具源代码分析
8.6.1 iptables的数据结构
8.6.2 iptables命令选项解析
8.6.3 iptables工具与Netfilter框架的交互
8.6.4 ULOG扩展目标库
第9章 PKI公钥设施
9.1 PKI概述
9.1.1 PKI基本组成
9.1.2 PKI标准简介
9.1.3 PKCS的加密算法
9.2 证书
9.2.1 证书的应用
9.2.2 PEM编码
9.2.3 ASN.1语法和DER编码
9.2.4 X.509 v3证书内容
9.3 CA系统
9.3.1 CA认证与CA系统证书链
9.3.2 OCSP在线证书状态协议
9.4 因特网安全协议
9.4.1 SSL协议
9.4.2 TLS协议
9.4.3 IPSec协议
第10章 OpenSSL
10.1 OpenSSL概述
10.2 OpenSSL应用程序工具与应用
10.2.1 OpenSSL应用程序工具说明
10.2.2 OpenSSL工具使用方法
10.3 程序用openSSL库建立安全连接的方法
10.3.1 使用SSL层接口函数安全通信
10.3.2 使用BIO接口函数安全通信
10.4 ASN.1编码与解码接口
10.4.1 ASN.1对象及方法结构
10.4.2 编码转换函数i2d和d2i
10.4.3 PKI对象ASN.1编码/解码转换函数
10.5 PKCS#14伪随机数产生器
10.6 ENGINE机制
10.6.1 结构ENGINE及其操作函数
10.6.2 ENGINE链表及操作函数
10.6.3 ENGINE_TABLE表及应用
10.6.4 ENGINE机制的使用方法
10.7 EVP密码算法接口
10.7.1 EVP_Encrypt系列对称加密算法
10.7.2 EVP_Seal系列信封密封函数
10.7.3 EVP_Open系列信封开启函数
10.7.4 EVP_MD系列信息摘要算法
10.7.5 EVP_Sign系列签名函数
10.7.6 EVP_Verify系列签名验证函数
10.7.7 EVP_PKEY系列公钥算法接口
10.7.8 EVP_Encode系列Base64编/解码算法
10.7.9 PKCS#5基于口令加密的EVP接口函数
10.8 非对称密码算法
10.8.1 PKCS标准非对称密码算法概述
10.8.2 大数运算
10.8.3 PKCS#8私钥信息语法
10.8.4 PKCS#1 RSA密码体系
10.9 PKCS#6 X509扩展证书
10.9.1 X509扩展证书的数据结构
10.9.2 X509证书操作函数前缀说明
10.9.3 PKCS#10证书请求结构
10.9.4 PKCS#10证书请求操作函数
10.10 PKCS#7和PKCS#12信息描述接口
10.10.1 PKCS#7和PKCS#12信息结构
10.10.2 PKCS#12接口函数
10.10.3 PKCS#7接口函数
10.10.4 PKCS#7与S/MIME格式转换
10.11 PKI对象PEM编码
10.12 SSL
10.12.1 SSL相关数据结构
10.12.2 SSL API函数说明
10.13 BIO抽象接口的原理
10.13.1 BIO相关数据结构
10.13.2 BIO接口类型与封装方法
10.13.3 BIO源文件功能说明
10.13.4 BIO通用操作及实现
10.14 BIO类型说明
10.14.1 file类型BIO
10.14.2 fd类型BIO
10.14.3 socket类型BIO
10.14.4 mem类型BIO
10.14.5 BIO对类型BIO
10.14.6 connect类型BIO
10.14.7 accept类型BIO
10.14.8 NULL过滤型BIO
10.14.9 buffer类型BIO
10.14.10 Base64类型BIO
10.14.11 cipher类型BIO
10.14.12 md类型BIO
10.14.13 SSL类型BIO
第11章 可信计算与内核加密接口
11.1 TCG概述
11.1.1 TCG规范文档结构
11.1.2 TCG规范簇介绍
11.1.3 TCG可信平台功能概述
11.2 可信平台组成与结构
11.2.1 可信根
11.2.2 可信组成块
11.2.3 信任边界和传递信任
11.2.4 TCG密钥类型
11.2.5 TCG证书类型
11.2.6 TPM的组件构成
11.2.7 存储可信根框架
11.2.8 完整性测量
11.2.9 完整性报告
11.2.10 TPM作为通信的安全端点
11.3 TCG执行模型
11.3.1 TPM操作状态
11.3.2 平台操作
11.4 与TPM接口和软件服务
11.4.1 TCG软件接口和服务
11.4.2 应用程序交互样例
11.4.3 TPM命令确认
11.5 TCG编程接口
11.5.1 命名规范
11.5.2 命令次序和串行化
11.5.3 TCG命令和接口说明
11.6 TCG可信网络连接框架
11.6.1 TNC框架端点完整性及其作用
11.6.2 TNC框架组成结构
11.6.3 TNC框架接口间的基本消息流
11.6.4 含有TPM的TNC框架特征
11.6.5 含有TPM的TNC框架结构
11.6.6 含有TPM的TNC框架平台可信服务
11.6.7 TNC和TCG完整性管理模型
11.7 内核加密接口
11.7.1 算法结构
11.7.2 算法操作函数集结构
11.7.3 算法库管理
11.7.4 硬件加密算法模块样例
11.8 TPM驱动程序
11.8.1 TPM芯片设备结构
11.8.2 TPM设备链表管理
11.8.3 从TPM芯片读写数据
11.8.4 tpm_atmel安全芯片驱动程序
第12章 内核密钥环
12.1 密钥和密钥环结构
12.1.1 密钥结构key
12.1.2 密钥操作函数集结构key_type
12.2 密钥数据操作
12.2.1 密钥数据操作概述
12.2.2 密钥环的数据操作
12.2.3 用户类型密钥的数据操作
12.3 密钥和密钥环管理
12.3.1 密钥内核模块初始化
12.3.2 密钥操作函数集链表管理
12.3.3 密钥树的管理
12.3.4 密钥用户树的管理
12.3.5 通用密钥的管理
12.3.6 进程的密钥环管理
12.3.7 procfs文件系统显示key信息
12.4 请求key服务
12.4.1 请求key服务的过程
12.4.2 系统调用sys_add_key分析
12.4.3 系统调用sys_request_key分析
12.4.4 应用程序request-key
12.4.5 系统调用sys_keyctl
第13章 加密文件系统
13.1 eCryptfs文件格式及应用
13.1.1 eCryptfs文件系统概述
13.1.2 eCryptfs文件系统测试
13.1.3 eCryptfs的术语
13.1.4 eCryptfs文件格式
13.2 eCryptfs文件系统框架
13.2.1 eCryptfs文件系统组织结构
13.2.2 密钥管理流程
13.2.3 创建新文件流程
13.3 eCryptfs文件系统数据结构
13.3.1 eCryptfs文件系统的私有数据结构
13.3.2 文件系统加密统计信息结构
13.3.3 加密统计信息结构
13.4 内核eCrypts文件系统加密操作
13.4.1 eCrypts文件系统对象的函数操作集
13.4.2 挂接文件系统
13.4.3 创建新文件
13.4.4 打开文件
13.4.5 文件读页操作
13.4.6 文件写页操作
13.5 eCryptfs文件系统后台进程
13.5.1 后台进程机制
13.5.2 消息包处理
13.5.3 PKI链表及其操作
13.5.4 使用openSSL的PKI库
第14章 数字版权管理
14.1 OMA DRM功能框架
14.1.1 OMA DRM功能框架概述
14.1.2 OMA DRM基本下载模型
14.1.3 ROAP协议
14.1.4 证书状态检查与设备时间同步
14.1.5 OMA DRM域
14.1.6 DCF文件格式
14.2 OpenIPMP概述
14.2.1 OpenIPMP软件包介绍
14.2.2 DRM插件的编译与安装
14.2.3 DRM服务器的安装
14.2.4 DRM实现框架
14.3 OpenIPMP采用的C++典型语法
14.3.1 C++编程常用方法
14.3.2 DRM插件的典型C++语法
14.3.3 多线程类工厂ThreadSyncFactory
14.4 用类工厂封装PKI
14.4.1 XML类工厂XMLFactory
14.4.2 公钥加密工厂PublicCryptoFactory
14.4.3 Base64类工厂Base64Factory
14.4.4 密码算法类工厂CipherFactory
14.5 ROAP消息处理
14.5.1 权利对象RO的类描述
14.5.2 ROAP会话消息的类封装
14.5.3 证书消息的类封装
14.5.4 ROAP消息分析器
14.6 解密DCF文件
14.6.1 解密DCF文件的函数调用流程
14.6.2 DCF文件DRM信息类OMADRMInfo
14.6.3 解密管理类工厂创建解密管理器
14.7 解密管理器
14.7.1 DRM代理类OMADRMDecAgent
14.7.2 解密DRM代理获取密钥的操作流程
14.7.3 RO管理与消费
14.7.4 解密的通信处理器类工厂
14.8 加密媒体
14.8.1 加密过程
14.8.2 加密器产生
14.8.3 RO产生
第15章 ELF文件执行过程
15.1 动态链接与静态链接
15.1.1 动态链接库使用方法
15.1.2 共享库使用机制
15.1.3 预链接
15.2 对象文件格式
15.2.1 a.out与COFF文件格式
15.2.2 ELF对象文件组织结构
15.2.3 与符号定位相关的小节
15.2.4 ELF对象文件与装载相关的结构
15.2.5 动态链接的机制
15.3 位置无关代码与共享库
15.3.1 位置无关代码与一般代码的区别
15.3.2 共享库对象文件与可执行对象文件的区别
15.3.3 内嵌汇编位置无关代码
15.4 可执行文件加载代码分析
15.4.1 执行文件的处理函数集
15.4.2 ELF可执行文件运行过程
15.4.3 函数load_elf_binary分析
第16章 应用程序编译方法
16.1 编写Makefile
16.1.1 Makefile语法概述
16.1.2 iptables软件Makefile实例
16.2 automake自动产生Makefile
16.2.1 configure脚本产生过程概述
16.2.2 Autoconfig语言
16.2.3 configure.in实例
16.2.4 automake工具
16.3 GCC工具及扩展
16.3.1 GNU常用工具
16.3.2 预处理
16.3.3 C语言扩展
16.3.4 C++和C语言混合使用
16.3.5 字符串国际化
第17章 编程模式
17.1 C语言面向对象的实现
17.1.1 面向对象的编程思想
17.1.2 软件架构
17.1.3 类的实现
17.1.4 其他对象化方法
17.2 程序设计模式
17.2.1 外观模式
17.2.2 适配器模式
17.2.3 桥接模式
17.2.4 抽象工厂
17.2.5 策略模式
17.2.6 装饰模式
17.2.7 单件模式和双检查锁模式
17.2.8 观察者模式
17.2.9 模板方法模式
17.2.10 工厂方法模式
17.3 编程基本语法规范
17.3.1 异常处理
17.3.2 子程序
17.3.3 宏定义
17.3.4 内联子程序
17.3.5 基本数据类型
17.3.6 结构体
17.3.7 指针和引用
17.3.8 全局数据
17.3.9 控制语句
17.3.10 头文件
17.4 安全编程
17.5 线程并行模型
17.6 应用程序编写规范
17.7 代码书写规范
参考文献