这本书介绍了安卓开源项目的安全增强(SE),并引导您完成使用面向安卓的 SE 保护新嵌入式系统的过程。据我们所知,这本书是第一个完整记录这种过程的来源,这样学生、DIY 爱好者和工程师就可以为安卓创建由 SE 保护的定制系统。一般来说,只有原始设备制造商才会这样做,而且很常见的是,目标设备是手机或平板电脑。我们真的希望我们的书能改变这种情况,让更多的读者参与到开发中来,这样他们就能使用和理解这些现代安全工具。
我们非常努力地确保这篇文章不仅仅是一本循序渐进的技术书籍。具体来说,我们选择了一个引导你走向失败的成功模式。您将首先从理论上适当了解安全性是如何获得和实施的。然后我们将介绍一个从未如此安全的系统(甚至在撰写本书之前,我们也没有这样做过)。接下来,我们将引导您完成我们所有的智能猜测,针对新发现的它们所暴露的特性接受意外的失败,并最终实施我们的定制安全策略。它要求你学会解决主要开源项目之间的差异,如 SELinux、面向安卓的 SE 和谷歌安卓,每个项目都有独立的目标和部署时间表。这为您保护其他设备做好了准备,其过程总是不同的,但希望现在会更容易访问。
第 1 章、 Linux 访问控制,讨论了自主访问控制(DAC)的基础知识,一些安卓系统如何利用 DAC 问题,并展示了对更强大解决方案的需求。
第二章、强制访问控制和 SELinux ,考察强制访问控制(MAC)及其在 SELinux 中的表现。本章还探讨了控制 SELinux 对象交互的具体策略。
第三章、安卓不可思议,介绍安卓安全模型,调查活页夹、合子、物业服务。
第四章、在 UDOO 上安装,从源码到 UDOO-embedded 板走一遍安卓的搭建和部署,开启 SELinux 支持。
第 5 章、引导系统,从策略加载的角度跟踪引导过程,并纠正问题以使 SELinux 在 UDOO 上进入可用状态。
第 6 章探索 SELinuxFS ,研究 SELinuxFS 文件系统以及它如何为更高级的习惯用法提供内核到用户空间的接口。
第 7 章、利用审计日志,考察审计子系统,揭示如何解读 SELinux 审计日志,有利于策略编写。
第 8 章、将上下文应用于文件,教你文件系统和文件系统对象如何获得它们的标签和上下文,演示改变它们的技术,包括动态类型转换。
第 9 章、向域添加服务,强调流程标注,特别是由 init 运行和管理的安卓服务。
第 10 章、将应用放置在域中,向您展示了如何通过配置文件和 SELinux 策略正确标记应用的私有数据目录以及应用运行时上下文。
第 11 章、标注属性,演示了如何创建和标注新的和现有的属性,以及这样做时出现的一些异常。
第 12 章、掌握工具链,讲述了控制设备上策略的各种组件是如何实际构建和创建的。本章回顾了 Android.mk 组件,详细介绍了构建和配置管理的核心是如何工作的。
第 13 章、进入强制模式,利用前几章所学的所有技能,响应 CTS 的审核日志,获得强制模式下的 UDOO。
附录开发环境,带你完成设置适合你的 Linux 环境的必要步骤,跟随本书的所有活动。
硬件要求包括:
- 一种基于 UDOO 的嵌入式开发板
- 8 GB 迷你 SD 卡(虽然您可以使用容量更大的卡,但我们不推荐使用)
- 至少 16GB 的内存
- 至少 80 GB 的可用硬盘空间
软件要求包括:
- 一个 Ubuntu 12.04 LTS 桌面系统
- Oracle JDK 6.0 版本 6u45
- 需要一些额外的杂项 Linux 软件,但这些在书中有描述,并且可以免费获得。
这本书面向对 Linux 实现的操作系统概念有些熟悉的开发人员和工程师。他们可能是希望保护其安卓驱动的创作的爱好者,制造手机的原始设备制造商工程师,或者来自安卓正在开发的新兴领域的工程师。C 语言编程的基础背景会有帮助。
在这本书里,你会发现许多区分不同种类信息的文本样式。下面是这些风格的一些例子和它们的含义的解释。
文本中的码字、数据库表名、文件夹名、文件名、文件扩展名、路径名、伪 URL、用户输入和 Twitter 句柄如下所示:“现在让我们尝试执行hello.txt
文件,看看会发生什么。”
代码块设置如下:
case INTERFACE_TRANSACTION:
{
reply.writeString(DESCRIPTOR);
return true;
}
任何命令行输入或输出都编写如下:
$ su testuser
Password:
testuser@ubuntu:/home/bookuser$
新名词和重要词语以粗体显示。您在屏幕上看到的单词,例如菜单或对话框中的单词,出现在如下文本中:“通过选择退出退出配置菜单,直到要求您保存新配置。”
警告或重要提示会出现在这样的框中。
提示和技巧是这样出现的。
我们随时欢迎读者的反馈。让我们知道你对这本书的看法——你喜欢或不喜欢什么。读者反馈对我们来说很重要,因为它有助于我们开发出你真正能从中获益的标题。
要给我们发送一般反馈,只需发送电子邮件<[feedback@packtpub.com](mailto:feedback@packtpub.com)>
,并在您的邮件主题中提及书名。
如果你对某个主题有专业知识,并且对写作或投稿感兴趣,请参见我们位于www.packtpub.com/authors的作者指南。
现在,您已经自豪地拥有了一本书,我们有许多东西可以帮助您从购买中获得最大收益。
您可以从您在http://www.packtpub.com的账户下载您购买的所有 Packt Publishing 书籍的示例代码文件。如果您在其他地方购买了这本书,您可以访问http://www.packtpub.com/support并注册,以便将文件直接通过电子邮件发送给您。
尽管我们尽了最大努力来确保我们内容的准确性,但错误还是会发生。如果你在我们的某本书里发现了错误——可能是文本或代码中的错误——如果你能向我们报告,我们将不胜感激。通过这样做,你可以让其他读者免受挫折,并帮助我们改进这本书的后续版本。如果您发现任何勘误表,请访问http://www.packtpub.com/submit-errata,选择您的书籍,点击勘误表 提交 表格链接,并输入您的勘误表详细信息。一旦您的勘误表得到验证,您的提交将被接受,勘误表将上传到我们的网站或添加到该标题勘误表部分下的任何现有勘误表列表中。
要查看之前提交的勘误表,请前往https://www.packtpub.com/books/content/support并在搜索栏中输入图书名称。所需信息将出现在勘误表部分。
互联网上版权材质的盗版是所有媒体的一个持续问题。在 Packt,我们非常重视版权和许可证的保护。如果您在互联网上遇到任何形式的我们作品的非法拷贝,请立即向我们提供位置地址或网站名称,以便我们寻求补救。
请通过<[copyright@packtpub.com](mailto:copyright@packtpub.com)>
联系我们,获取疑似盗版资料的链接。
我们感谢您在保护我们的作者方面的帮助,以及我们为您带来有价值内容的能力。
如果您对本书的任何方面有问题,可以在<[questions@packtpub.com](mailto:questions@packtpub.com)>
联系我们,我们将尽最大努力解决问题。