描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111549055
编辑推荐
本书作者是华为公司安全研究人员。本书可能是国内外较早系统、全面地介绍Linux内核安全的书。全书采用源码剖析与用户态工具使用相结合的方式,对Linux内核安全模块进行了讲解,既避免了冗长的代码罗列,也消除了读者的“隔靴搔痒”之感。在此,向计算机安全人员特别是手机安全人员强烈推荐。
内容简介
本书对Linux内核安全子系统做了系统而深入的分析,内容包括Linux内核的自主访问控制、强制访问控制、完整性保护、审计日志、密钥管理与密钥使用等。本书的内容填补了国内外关于Linux内核安全的一个空白。本书值得每一个想要深入了解Linux安全的人参考,值得计算机安全专业的学生和计算机安全领域的从业人员阅读,也可作为计算机安全高级课程的教材。
目 录
前言第1章 导言11.1 什么是安全11.2 计算机系统安全的历史11.3 计算机系统安全的现状21.4 Linux内核安全概貌3部分 自主访问控制第2章 主体标记与进程凭证52.1 进程凭证52.2 详述62.2.1 uid和gid62.2.2 系统调用72.3 proc文件接口92.4 参考资料9习题9第3章 客体标记与文件属性103.1 文件的标记103.2 文件属性103.3 系统调用113.4 其他客体123.5 其他客体的系统调用14习题15第4章 操作与操作许可164.1 操作164.2 操作许可与操作分类164.3 允许位184.4 设置位194.4.1 文件194.4.2 目录194.5 其他操作的许可204.6 系统调用20习题20第5章 访问控制列表215.1 简介215.2 扩展属性215.3 结构215.4 操作许可235.5 两种ACL235.6 与允许位的关系235.7 系统调用235.8 参考资料24习题24第6章 能力(capabilities)256.1 什么是能力256.2 能力列举256.2.1 文件266.2.2 进程276.2.3 网络286.2.4 ipc286.2.5 系统286.2.6 设备286.2.7 审计286.2.8 强制访问控制(MAC)286.3 UNIX的特权机制296.4 Linux的能力集合和能力机制296.4.1 能力集合296.4.2 能力机制306.5 向后兼容326.6 打破向后兼容336.7 总结346.8 参考资料34习题34第二部分 强制访问控制第7章 SELinux367.1 简介367.1.1 历史367.1.2 工作原理367.1.3 SELinux眼中的世界397.2 机制397.2.1 安全上下文397.2.2 客体类别和操作407.2.3 安全上下文的生成和变化597.3 安全策略627.3.1 基本定义637.3.2 安全上下文定义687.3.3 安全上下文转换727.3.4 访问控制757.3.5 访问控制的限制和条件757.4 伪文件系统的含义787.5 SELinux相关的伪文件系统787.5.1 selinuxfs787.5.2 proc807.6 总结807.7 参考资料81习题81第8章 SMACK828.1 历史828.2 概述838.3 工作机制848.3.1 操作许可848.3.2 类型转换848.4 扩展属性868.5 伪文件系统868.5.1 策略相关文件878.5.2 网络标签相关文件898.5.3 其他文件908.6 网络标签918.7 总结918.8 参考资料91习题91第9章 Tomoyo929.1 简介929.1.1 基于路径的安全929.1.2 粒度管理939.1.3 用户态工具939.1.4 三个分支939.2 机制939.2.1 操作许可949.2.2 类型和域949.3 策略959.3.1 域策略959.3.2 异常969.3.3 轮廓999.4 伪文件系统1029.5 总结1039.6 参考资料103习题103第10章 AppArmor10410.1 简介10410.2 机制10410.2.1 操作许可10410.2.2 域间转换10710.3 策略语言10810.4 模式11010.5 伪文件系统11010.5.1 proc文件系统11010.5.2 sys文件系统11110.5.3 securityfs文件系统11210.6 总结11310.7 参考资料113习题113第11章 Yama11411.1 简介11411.2 机制11411.3 伪文件系统11611.4 嵌套使用11611.5 总结11711.6 参考资料117习题117第三部分 完整性保护第12章 IMA/EVM11912.1 简介11912.1.1 可信计算11912.1.2 完整性12012.1.3 哈希12112.1.4 IMA/EVM12112.2 架构12212.2.1 钩子12212.2.2 策略12212.2.3 扩展属性12312.2.4 密钥12312.2.5 用户态工具12412.3 伪文件系统12612.4 命令行参数12712.5 总结12812.6 参考资料128习题128第13章 dm-verity12913.1 Device Mapper12913.2 dm-verity简介13013.3 代码分析13113.3.1 概况13113.3.2 映射函数(verity_map)13213.3.3 构造函数(verity_ctr)13713.4 总结13813.5 参考资料138习题138第四部分 审计和日志第14章 审计(audit)14014.1 简介14014.1.1 审计和日志14014.1.2 概貌14014.2 架构14114.2.1 四个消息来源14114.2.2 规则列表14714.2.3 对文件的审计15014.3 接口15314.4 规则15514.5 总结15714.6 参考资料157第15章 syslog15815.1 简介15815.2 日志缓冲15815.3 读取日志15915.4 netconsole16015.5 参考资料160习题160第五部分 加密第16章 密钥管理16216.1 简介16216.2 架构16216.2.1 数据结构16216.2.2 生命周期16416.2.3 类型16816.2.4 系统调用17116.2.5 访问类型17416.3 伪文件系统17516.4 总结17516.5 参考资料175第17章 eCryptfs17617.1 简介17617.2 文件格式17617.3 挂载参数17917.4 设备文件18017.5 用户态工具18017.6 总结18517.7 参考资料185第18章 dm-crypt18618.1 简介18618.2 架构18618.2.1 两个队列(queue)18618.2.2 五个参数18918.3 总结19318.4 参考资料193第19章 LUKS19419.1 简介19419.2 布局19419.3 操作19519.4 总结19619.5 参考资料196第六部分 其
前 言
在大多数人眼中,内核是神秘的,安全是说不清的,内核安全则是子虚乌有的。如果说内核是一座险峻的高山,内核安全则是隐藏在深山中的蛟龙。 即使对内核开发人员,内核安全也是陌生的。Linux的创始人,Linux社区的“仁慈的独裁者”Linus Torvalds就曾说他不懂安全。这主要有三方面原因,其一,内核安全涉及领域太多了,Linux是庞大的,很少有人能对所有领域都了解;其二,如Linus Torvalds所说,安全是“软”科学,没有一个简单的量化的指标去衡量安全,开发人员自然是重视功能胜于重视安全;其三,文人相轻,SELinux的开发者之一Dan Walsh声称自己不懂AppArmor,Smack的负责人Casey Schaufler是批判SELinux的马前卒,他们不是不能懂,是不想懂。 截止至本书成稿时,国内和国外还没有一本系统全面地介绍Linux内核安全的书。 屈指算来我从事内核安全相关工作已是第八个年头。当年的一个面试邀请电话让我在一个仲春的清晨伴着蒙蒙细雨步入了Linux内核安全领域。几年后,就在我对内核安全有了一点点理解,并沾沾自喜时,我亲耳聆听Linux内核安全领域负责人James Morris的一番演。我突然发现他讲的大部分东西我都听不懂。好吧,不懂可以学。本书的提纲可以说是James Morris提供的。我将他演讲中提到的内核安全相关内容研究了一遍,呈现在这里。 本书的内容有相当一部分出自本人对代码的分析。内核安全模块中有相当一部分是缺少文档的,读代码是了解它们直接,准确的方式。如何呈现本书呢?有两种传统的方式,一种是大量地罗列源代码,让后陈述对代码的分析。代码面前,了无秘密,这不假。但是这种方式往往失之于琐碎,让读者只见树木不见森林。另一种方式是详列如何使用用户态工具,这虽然能让读者快速上手,但对于了解内核安全未免有些隔靴搔痒。本书采用的方式是分析其原理,指出其背后的逻辑。当我试图了解一个内核模块时,我想的问题是,它要干什么?它为什么要这么做?当这两个问题有了答案,我发现内核安全的开发者,和你我一样,也是程序员,也会犯错误。 本书作者学识粗浅,经验不足,书中文字与逻辑上的错误在所难免,还望各位读者海涵。
评论
还没有评论。