hexj9 |
2015-06-25 13:24 |
1. Linux安全测评的背景与意义 随着计算机与网络技术的普及应用,信息安全已经成为关系到国家安全的关键因素。在计算机系统安全中,操作系统安全是整个计算机信息系统安全的基石[1]。如果不经过安全测评,操作系统的安全性就得不到保障。随着我国基于Linux的国产操作系统研发的不断发展,研究Linux操作系统安全测评技术己成为迫切的需求,可以有效地保障国产操作系统应用地质量,从而更好地推动国产操作系统产业的发展。 操作系统安全测评涉及到安全操作系统、安全等级评估、评估标准等多方面内容。目前国内在Linux操作系统安全测评领域的研究还处在逐步发展的阶段,在操作系统安全等级评估方面已经取得了一定的成果,制定出了一系列等级评估相关标准。 随着操作系统在计算机系统安全中的重要作用越来越引起人们的重视,如何测评操作系统安全性成为一个重要的课题。信息安全国际通用标准CC提出了安全系统通常应该具备的安全功能,并进行了分类,其中,访问控制是系统安全的第一道防护手段[2]。因此,本文将从访问控制功能这个操作系统中最重要的安全机制出发,对Linux访问控制及其测试进行研究。 2 Linux安全测评的基础和标准 为了对Linux操作系统的安全性进行统一的评价,为Linux操作系统产品厂商提供权威的系统安全性标准,需要有相应的安全测评标准来支持。目前,国际上信息安全评估标准的制定已经取得了长足的发展[3][4][5]。 美国国防部于1983年推出了历史上第一个计算机系统安全评测准则TCSEC(Trusted Computer System Evaluation Criteria),又称桔皮书,从而带动了国际上计算机系统安全评测的研究。为了方便安全信息系统的统一评价,德国、英国、加拿大、西欧等纷纷制定了各自的计算机系统安全评价标准,其中较为著名的有ITSEC(Information Technology Security Evaluation Criteria)、CC(Common Criteria for IT Security Evaluation)。我国在借鉴、吸收TCSEC和CC等基础上制定了相应的国家标准GB/T18336-2001和GB/T 20008-2005等标准。
基于相关安全需求,TCSEC在用户登录、授权管理、访问控制、审计跟踪、隐蔽通道分析、可信通路建立、安全检测、生命周期保障、文档撰写等方面均提出了规范性要求,并根据所采用的安全策略及系统所具备的安全功能设定四类(A~D)及七个安全级别,从低到高依次为D、C1、C2、B1、B2、B3、A1,各级别描述由满足安全策略、审计和保证的主要控制目标及文档要求共四部分组成。 我国的GB17859-1999《计算机信息系统安全保护等级划分准则》把计算机信息系统的安全保护能力划分为五级,从低到高依次为用户自主保护级、系统审计保护级、安全标记保护级、结构化保护级、访问验证保护级,相关要求分别对应TCSEC的C1级、C2级、B1级、B2级和B3级,并稍作调整。 信息技术安全评价通用准则CC基于欧洲ITSEC、美国TCSEC、加拿大CTCPEC及ISO SC27 WG3安全评价标准而形成,是目前最全面的信息技术安全评估标准。其提出了保护轮廓的概念,将评估内容划分为安全功能要求和安全保证要求两个方面,并均按照类、族、组件的层次结构分别展开描述。CC提供和定义了七个逐步增强的评估保证等级EAL1~7,依次为功能测试级、结构测试级、系统测试检查级、系统设计测试复查级、半形式化设计测试级、半形式化验证设计测试级和形式化验证设计测试级。各评估保证等级结构上由评估保证等级名称、目标、适用性说明和一组保证组件以及相应保证组件间的所有依赖关系构成。 3. Linux系统的访问控制机制分析 访问控制是操作系统安全机制的主要内容,主要用来规范和控制系统内部主体对客体的访问操作[6][7][8]。 定义 1 主体(Subject):是指系统中能够发起行为的实体,比如,人、进程和设备等。 定义 2 客体(object):是指系统中被动的主体行为承担者,比如,文件、目录、管道、消息,以及存储页和存储段等。 定义 3 存取访问控制(Access Control):是规范和控制各类主体(用户、本地进程或远程进程等)访问本系统中客体的决策与实施过程。 访问控制的目的是为了限制访问主体对访问客体的访问权限,从而使计算机系统在合法范围内使用。它决定用户能做什么,也决定代表一定用户身份的进程能做什么。其中主体可以是某个用户,也可以是用户启动的进程和服务。因此,访问控制需要完成以下两种任务:1)识别和确认访问系统的用户;2)决定该用户可以对某一系统资源进行何种类型的访问。 现有的Linux的存取访问控制方式主要采用自主访问控制(Discretionary Access Control,DAC)和强制访控制(Mandatory Access Control,MAC)两种。 定义 4 自主访问控制是指客体(比如程序、文件或进程等)的拥有者可以任意的修改或授予此客体相应的权限。 定义 5 强制访问控制是基于更高的安全要求考虑,不由客体的所有者任意分配客体权限,而是事先按照一定的安全策略统一配置。 Linux支持UGO(User、Group、Other)和ACL(Access control List)权限管理方式,它们都属于自主访问控制方式,UGO将权限位信息存储在节点的权限中,ACL将权限位信息存储在节点的扩展属性中。 3.1 UGO访问控制管理机制 UGO(User、Group、Other)访问控制机制是Linux文件系统传统的访问控制方式,它通过在文件和目录上都设置权限位,用来控制用户对文件或目录的访问。 在UGO访问控制方式中,一个文件创建后,它具有读、写和执行三种操作方式。UGO权限管理方式将文件的操作者分为文件所有者、同组用户和其他用户三类。文件所有者是指创建文件的用户,他是文件的拥有者,他可以设置用户的读、写和执行权限,也就是说他是访问控制权限的决定者。文件建立时默认的用户组是文件所有者所在的用户组,但文件所有者可以对该用户组进行修改,该组中的所有用户都是文件的同组用户。 表2 文件权限情况 UGO访问控制方式将文件的权限用三组3位的二进制位描述,即9位二进制数,并且在最前面加上一位作为文件的类型标志。每类用户占3位,读、写、执行权限各用1位描述,具有权限时,该位就设置为1。读、写、执行权限分别用r、w、x三个字符表示,如表2所示。 3.2 基于ACL的自主访问控制机制 ACL实现用户权限管理,它对UGO权限管理方式进行了扩展,可以对任意的用户/组分配读、写和执行操作权限。ACL基于IEEE POSIX 1003.le标准,EXT2、EXT3、EXT4、JFS、XFS和ReiserFS等文件系统都支持 ACL。 ACL的优先级高于UGO的优先级,当ACL的权限设置大于UGO时,mask就是UGO权限中的同组用户的最高权限,而ACL的有效权限则是和mask取权限的交集,从而限制了ACL对UGO权限的超越。但文件的所有者可以通过修改mask值来消除这种限制。在测试时,为了保证ACL访问控制不受限于UGO访问控制,应得将mask值设为rwx。ACL中单个用户权限的优先权高于同组用户权限,也就是说如果在ACL中设置了某个用户的权限,又设置了这个用户所在组的用户权限,则这个用户的权限与他所在组的用户权限无关。 |
|