系统安全的根本目标是数据资料的安全,而数据资料是由它的使用者进行存取和维护的。传统的数据存取和维护,都是以新的数据覆盖旧的数据,对于数据的无心错误,或有心的更改数据,一个管理者并无法有效地查出蛛丝马迹。
因此,对数据的存取控制是系统安全的一个重要方面。为此,Sandhu等学者提出了一套以角色为基础的存取控制(Role-based Aclearcase/" target="_blank" >ccess Control,RBAC)理论,其基本组件包括使用者(User)、角色(Role)、授权(Authorization)及会话(Session)。如何为每个使用者分配相应的权力(即授权)将是本文将要分析的一个重要原则--最小特权原则(Least Privilege Theorem)。
最小特权原则简介
最小特权原则是系统安全中最基本的原则之一。所谓最小特权(Least Privilege),指的是"在完成某种操作时所赋予网络中每个主体(用户或进程)必不可少的特权"。最小特权原则,则是指"应限定网络中每个主体所必须的最小特权,确保可能的事故、错误、网络部件的篡改等原因造成的损失最小"。
最小特权原则一方面给予主体"必不可少"的特权,这就保证了所有的主体都能在所赋予的特权之下完成所需要完成的任务或操作;另一方面,它只给予主体"必不可少"的特权,这就限制了每个主体所能进行的操作。
最小特权原则要求每个用户和程序在操作时应当使用尽可能少的特权,而角色允许主体以参与某特定工作所需要的最小特权去签入(Sign)系统。被授权拥有强力角色(Powerful Roles)的主体,不需要动辄运用到其所有的特权,只有在那些特权有实际需求时,主体才去运用它们。如此一来,将可减少由于不注意的错误或是侵入者假装合法主体所造成的损坏发生,限制了事故、错误或攻击带来的危害。它还减少了特权程序之间潜在的相互作用,从而使对特权无意的、没必要的或不适当的使用不太可能发生。这种想法还可以引申到程序内部:只有程序中需要那些特权的最小部分才拥有特权。
安全操作系统
操作系统对于系统安全来说好比是大楼的地基,如果没有了它,大楼就无从谈起。在计算机系统的各个层次上,硬件、操作系统、网络软件、数据库管理系统软件以及应用软件,各自在计算机安全中都肩负着重要的职责。在软件的范畴中,操作系统处在最底层,是所有其他软件的基础,它在解决安全上也起着基础性、关键性的作用,没有操作系统的安全支持,计算机软件系统的安全就缺乏了根基。对安全操作系统的研究首先从1967年的Adept-50项目开始,随后安全操作系统的发展经历了奠基时期、食谱时期、多政策时期以及动态政策时期。国内对安全操作系统的开发大多处于食谱时期,即以美国国防部的TCSEC(又称橙皮书)或我国的计算机信息系统安全保护等级划分准则为标准进行的开发。
最小特权在安全操作系统中占据了非常重要的地位,它适应UNIX操作系统、超级用户/根目录体系结构的固有特征,以便了解如何到达根目录的的任何用户提供总体系统控制——而且几乎在UNIX环境工作的所有程序员都了解这一点。
角色管理机制依据"最小特权"原则对系统管理员的特权进行了分化,每个用户只能拥有刚够完成工作的最小权限。然后根据系统管理任务设立角色,依据角色划分权限,每个角色各负其责,权限各自分立,一个管理角色不拥有另一个管理角色的特权。例如当入侵者取得系统管理员权限后欲访问一个高安全级别的文件,则很有可能被拒绝。因为用户(包括系统管理员)在登录后默认的安全级别是最低的,他无法访问高级别的文件,而安全级别的调整只有通过安全管理员才能完成。因此,安全管理员只要对敏感文件配置了合理的安全标记,系统管理员就无法访问这些文件。由此可知,安全管理员对系统管理员的权限进行了有力的限制。
Windows NT操作系统的某些漏洞也与最小特权的应用有关,例如:缺省组的权利和能力总是不能被删除,它们包括:Administrator组,服务器操作员组,打印操作员组,帐户操作员组。这是因为当删除一个缺省组时,表面上,系统已经接受了删除。然而,当再检查时,这些组并没有被真正删除。有时,当服务器重新启动时,这些缺省组被赋予回缺省的权利和能力。为了减小因此而带来的风险,系统管理员可以创建自己定制的组,根据最小特权的原则,定制这些组的权利和能力,以迎合业务的需要。可能的话,创建一个新的Administrator组,使其具有特别的指定的权利和能力。
下面介绍目前几种安全操作系统及最小特权的应用:
最小特权管理是SecLinux的一个特色,它使得系统中不再有超级用户,而是将其所有特权分解成一组细粒度的特权子集,定义成不同的"角色",分别赋予不同的用户,每个用户仅拥有完成其工作所必须的最小特权,避免了超级用户的误操作或其身份被假冒而带来的安全隐患。
Inte.net安全
Internet的发展可谓一日千里,而对Internet安全的要求却比Inerternet本身发展得更快。目前Internet上的安全问题,有相当多的是由于网络管理员对于角色权利的错误分配引起的。因此,最小特权原则在Internet安全上也大有用武之地。
在日常生活里,最小特权的例子也很多。一些汽车制造厂制造汽车锁,用一个钥匙开车门和点火器,而用另一个钥匙开手套箱和衣物箱;停车场的服务员有安排停车的权而没有从汽车衣物箱里取东西的权力;同样是最小特权,可以给人汽车的钥匙而不给他大门的钥匙。
在Internet 上,需要最小特权的例子也很多,例如:不是每个用户都需要使用所有的网络服务;不是每个用户都需要去修改(甚至去读)系统中的所有文件;不是每个用户都需要知道系统的根口令(Root Password);不是每个系统管理员都必须知道系统的根口令;也不是每个系统都需要去申请每一个其他系统的文件等等。
Internet 上出现的一些安全问题都可看成是由于最小特权原则的失败。例如Unix上最常用的邮件传输协议Sendmail,它是一个庞大而又复杂的程序。这样的程序肯定会有很多隐患。它经常运行全部解密(Setuid)根目录,这对很多攻击者是很有利的。系统上运行的程序希望是尽可能简单的程序,如果是一个较复杂的程序,那么应该找出办法从复杂部分里去分开或孤立需要特权的模块。
为了保护站点而采取的一些措施也是使用最小特权原则的,如包过滤系统就设计为只允许进入所需要的服务,而过滤掉不必要的服务。在堡垒主机里也使用了最小特权原则。
最小特权原则还有助于建立严格的身份认证机制。对于所有接触系统的人员,按其职责设定其访问系统的最小权限;并且按照分级管理原则,严格管理内部用户帐号和密码,进入系统内部必须通过严格的身份确认,防止非法占用、冒用合法用户帐号和密码。具体实现用户身份认证时,可以通过服务器CA证书与IC卡相结合实现。CA证书用来认证服务器的身份,IC卡用来认证企业用户的身份等等。
最小特权原则有效地限制、分割了用户对数据资料进行访问时的权限,降低了非法用户或非法操作可能给系统及数据带来的损失,对于系统安全具有至关重要的作用。但目前大多数系统的管理员对于最小特权原则的认识还不够深入。尤其是对于UNIX、Windows系列操作系统下,因为系统所赋予用户的默认权限是最高的权限,例如Windows NT下的目录和文件的默认权限是Everyone(所有人)均具有完全的权限,而Administrator(系统管理员)则有对整个系统的完全控制。如果系统的管理员不对此进行修改,则系统的安全性将非常薄弱。
当然,最小特权原则只是系统安全的原则之一,如纵深防御原则、特权分离原则、强制存取控制等等。如果要使系统的达到相当高的安全性,还需要其他原则的配合使用。