前言
背景知识
计算机安全用于保护计算机硬件和软件,使数据不因偶然的或恶意的原因而遭破坏、更改或泄露。计算机安全的内容包括安全理论、安全技术、安全管理、安全评价、安全法律及政策等。
随着计算机系统越来越复杂,计算机的安全技术也越来越复杂。操作人员、编程人员和系统分析人员的失误或缺乏经验都会造成系统的安全隐患。计算机病毒、网络攻击、垃圾邮件、系统漏洞、网络窃密、虚假有害信息和网络违法犯罪等是计算机安全的突出问题。而攻击者只要抓住计算机系统的某一点漏洞,就可能引起安全威胁。因此,计算机系统需要全面的安全防护措施,需要编程人员、操作人员和管理人员全面配合,才可能提供一个安全的计算机环境。
计算机应用的多样性决定了安全技术的多样性,计算机系统的每个层次都使用了安全技术。从保护过程来看,计算机安全包括安全防范措施、加密保护机制、安全被破坏后的恢复机制和入侵检测跟踪机制。从计算机系统组成来看,计算机安全包括芯片级安全(如:安全芯片)、操作系统安全、网络安全、应用程序安全、数据库安全。从安全实现方法来看,计算机安全有加密型保护和非加密型保护两种。加密型保护通过对内容的加密/解密保证信息的安全。非加密保护包括病毒扫描、病毒防火墙、访问控制、权限控制等多种机制。
人的因素是信息安全的最大问题。计算机安全技术只能提供相对的安全,而没有绝对的安全,安全管理成了计算机安全另一个重要方面。安全管理通过安全的规章制度、信息安全文化等来规范人的安全行为,给计算机安全提供了极为重要的安全保障。
本书写作思路
由于计算机安全的多样性和复杂性,一本书不可能涉及计算机安全的各个方面。本书选择经典的开放源代码,着重介绍了Linux操作系统的安全机制及实现方法。它一方面介绍安全机制的实现,另一方面介绍安全系统编程的方法。
在网络安全方面,由于网络安全方面的协议众多,几乎每个网络安全协议都使用了公钥设施(PKI),而openSSL库是实现PKI各个协议的经典程序库,因此,本书在网络安全方面介绍了公钥设施的基本概念和使用openSSL库接口进行编程的方法。
在可信计算平台方面,可信计算的协议众多,许多协议还在完善之中。本书介绍了可信平台模块框架规范和可信网络连接框架规范,分析了可信平台模块的驱动程序的实现机制。
计算机安全还涉及硬件、Linux内核和应用程序的方方面面。因此,计算机安全系统的编程要涉及Linux驱动程序、内核和应用程序的编程,以及使用Linux内核hook的许多技巧、多种Linux内核与应用程序通信方法和Linux系统应用程序的编程方法等。计算机安全的经典源代码也是学习计算机安全系统编程的一个经典样例,故作者结合实际代码归纳了“编程模式”一章,还介绍了Makefile的生成方法和ELF文件的执行过程。
Linux安全编程使用Linux内核机制、Linux系统编程(如:线程机制、进程间通信机制)方法等,关于Linux内核机制可以参考作者的《Linux内核分析及编程》一书或其他相关的书,Linux系统编程方法请参考Linux C语言系统编程方面的书。
关于作者
笔者毕业于清华大学电子工程系,获通信与电子系统专业硕士学位,在国际知名大公司长期从事Linux编程工作,最近三年先后参与了有关SELinux、杀毒软件、病毒防火墙、DRM(数据版本管理)等项目的开发。现已出版的著作有《Linux内核分析及编程》、《Qt及Linux操作系统窗口设计》、《CPU源代码分析与芯片设计及Linux移植》。
本书主要内容
本书共有17章,每章的主要内容如下:
第1章 Linux安全框架 说明了国家计算机系统安全评价标准,分析了操作系统安全框架,并介绍了Linux常用的安全技术。
第2章 Linux日志系统与审计系统 分析了日志系统的记录机制,阐述了审计系统的原理,说明了文件系统变化监视机制。
第3章 SELinux访问控制机制 分析了SELinux的安全机制,介绍了安全策略配置语言和内核策略库的结构,简述了SELinux内核模块的实现,还分析了用户空间的客体管理器。
第4章 文件权限管理 分析了UGO和ACL权限管理的方式和能力机制。
第5章 PAM用户认证机制 分析了PAM机制和实现方法。
第6章 ClamAV杀毒应用程序 分析了ClamAV的客户端、服务器及病毒库更新升级应用程序,着重阐述了Linux下C语言编程中的许多经典用法。
第7章 On_access文件访问拦截 分析了Dazuko文件访问控制器的机制及源代码,还分析了RedirFS重定向文件系统。
第8章 防火墙 说明了防火墙的设置方法,阐述了iptables工具的实现方法,并分析了filter内核模块的实现机制和连接跟踪的机制。
第9章 PKI公钥设施 概述了公钥基础设施的机制和标准,说明了证书和证书认证的相关基本概念。
第10章 OpenSSL 介绍了OpenSSL库的加密算法接口、BIO接口、ENGINE接口等,并说明了用这些接口进行编程的方法。
第11章 可信计算与内核加密接口 阐述了可信平台模块框架规范和可信网络连接框架规范,分析了内核加密接口模块的接口机制以及TPM驱动程序的原理。
第12章 内核密钥环 阐述了内核密钥环的结构以及密钥和密钥环的管理,分析了请求key服务的机制和源代码。
第13章 加密文件系统 阐述了eCryptfs文件系统的机制,分析了eCryptfs文件系统的内核模块和后台进程。
第14章 数字版权管理 介绍了OMA2.0协议,分析了OpenIPMP插件实现OMA2.0协议的方法。
第15章 ELF文件执行过程 阐述了动态链接与静态链接的概念和动态链接中函数定位的原理,然后分析了ELF文件格式,并说明了ELF文件在内核中是如何加载的。
第16章 应用程序编译方法 结合实例介绍了Makefile的编写方法,说明了Autoconfig语言并阐述了configure.in和Makefile.am的编写方法。此外,本章还介绍了GNU gcc的检测工具和语言扩展。
第17章 编程模式 阐述了C语言面向对象方法和程序设计模式,介绍了编程基本语法应用规范、安全编程和代码书写规范,以及线程并行模型和应用程序编写规范。
本书用到的软件版本
本书在每一章的开始处注明了软件下载地址,请下载新版本的软件。本书介绍内容的软件版本列出如下:
Linux 2.6.21和Fedora 6光盘所带软件代码
dazuko-2.3.1-pre3_patch
dazuko-2.3.3
clamav-0.90.2
Linux-PAM-0.99.7.0
openssl-0.9.8e
openipmp2
致谢
作者感谢所在公司与自己一起从事Linux安全开发的同事,正是与他们的共同研讨,才对Linux安全方面有了更深入的了解。
作者还要感谢太太及家人在编写本书过程中给予的理解和不懈的支持。
由于作者水平有限,书中的不足及错误之处在所难免,敬请专家和读者给予批评指正。
谨以此书献给正在从事和将要从事Linux编程的人们。
您对本书有任何意见和建议,欢迎登录作者的工作博客:http://nijili.blogcn.com
倪继利
2007年7月2日于北京
| 回书目 下一节 |
|
· 第六章 你能帮我吗?.. · Linux笔试面试题选摘测.. · 08年5月软考网管上午真.. · 性能测试从零开始 目录 · 08年5月软考网工上午真.. · 上周拒绝服务攻击(DDo.. |
· 08年5月各大网上书店及.. · 2008年5月24日软考试题.. · 软件设计师专家临考模.. · 上周网络管理员专家自.. · 网络工程师自测获奖名.. · 08年4月各大网上书店及.. |
|
||||
| · NAC安全访问控制 · 网络布线测试仪器 · Windows Server 2008专.. · Windows远程桌面应用 · 网络故障排除宝典 · 运营商封堵ADSL共享 中.. · 解析35岁技术人的价值.. · 世纪枭雄比尔盖茨的王.. |
· 主流品牌防火墙配置 · ASP.NET开发教程 · 超级计算机TOP500专题 · Vista SP1对决XP SP3 · SQL Server 2008/2005.. · 程序员如何成长? · C#技术开发指南 · 虚拟化技术还有点“虚” |
|||
|
||||
| · SOA 面向服务架构 · SQL Server 2008/2005.. · Apache技术专题 · 三层交换技术专题 · SQL Server入门到精通 · Windows远程桌面应用 · C#技术开发指南 · Apache技术专题 |
· Windows集群服务应用 · C#技术开发指南 · 国际文档格式标准开战 · 路由器设置与口令恢复 · Linux 集群技术专题 · PHP开发应用手册 · SOA 面向服务架构 · 企业数据恢复指南 |
|||
|
||||
| · SQL Server入门到精通 · SQL Server 2008/2005.. · SOA 面向服务架构 · Apache技术专题 · C#技术开发指南 · 三层交换技术专题 · Apache技术专题 · C#技术开发指南 |
· Windows远程桌面应用 · 企业数据恢复指南 · Windows集群服务应用 · 路由器设置与口令恢复 · Linux 集群技术专题 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. · 反垃圾邮件技术应用 |
|||