您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 桌面操作系统平台的安全性
1桌面操作系统平台的安全性张建宇(19908065)1.引言在安全层次模型中,桌面操作系统的安全性属于系统级安全的范畴。桌面操作系统向上为文件、目录、网络和群件系统等提供底层的安全保障平台。桌面操作系统中的安全缺陷和安全漏洞,往往会造成严重的后果。因此,安全机制是桌面操作系统的一个重要组成部分;平台的安全级别是对其性能进行评估的一个重要指标。本文将结合Linux、WindowsNT4.x中具体的安全策略,阐述桌面操作系统中常见的安全问题、安全性设计的主要原则和安全服务的主要内容。2.桌面操作系统中常见的安全问题对提供网络服务的系统平台来说,安全性问题主要体现在网络通信安全、网络非法入侵等方面。但是,桌面操作系统所面对的安全问题和任务则不大一样。关于桌面操作系统的安全,主要考虑的有如下几个:A.恶意程序的威胁。包括病毒、逻辑炸弹、后门、特洛伊木马等等。B.不合法使用。包括合法用户在未授权使用某些数据、资源或程序的情况下越过系统的安全检查而越权访问;或者虽然属合法授权,但有意或无意地错误使用某些功能而导致重要信息失密。C.恶意入侵者。他们的主要目的是窃取数据和非法修改系统。其手段之一是窃取合法用户的口令,在合法身份的掩护下进行非法操作;其手段之二便是利用操作系统的某些合法但不为系统管理员和合法用户所熟知的操作指令。D.应用程序的安全性。系统应监督应用程序使用数据或资源权限的合法性。程序的执行还应该采用“最小特权”原则,即程序应按照它能做事的最小权限运行,否则就有可能被人利用。E.数据的安全性。机密数据如果没有保存在安全的空间内,或者数据的加密处理不够规范和健壮,也可能带来安全问题。A项涉及到病毒预防和病毒防治的问题,E项则与数据加密相关,本文不做讨论。B项和D项与系统的访问控制机制有关,C项则对应于系统的用户管理和用户身份认证机制,是本文讨论的重点。3.安全性设计的原则针对桌面操作系统平台的安全性设计,Saltzer和Schroeder提出了一些基本原则:系统设计必须公开。认为入侵者由于不知道系统的工作原理而会减少入侵可能性的想法是错误的,这样只能迷惑管理者。默认情况应是拒绝访问。合法访问被拒绝的情况比未授权访问被允许的情况更容易获知。检查操作的当前授权信息。系统不应只检查访问是否允许,然后只根据第一次的检查结果而不理会后续的操作。2为每个进程赋予可能的最小权限。每个进程只应当具备完成其特定功能的最小权限。保护机制必须简单、一致并建立到系统底层。系统的安全性和系统的正确性一样,不应当是一种附加特性,而必须建立到系统底层而成为系统固有的特性。方案必须是心理上可接收的。如果用户感觉到为保护自己的文件而必须做这做那的话,用户就会有厌烦心理,并且可能因侥幸心理而不会利用所提供的方案保护数据。4.桌面操作系统的安全服务与提供网络服务的系统不同,桌面操作系统的安全服务主要包括如下两个方面:用户管理的安全性。首先,是用户帐号的管理。通常对用户帐号进行分组管理,并且这种分组管理应该是针对安全性问题而考虑的分组。也就是说,应该根据不同的安全级别将用户分为若干等级,每一等级的用户只能访问与其等级相对应的系统资源和数据,执行指定范围的程序。其次,是用户口令的加密机制。用户口令的加密算法必须有足够的安全强度,用户的口令存放必须安全,不能被轻易窃取。最后,是认证机制。身份认证必须强有力,在用户登录时,与系统的交互过程必须有安全保护,不会被第三方干扰或截取。认证机制是用户安全管理的重点。访问控制。访问控制实质上是对资源使用的限制,它决定主体是否被授权对客体执行某种操作。它依赖于鉴别使主体合法化,并将组成员关系和特权与主体联系起来。只有经授权的用户,才允许访问特定的网络资源。用户访问系统资源或执行程序时,系统应该先进行进行合法性检查,没有得到授权的用户的访问或执行请求将被拒绝。系统还要对访问或执行的过程进行监控,防止用户越权。程序的执行也应该受到监控。程序执行应遵循“最小”特权原则,程序不能越权调用执行另外一些与本程序执行无关的程序,特别是某些重要的系统调用;也不能越权访问无关的重要资源。5.用户身份认证用户身份认证通常采用帐号/密码的方案。用户提供正确的帐号和密码后,系统才能确认他的合法身份。不同的系统内部采用的认证机制和过程一般是不同的。Linux的登录过程相对比较简单。WindowsNT采用的是NTLANManager(或NTLM,建立于1988年)安全技术进行身份认证。下面以Linux的认证过程为例。通过终端登录Linux的过程描述如下:init确保为每个终端连接(或虚拟终端)运行一个getty程序。getty监听对应的终端并等待用户准备登录。getty输出一条欢迎信息(保存在/etc/issue中),并提示用户输入用户名,最后运行login程序。login以用户作为参数,提示用户输入密码。3如果用户名和密码相匹配,则login程序为该用户启动shell。否则,login程序退出,进程终止。init程序注意到login进程已终止,则会再次为该终端启动getty。在上述过程中,唯一的新进程是init利用fork系统调用建立的进程,而getty和login仅仅利用exec系统调用替换了正在运行的进程。由于其后建立的进程均是由shell建立的子进程,这些子进程将继承shell的安全性属性,包括uid和gid。Linux在文本文件/etc/passwd(密码文件)中保存基本的用户数据库,其中列出了系统中的所有用户及其相关信息。默认情况下,系统在该文件中保存加密后的密码。因为系统中的任何用户均可以读取该文件的内容,因此,所有人均可以读取任意一个用户的密码字段,即passwd文件每行的第二个字段。尽管密码是加密保存的,但是,所有密码均是可以破译的,尤其是简单的密码,更可以不花大量时间就可以破译。许多Linux系统利用影象密码以避免在密码文件中保存加密的密码,它们将密码保存在单独的/etc/shadow文件中,只有root才能读取该文件,而/etc/passwd文件只在第二个字段中包含特殊的标记。帐号/密码的认证方案普遍存在着安全的隐患和不足之处:认证过程的安全保护不够健壮,登录的步骤没有做集成和封装,暴露在外,容易受到恶意入侵者或系统内特洛伊木马的干扰或者截取。密码的存放与访问没有严格的安全保护。比如,Linux系统中全部用户信息,包括加密后的口令信息一般保存于/etc/passwd文件中,而该文件的默认访问许可是任何用户均可读,因此,任何可能获得该文件副本的人,就有可能获得系统所有用户的列表,进而破译其密码。认证机制与访问控制机制不能很好地相互配合和衔接,使得通过认证的合法用户进行有意或无意的非法操作的机会大大增加。例如能够物理上访问WindowsNT机器的任何人,可能利用NTRecover、WinternalSoftware的NTLocksmith等工具程序来获得Administrator级别的访问权。为此,Windows2000对身份认证机制做了重大的改进,引入了新的认证协议。Window2000除了为向下兼容提供了对NTLM验证协议的支持以外(作为桌面平台使用时),还增加了KerberosV5和TLS作为分布式的安全性协议。它支持对smartcards的使用,这提供了在密码基础之上的一种交互式的登录。Smartcards支持密码系统和对私有密钥和证书的安全存储。Kerberos客户端的运行时刻是通过一个基于SSPI的安全性接口来实现的,客户Kerberos验证过程的初始化集成到了WinLogon单一登录的结构中。6.访问控制系统中的访问控制通常通过定义对象保护域来实现。保护域是指一组(对象、权限)对,每个(对象,权限)对指定了一个对象以及能够在这个对象上执行的操作子集。保护域可以相互交叉。进程在执行过程中,可以根据情况在不同的保护域中切换,不同的系统对切换规则的定义不同。针对保护域的保护机制,最常见的属访问控制列表(AccessControlLists,ACL)。在ACL中,每个对象具有一个关联列表,该列表定义了所有可能访问该4对象的保护域,以及赋予这些保护域的访问权限。如下所示,假定我们有四个用户:user1、user2,、dev1、dev2,分别属于users组和devs组,系统中的文件file1和file2具有如下的访问控制列表:file1file2(user1,*,RW-)(dev1,devs,RWX)(user2,*,---)(dev2,devs,R-X)(*,devs,RW-)(*,users,R--)其中,RWX分别代表读取(Read)、写入(Write)和执行(eXecute)权限,减号代表拒绝对应的权限,星号代表所有的用户或组。Linux和WindowsNT均采用ACL机制保护系统对象,但它们在实施上有些差别。这里我们以WindowsNT的访问控制机制为例。6.1.WindowsNT的访问控制模型当用户登录到WindowsNT系统时,和UNIX系统类似,WindowsNT也使用帐号/密码机制验证用户身份。如果系统允许用户登录,则安全性子系统将建立一个初始进程,并创建一个访问令牌,其中包含有安全性标识符(SID),该标识符可在系统中唯一标识一个用户。初始进程建立了其他进程之后,这些进程将继承初始进程的访问令牌。访问令牌有两个目的:访问令牌保存有全部的安全性信息,可加速访问验证过程。当某个用户进程要访问某个对象时,安全性子系统可利用与该进程相关的访问令牌判断用户的访问权限。因为每个进程均有一个与之相关联的访问令牌,因此,每个进程也可以在不影响其他代表该用户运行的进程的情况下,在某种可允许的范围内修改进程的安全性特征。WindowsNT初始时禁止所有的用户可能拥有的特权,而当进程需要某个特权时,才打开相应的特权。由于WindowsNT的进程均有一个自己的访问令牌,其中包含有用户的特权信息,因此,进程所打开的特权只在当前进程内有效,而不会影响其他进程。这种管理方法的优点的比较明显的,但也会造成对系统性能的负面影响。为了实现进程间的安全性访问,WindowsNT采用了安全性描述符。安全性描述符的主要组成部分是访问控制列表,访问控制列表指定了不同的用户和用户组对某个对象的访问权限。当某个进程要访问一个对象时,进程的SID将和对象的访问控制列表比较,决定是否运行访问该对象。下图给出了访问令牌、安全标识符、安全性描述符以及访问控制列表之间的关系。5访问令牌中包含有用户的安全标识符、用户所在组的安全标识符以及相应的访问权限。WindowsNT在内部利用用户安全标识符,以及组安全标识符唯一标识用户或组。系统在每次建立新的用户或组时,建立唯一的用户或组安全标识符。WindowsNT的ACL由ACE(访问控制项)组成,每个ACE标识用户或组对某个对象的访问许可或拒绝。ACL首先列出拒绝访问的ACE,然后才是允许访问的ACE。当WindowsNT根据进程的存取令牌确定访问许可时,依据如下规则:A.从ACL的顶部开始,检查每项ACE,看ACE是否显式拒绝了进程的访问请求,或者拒绝了用户所在组的访问请求。B.继续检查,看是否进程所要求的访问类型已经显式地授予用户,或授予用户所在的组。C.对ACL中的每项ACE重复A,B步骤,直到遇到拒绝访问,或直到累计所有请求的许可均被满足为止。D.如果对于某个请求的访问许可,在ACL中既没有授权,也没有拒绝,则拒绝访问。当WindowsNT判断是否授予某个进程对指定对象的访问请求时,一般经过如下步骤:A.进程用请求的许可打开对象。例如,用户以读写方式打开文件。B.系统利用与该进程相关联的访问令牌和对象的ACL比较,以判断是否允许用户利用请求的许可打开对象。C.如果授权许可,系统将为对象建立一个句柄,并建立一个授权许可表。这些句柄和授权许可表返回到进程中,并在进程的对象表中存放。D.WindowsNT只在打开对象时才检查ACL。在打开的对象上随后进行的操作,按照在C中保存的对象权
本文标题:桌面操作系统平台的安全性
链接地址:https://www.777doc.com/doc-1264247 .html