通用操作系统的安全机制.ppt
2023/10/19,安全操作系统原理与技术,安徽理工大学计算机科学与工程学院信息安全系张柱 讲师,2023/10/19,2,第2章 通用操作系统的安全机制,学习内容:Windows系统的安全机制Linux系统的安全机制本章重点:Windows系统的结构Windows系统的安全模型Linux系统的身份标识与鉴别Linux系统的自主访问控制、特权管理和安全审计,2023/10/19,3,第2章 通用操作系统的安全机制(4课时)2.1 Win系统安全机制,2.1.1 Win系统结构操作系统体系结构的设计方法。较小的系统,可以由相互调用的一系列过程组成,如DOS;层次系统,即把系统划分成模块和层,没个模块为其他模块提供一系列函数以供调用;客户机/服务器结构,每个系统进程称为服务器,提供服务,可执行的应用称为客户机。如MACH;Windows NT/2000/XP属于层次结构和客户机/服务器结构混合体。如图2.1所示。,2023/10/19,4,第2章 通用操作系统的安全机制(4课时)2.1.1 Win系统结构,如图2.1 Win操作系统结构,2023/10/19,5,第2章 通用操作系统的安全机制(4课时)2.1.1 Win系统结构,执行者是唯一运行在核心模式的部分,分为三层:硬件抽象层、微内核和基本操作系统服务模块。硬件抽象层,是核心模式的最底层,为上层提供硬件结构的接口,方便系统移植。微内核,在硬件抽象层的上方,为低层提供执行、中断、异常处理和同步支持。在每个基本操作系统服务模块之间,通过定义在每个模块中的函数进行通信。被保护的子系统,也称服务器或被保护的服务,提供了应用程序接口(API)。,2023/10/19,6,第2章 通用操作系统的安全机制(4课时)2.1 Win系统安全机制,2.1.2 Win安全模型Windows NT/2000/XP操作系统提供了一组可配置的安全性服务,达到了TCSEC所规定的C2级安全的要求。C2级安全性服务需要的基本特征:安全登录:自主访问控制:安全审计:内存保护:,2023/10/19,7,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,1.Windows NT安全模型Windows NT安全模型(如图2.2所示)包括5个主要组成部分:登录过程(WinLogon):提供交互式登录支持;本地安全认证子系统(LSA):负责在本地计算机上处理用户登录与身份验证;msv1_0:可接受一个用户名和一个散列密码进行身份验证;安全账号管理器(SAM):负责维护用户账户数据库;NT LAN Manager(NTLM):一种挑战/响应协议。,2023/10/19,8,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,如图2.2 WinNT的安全模型,2023/10/19,9,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,2.Windows 2000/XP安全模型Windows 2000 Server将其安全模型扩展到分布式环境中,并能让组织识别网络用户,控制他们对资源的访问。使用信任域控制器身份验证、服务之间的信任委派以及基于对象的访问控制。核心功能包括与Windows 2000 Active Directory服务的集成;支持Kerberos V5身份验证;验证外部用户的身份时使用公钥证书;保护本地数据的机密文件系统(EFS);使用IPSec来支持公共网络上的安全通信。如图2.3所示。,2023/10/19,10,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,如图2.3 Win2000的安全模型,2023/10/19,11,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,3.Windows 的域和委托域模型是Windows网络系统的核心,其安全性比工作组更加突出。域是一些服务器的集合,这些服务器被归为一组,并共享同一个安全策略和用户账号数据库。域由一个主域控制器、备份域控制器、服务器和工作站组成。委托是一种管理方法,它将两个域连接在一起并允许域里的用户相互访问,能够使用户账号和工作组能够在建立它们的域之外的域中使用。委托包括受托域和委托域。委托关系是单向的,NT中存在三种委托关系:单一域模型、主域模型和多主域模型。,2023/10/19,12,第2章 通用操作系统的安全机制(4课时)2.1.2 Win安全模型,4.Windows 安全性组件Windows NT/2000/XP安全模型的安全子系统组件和数据库如下:安全引用监视器(SRM):NTOSKRNL.EXE本地安全认证(LSA)服务器:LSASS.EXELSA策略数据库:注册表HKEY-LOCAL-MACHINEsecurity下安全账号管理器服务SAM数据库:注册表HKEY-LOCAL-MACHINESAM下默认身份认证包:msv1_0.dll登录进程:WINLOGON.EXE网络登录服务:SERVICES.EXE,2023/10/19,13,第2章 通用操作系统的安全机制(4课时)2.1 Win系统安全机制,2.1.3 Win系统登录过程登录是通过WinLogon、LSA、一个或多个身份认证包以及SAM相互作用的过程。身份认证包是执行身份验证检查的动态链接库,msv1_0.dll是一个用于交互式登录的身份认证包,负责将用户信息处理后生成密钥,同SAM数据库中存储的密钥进行对比。WinLogon是一个受托进程,负责管理与安全性相关的用户相互作用,确保与安全性相关的操作对任何其他活动的进程是不可见的。登录进程的认证和身份验证都是在名为GINA的可替换DLL中实现的。,2023/10/19,14,第2章 通用操作系统的安全机制(4课时)2.1.3 Win系统登录过程,1.WinLogon初始化1)创建并打开一个窗口站以代表键盘、鼠标和监视器。2)创建并打开三个桌面。3)建立与LSA的LPC连接。4)调用LasLookupAuthenticationPackage来获得与msv1_0相关的ID,用作用户登录时的身份验证。5)创建窗口初始化并注册一个与WinLogon程序相关的窗口等级的数据结构。6)用刚创建的窗口注册与之相关的安全注意序列(SAS)热键序列。7)注册该窗口以便在用户注销或屏幕保护程序时间到时能调用该窗口相关的程序。,2023/10/19,15,第2章 通用操作系统的安全机制(4课时)2.1.3 Win系统登录过程,2.用户登录步骤当用户按下SAS时开始登录,WinLogon切换到安全桌面并提示输入用户名和口令。WinLogon为该用户创建一个唯一的本地组,并将桌面实例分配给该用户。WinLogon将该组传送到LSA。若用户成功登陆,该组将包括在登录进程令牌中。在输入用户名和口令后,WinLogon调用LSA,传递登录信息并指定身份验证包来接收登录信息。msv1_0身份验证包获取用户名称和口令信息并向SAM发送请求检索账号信息,然后对比存储在SAM中的口令和文件名。如果信息匹配,msv1_0生成一个唯一的用于登录会话的标识符,并通过调用与会话的唯一标识符相关的LSA来创建登录会话,传递用户最终创建访问令牌所需的信息。LSA查看本地规则数据库。,2023/10/19,16,第2章 通用操作系统的安全机制(4课时)2.1 Win系统安全机制,2.1.4 Win资源访问Windows 2000的资源对象包括文件、设备、邮件槽、命名和未命名管道、进程、线程、事件、互斥体、信号量、可等待定时器、访问令牌、窗口站、桌面、网络共享、服务、注册表键和打印机。被导出到用户态的系统资源是作为对象来实现的。Windows 2000在访问任何系统资源之前都要进行身份验证登录。,2023/10/19,17,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,1.安全性描述符和访问控制为了实现进程间的安全访问,Windows中的所有对象,在被创建时都被分配安全描述符,含如下属性,其构成如下图所示。所有者SID和组SID自主访问控制列表(DACL)系统访问控制列表(SACL),2023/10/19,18,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,访问控制ACL包括一个ACL头和零或多个ACE结构。空ACL,具有零个ACE的ACL。DACL中,每个ACE都包含一个安全标识和访问掩码。并包含“允许访问”和“拒绝访问”两种类型中的一种ACE。如果安全访问控制符中没有DACL,则每个用户就拥有对象的完全访问权。如果DACL为空,则没有用户可以访问该对象。SACL只包含系统审计ACE,指明特定用户或组在对象上进行的应得到审计的操作。如果SACL为空,则对象不会被审计。,2023/10/19,19,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,1)ACL的分配若调用者创建对象时提供一个安全描述符,则系统把该描述符应用到对象中。若未提供安全描述符,而对象有名称,则系统在存储新对象名称的目录中查看安全描述符。若以上两种情况都没有出现,系统会从访问令牌中检索默认的ACL,并应用到新对象。,2023/10/19,20,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,2)访问控制算法两种算法:确定允许访问对象的最大权限,对应函数为:GetEffectiveRightFromAcl通过检查ACL中的ACE项,来生成授予访问掩码和拒绝访问掩码。确定是否允许一个特定的所希望的访问,对应函数为:AccessCheck、AccessCheckByType和TrustedAccessToObject依据调用者的访问令牌来确定是否授予所申请的指定访问权限。两种算法的访问有效性都依赖于访问拒绝ACE被放置在访问允许ACE之前。,2023/10/19,21,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,第一种算法的步骤:若对象没有DACL,系统将授予所有的访问权限。若调用者具有所有权,系统将在检查DACL之前授予写入访问权限。若调用者是对象所有者,则别授予读取控制和写入DACL的访问权力。对于每个访问拒绝ACE,若其中包含与调用者的访问令牌相匹配的SID,则ACE的访问掩码被添加到拒绝访问掩码上。对于每个访问允许的ACE,若其中包含与调用者的访问令牌相匹配的SID,除非访问已被拒绝,否则ACE的访问掩码被添加到允许访问掩码上。完成后,授予访问掩码作为允许访问对象的最大权限返回给调用者。,2023/10/19,22,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,2)访问控制算法Win32中处理对象的每个打开的函数都有一个参数用来指定访问掩码。第二种算法的步骤:若对象没有DACL,系统将授予所有的访问权限。若调用者具有所有权,系统将在检查DACL之前授予写入访问权限。如果写入权限是唯一请求的访问权力,则安全系统把它授予调用者。若调用者是对象所有者,则别授予读取控制和写入DACL的访问权力。如果只申请了取和写入权限,则不检查DACL就可以授予访问权力。DACL中的每个ACE都会被从头到尾检查一遍。若DACL已检查完毕,而一些被请求的访问权限没有被授予,则访问被拒绝。,2023/10/19,23,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,在Win2000中,引入对象指定的ACE并且自动继承,非继承的ACE置于继承的ACE之前。在继承和非继承的ACE中,依据ACE的类型来排列次序:应用于对象自身的访问拒绝ACE;应用于子对象的访问拒绝ACE;应用于对象自身的访问允许ACE;应用于子对象的访问允许ACE;系统并不是在每次使用句柄时处理DACL,而是在每次打开句柄检查DACL,以便提高系统的效率。一旦进程成功地打开一个句柄,安全系统也不能取消已授予的访问权力,即使DACL发生了改变。,2023/10/19,24,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,2.访问令牌与模仿访问令牌是一个包含进程或线程安全标识的数据结构:SID、用户所属组的列表以及启用和禁用的特权列表。核心态访问令牌结构是一个由对象管理器分配、由执行体进程块或线程块指向的对象。每个进程都从它的创建进程中继承一个首选的访问令牌。单个线程也可以有自己的访问令牌。这使得线程具有不同于进程的访问令牌。默认情况下,除非一个线程使用ImpersonnateSelf函数来请求访问令牌,否则该线程不会有自己的令牌,该函数复制最初的访问令牌并将它分配给线程。许多系统进程在名为System的特殊访问令牌下运行。,2023/10/19,25,第2章 通用操作系统的安全机制(4课时)2.1.4 Win资源访问,3.加密文件系统EFS提供了可将加密的NTFS文件存储到磁盘上。EFS加密技术是基于公共密钥的,它用一个随机产生的文件密钥(FEK),通过加强型的DESX算法,对文件进行加密。使用基于RSA的公共密钥加密算法对FEK进行加密,并把它作为文件的一个特殊EFS属性字段:数据解密DDF字段。,2023/10/19,26,第2章 通用操作系统的安全机制(4课时)2.1 Win系统安全机制,2.1.5 Win安全审计在Win系统中,对象管理器可以将访问检查的结果生成审计事件,用户使用有效的Win32函数可以直接生成审计事件。核心态代码通常只允许生成一个审计事件。调用审计系统服务的进程必须具有SeAuditPrivilege特权才能成功地生成审计记录。本地系统恶审计规则控制一个特殊类型的安全事件的判定。本地安全规则调用的审计规则是本地系统上LSA维护的安全规则的一部分。LSA向SRM发送消息以通知系统初始化时的审计规则和规则更改的时间。LSA负责接收来自SRM的审计记录,对其进行编辑并将记录发送到“事件日志”中。,2023/10/19,27,第2章 通用操作系统的安全机制(4课时)2.1.5 Win安全审计,SRM经连接到LSA的IPC发送审计事件。事件记录器将审计事件写入安全日志中。LSA和SRM都产生直接发送到事件记录器的审计记录。当接收到审计记录后,审计记录被放到队列中已被发送到LSA。可以使用两种方式,从SRM中把审计记录移到安全子系统。当审计记录较小,则直接作为一条LPC消息发送。审计记录从SRM的地址空间复制到LSASS进程的地址空间。当审计记录较大,SRM使用共享内存,使LSASS可以使用该消息,同时在LPC消息中简单传递一条指针。,2023/10/19,28,第2章 通用操作系统的安全机制(4课时)2.1.5 Win安全审计,Windows系统运行中,产生三类日志:系统日志、应用程序日志和安全日志。Windows系统的审计子系统缺省是关闭的。审计管理员可以打开审计并设置审计事件。审计事件分为七类:系统类、登录类、对象存取类、特权应用类、账号管理类、安全策略类和详细审计类。审计数据以二进制结构文件形式存储,每条记录包括事件发生的时间、事件源、事件号和所属类别、机器名、用户名和事件本身的详细描述。,2023/10/19,29,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,2.2 Linux系统的安全机制身份标识与鉴别Linux系统的身份标识与鉴别机制是基于用户名和口令来实现的。其基本思想:当用户登录系统时,由守护进程getty要求用户输入用户名,然后由getty进程激活login进程,要求用户输入口令,接着login根据系统中的/etc/passwd和/etc/shadow文件来检查用户的口令的一致性。若一致,则是合法用户,需要为该用户启动一个Shell。,2023/10/19,30,第2章 通用操作系统的安全机制(4课时)2.2.1身份标识与鉴别,PAM是由SUN提出的一种认证机制,可以在此基础上开发替代常规的用户名和口令的身份认证方法。PAM通过提供一些动态链接库和一套统一的API,将系统提供的服务与该服务的认证方式分开。PAM由四个部分组成。,2023/10/19,31,第2章 通用操作系统的安全机制(4课时)2.2.1身份标识与鉴别,要求认证的服务程序通过PAM LIB提供的应用程序接口(PAM API)提供一系列与认证有关的请求,而PAM LIB通过相应的配置文件为这一系列认证请求提供服务。首先,调入相应的认证模块,然后通过所有认证模块所遵循的统一应用程序接口(PAM SPI)与相应的认证模块交互,认证模块将认证结果传递给PAM LIB,然后由PAM LIB返回给服务程序。系统管理员可以与服务器程序相对应的配置文件为系统中的服务指定相应的认证模块。,2023/10/19,32,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,自主访问控制Linux中所有活动都可以看作是主体对客体的一系列操作。客体,是一种信息实体,或是从其他主体或客体接收信息的实体。主体,通常是一个用户或代表用户的进程,它引起信息在客体之间的流动。访问控制机制的功能是控制系统中的主体对客体的读、写和执行等各种访问。,2023/10/19,33,第2章 通用操作系统的安全机制(4课时)2.2.2 自主访问控制,Linux自主访问控制是比较简单的访问控制机制,其基本思想是:系统内的每个主体都有一个唯一的用户号(UID),并且总是属于某一个用户组,而每一个用户组有唯一的组号(GID)。系统对每一个客体的访问主体区分为客户的属主(u)、客体的属组(g)以及其他用户(o),而对每个客体的访问模式区分为读(r)、写(w)和执行(x),所有这些信息构成访问控制矩阵。当用户访问客体时,根据进程的UID、GID和文件的访问控制信息检查访问的合法性。setuid/setgid程序可以使得代表普通用户的进程不继承用户的UID和GID,而是继承改进程所对应的应用程序文件的所有者的UID和GID。,2023/10/19,34,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,特权管理Linux继承了传统Unix的特权管理机制,即基于超级用户的特权管理机制。其基本思想是:普通用户没有任何特权,而超级用户拥有系统内的所有特权。当进程要进行某特权操作时,系统检查进程所代表的用户是否具有超级用户。当普通用户的某些操作设计特权操作时,通过setuid/setgid程序实现。,2023/10/19,35,第2章 通用操作系统的安全机制(4课时)2.2.3特权管理,从2.1版开始,Linux内核引入权能的概念,实现了基于权的特权管理机制。内核中基于权能特权管理机制的思想是:使用权能分割系统内的所有特权,使同一类敏感操作具有相同的权能。普通用户及其Shell没有任何权能,而超级用户及其Shell在系统启动之初拥有全部权能。在系统启动后,系统管理员为了系统安全可以剥夺超级用户的某些权能,并且该过程不可逆,直到系统重启。进程可以放弃自己的某些权能,该过程也不可逆。进程被创建时拥有的权能由它所代表的用户目前所具有的权能、父进程权能的与运算确定。每个进程的权能被保存在进程控制块的cap_effective域中,每个权能用一位二进制数表示。,2023/10/19,36,第2章 通用操作系统的安全机制(4课时)2.2.3特权管理,当一个进程要进行特权操作时,系统不再检查进程的有效UID是否为0,而是检查进程是否具有执行相应特权操作所应该具有的权能,即检查该进程控制块的cap_effective域中恶相应位是否为1。当普通用户的某些操作涉及特权操作时,仍通过setuid程序来实现。,2023/10/19,37,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,安全审计Linux安全审计机制的基本思想是:审计事件分为系统事件和内核事件两部分分别来维护与管理。系统事件由审计服务进程syslogd来维护与管理,内核事件由内核审计进程klogd来维护和管理。,2023/10/19,38,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,安全注意键Linux提供了“安全注意键”可使用户确信自己的用户名和口令不被别人窃走,“安全注意键”是系统预定义的。当用户键入这组“安全注意键”时,系统通过中断陷入核心,核心接受并解释用户的键入,一旦发现“安全注意键”,便杀死当前终端的所有用户进程,并重新激活登录界面为用户提供可信登录路径。需要注意的是,“安全注意键”的安全性是很有限的。不能防止通过将特洛伊木马同login登录进程捆绑在一起进行的口令截获攻击。,2023/10/19,39,第2章 通用操作系统的安全机制(4课时)2.2 Linux系统的安全机制,其他安全机制基于用户名与口令的身份鉴别机制在安全上的不足主要表现在口令的以猜测和泄漏性。针对这种情况,Linux提供了一定的保护措施,主要有密码设置时的脆弱性警告、口令有效期、一次性口令、先进的口令加密算法、使用影子文件、账户加锁等。,2023/10/19,安全操作系统原理与技术,谢谢大家!,