文档介绍:第二部分实践
第六章 Unix的安全
现在,我们已经考察了各种独立的安全机制。在真正的实现中,它们是互相依赖的。例如,访问控制和授权必须协同工作,缺了任何一方,另一方都不能有效地工作。所以,我们现在转入对操作系统提供的安全机制的考察。Unix是我们的第一个例子,它让我们有机会在一个相当具体的层次上考察安全机制。
目标:
理解一个典型的操作系统提供的安全特性;
介绍Unix安全基础;
明白一般的安全原则在一个实际系统中是如何实现的;
懂得在持续变化的环境中进行安全管理的任务。
概述
操作系统通过组合诸如识别、验证、访问控制和审计等模块实现统一的安全控制。一旦我们决定提供灵活且特性多样的安全策略,安全机制就会越来越复杂。在那些环境下,对内核来说,可信计算基础础(TCB)会显得太大。现在我们在层次模型()中,来考察操作系统这个层次所提供的安全控制。
当评价一个操作系统的安全时,下列问题可以指导分析过程:
实现了哪些安全特征?
这些安全特征是怎么管理的?
这些安全特征的有效性如何保证?
操作系统的保护
应用
服务
操作系统
操作系统内核
硬件
在大部分操作系统中,有一种一般模式指导安全控制的组织。用户(访问主体)的信息存储在用户帐号中。任何授予用户的权限(特权,privilege)都可以存储在这个帐号中。识别(身份识别,identification)和验证(身份验证,authentication)检查(鉴定)用户的身份,使系统把用户的权限和用户所启动的进程联系起来。资源(对象(客体,object))的许可由系统管理员或者资源的属主设置。在决定是否允许或拒绝访问请求时,操作系统可以参考用户标识(身份,identity)、用户权限和对象的许可(权限,permission)情况。
安全机制不仅负责防止非授权的行为,还负责检测这些行为。我们必须面对攻击者可能会绕过保护机制这样的事实。必须采取措施记录用户的行为以便考察安全漏洞(破坏,breaches)或者追踪可能的攻击。所以,操作系统必须保存并保护好安全相关事件的审计日志(审计索引(踪迹,trail))。
最后,如果运用不得法,再好的操作系统的安全特性也是没有价值的。一个系统必须开始于一个安全的状态,所以,操作系统的安装和配置是很重要的问题。不当的缺省配置可能成为主要的安全弱点。操作系统是非常复杂且不断演变的软件系统。所以,总是有可能在新的发行版本中检测到或者引入新的漏洞。puter Emergency Response Teams,计算机紧急事件响应小组),获得安全忠告,以便和现时的安全发展同步。
我们已经勾画出一个构建系统安全的框架:
登录和用户帐户
访问控制
审计
配置和管理
本章考察Unix系统的安全特性。由于历史原因,Unix显得不够可靠和安全(参见[102]),不过它确实提供了一套安全措施,如果使用得当,还是相当有效的。Unix的版本很多,这些版本之间在技术和安全控制的执行上存在差别。不过,现在正在尝试对Unix安全进行标准化。POSIX 1003系列的标准定义了Unix系统的通用接口,其中的POSIX 就是涉及安全机制的。本章并不是对Unix安全的完整的介绍,也不是指导如何建立安全的Unix系统。我们的介绍限于对Unix安全基础的考察,同时突出可以阐明一般原则的安全特性。我们选择的角度较为接近人机标尺上的机器端()。
特殊的普通的
复合的简单的
集中于用户集中于数据
用户端机器端
人机标尺上的Unix安全
Unix安全体系结构
大多数安全操作系统的安全体系结构解释了如何实施安全措施和安全相关数据的保存,而Unix却有一个版本分分合合的历史。公正地反映了客观情况的是,安全特性并不作为一个原始设计目标,而是在有需求的时候才被加入系统。随着Unix的发展,新的安全控制被加入,现存的控制机制得到加强。设计者在决定如何实现新的特性时,考虑得最多的还是尽量避免触动Unix现有的结构。
登录和用户帐号
Unix通过用户名识别用户,通过口令进行验证。许多Unix系统中的口令限制在八个字符内。口令由crypt(3)算法加密,以全零数据块作为初始值,口令作为密钥,用稍做修改的DES算法重复计算25次,得到的密文存放在/etc/passwd文件中。文件中的条目格式如下:
user name: encrypted password: user ID: group ID: ID string: home directory: login shell
字段ID string是用户的全名。user ID和group ID 会在稍后介绍。最后两个字段指明了用户的主