0


网安概论(四)

Chapter 6 访问控制模型

一、访问控制的基本概念

1、基本目标:

**依据授权对提出的资源访问请求进行控制, 防止对任何资源(如计算资源、通信资源或信息资源)进行未授权的访问。 ****未授权的访问包括:未经授权的使用、泄露、 **修改、销毁信息以及颁发指令等。

2、三要素

*1、主体(Subject***):访问的发起者 **

**- 试图访问某个目标的用户或者是用户行为的代理。主体通常为进程或用户**

2、客体Object):

**-**可供访问的各种软硬件资源。

3、**策略(Policy)——访问控制的核心**

  • 定义了主体对客体的权限;
  • **定义了主体对客体的访问规则集 **
  • *体现了一种授权行为,即主体对客体的***使用权限 **
  • ** **决定了用户能做什么

二、自主访问控制(DAC)

** 1、概述:**

  • 是一种最为普遍的访问手段
  • 其依据是用户的身份和授权,并为系统中的每个用户(或用户组)和客体规定了用户允许对客体进行访问的方式
  • 每个用户对客体进行访问的要求都要经过权限检验,如果授权中允许用户以这种方式访问客体,则访问就可以得到允许,否则就不予许可
  • 自主访问控制允许用户自主地在系统中规定谁可以存取它的资源实体,例如用户(包括用户程序和用户进程)可选择同其他用户一起共享某个文件
  • 自主:指具有授与某种访问权力的主体能够自己决定是否将访问权限授予其他的主体。
  • 安全操作系统需要具备的特征之一就是自主访问控制,它基于对主体或主体所属的主体组的识别来限制对客体的存取

2、特点

• 优点: 主体的拥有者负责设置访问权限。根据主体的身份和授权来决定访问模式,比较灵活。

• 缺点:①权限在转移过程中,其访问权限关系会被改变。②当用户数量多、管理数据量大时,由于访问控制的粒度是单个用户,访问控制策略会很庞大。当组织内的人员发生变化(升迁、换岗、招聘 、离职)、工作职能发生变化(新增业务)时,访问控制策略的修改变得异常困难

**三、强制访问控制(MAC) **

1、概述

  • “强制”就是安全属性由系统管理员人为设置,或由操作系统自动地按照严格的安全策 略与规则进行设置,用户和他们的进程不能修改这些属性
  • 系统对所有主体及其所控制的客体指定敏感标记——一般由密级和范畴组成,他们是实施强制访问控制的依据
  • MAC通过安全标签实现单向信息流通模式

2、BLP模型

  • BLP是描述访问控制的机密性问题的状态机模型,访问许可通过控制矩阵和安全级别来定义,安全策略防止信息从高安全级别流向低安全级别——多级安全(MLS)策略
  • BLP主要考虑主体在查看或修改一个客体时发生 的信息流动
  • 向下读(简单安全原则),向上写(*特性)
  • 稳定原则——主体和客体的安全级别在它们被引用时必须保持不变。

2.1、 例:军事安全策略

敏感标记:安全级别=<密级,业务范围>

读文件要求:军官的密级必须大于等该文件的密级,而且军官的业务范围必须包含文件的业务范围

写文件要求:*一个军官要能写某一文件,军官的密级必须于等于该文件的密级,而且军官的业务范围必文件的业务范围所***包含

2.2 BLP模型把整个系统定义为一个状态机

  • 系统初始状态是Z0,如果系统初始状态是安全,并且中间状态也是安全的,那么我们认为统就是安全的。
  • BLP模型定义的状态 { b, M,f,H}:b——S(主体)×O(客体)×A(行为),是当前访问集 M——访问矩阵,它的第i行,第j列的元素Mij A表示在当前状态下,主体Si对客体Oj所拥有的 访问权限。f——分别表示主体的密级和部门级、客体的密级

2.3 SC——全体安全级别<A,C>的集合

  • 每个主体和客体都划分一个密级 A**; **
  • 每个主体和客体都划分一个业务范围 C
  • 定义二元关系≤如下,并称关系≤为支配: SC=<A,C>,SC’=<A’ ,C’>, 则SC ≤ SC’ ,iff A≤A’ and C 属于 C’
  • 偏序集合**[SC, ≤],对于SC中的任意元素X,Y,Z都满足自反性、传递性、反对称性**- 在[SC, ≤]中定义运算⊕、⊙如下: <A,C>⊕<A’ ,C’>=<max(A,A’),C ∪ C’> , <A,C>⊙<A’ ,C’>=<min(A,A’),C ∩ C’> 。故[SC, ≤]的最高安全级别和最低安全级别分别是 HIGH=<Topsecret,{全体属类} >, LOW=< unclassified,{}>

2.4 优缺点

  • 更安全:可以阻止某些类型的特洛伊木马攻击
  • 缺点是对用户限制较多,用户感到不够灵活**。 **
  • 主要保护秘密性,缺乏对真实性和完整性保护

3、BIBA模型

  • 用于保护完整性,Biba模型解决了当位于较低安全级内的主体能够向位于较高安全级内的客体写入时, 以及主体能够读取较低安全级的数据时, 受到威胁的数据的完整性问题
  • 向上读,向下写

优点

  • ***简单性 ***
  • ***容易与BLP模型结合 ***
  • 通过在标记中增加完整性标记,可实现同时控制系统访问的机密性和完整性***。 ***

缺点:

  • ***完整性标签确定的困难性。 ***
  • 实施的复杂性。

4、基于角色的访问控制——RDBC

1、基本概念

  • RBAC的基本思想是根据用户所担任的角色来决***定用户的在系统中的访问权限。 ***
  • 一个用户必须扮演某种角色,而且还必须激活***这一角色,才能对一个对象进行访问或执行某 ***种操作
    用户(集合为U)

访问计算机资源的主体
角色(集合为R)
一种岗位,代表一种资格、权利和责任
权限(集合为P)
对客体的操作权力。
用户分配(集合为UA)
将用户与角色关联,用户 u与角色 r关联后,将拥有 r的权限。
权限分配(集合为PA)
将角色与权限关联,权限 p与角色 r关联后,角色 r将拥有权限 p。
激活角色
角色只有激活才能起作用,否则不起作用。要通过会话激活角色;激活是角色的一种状态
会话
***用户要访问系统资源时,必须先建立一个会话。 ***

***一次会话仅对应一个用户。 ******一次会话可激活几个角 ***

色。

2、基本机制

2.1、RDBC的授权机制

步骤:1)将访问权限分配给角色 2)将角色分配给用户

满足条件

1)最小特权原则:*只给角色分配完成某工作所需的最小权力*

 2)职责分离原则: ***合理划分任务和相关权限,以保证多用户协同工作******的安全性。***

 3)角色互斥原则 :***如果一组角色是互斥的,那么一个用户或同一个访 ******问权限只能被分配给其中的一个角色。 ******利用角色互斥约束可实现职责分离***

4)角色激活限制原则:1)***激活数约束 限制一个角色同时授权和激活的数目。 ******如总经理只有1个。 2)******角色激活时间约束 限制一个角色激活的时间。如岗位******任期制。 ***

2.2 角色分级继承关系

**角色分级 **

*a.角色分级是组织角色的一种自然方法。 ***

*b.角色分级的结果将导致一个角色可以直接或间接地继承另一角色的访问权限。 ***

**c.*****直接继承:相邻角色之间的继承。 ***

**d.*****间接继承:非相邻角色之间的继承。 ***

e.*** 高低级角色之间的继承关系是一种偏序关***系。

3、优缺点

优点:

  • ***便于授权管理。 ***
  • ***便于处理工作分级。 ***
  • 利用安全约束,容易实现各种安全策略,
  • 便于任务分担,不同角色完成不同的任务

缺点:复杂的权限校验,对性能有一定的影响

五、Chinese Wall 模型

1、基本思想

  • 访问数据受限于主体已经获得的对数据的访问权限,而不是数据的属性(密级)
  • 思想是将一些可能会产生访问冲突的数据分成不同的数据集,强 制所有主体最多只能访问一个数据集,但访问哪个数据集并未受强制规则的限制

  • 用户只能访问那些与已有的信息不冲突的信息
  • 主体能够对一个客体写访问的前提,是主体未对任何属于其他公司数据集的客体进行读访问
  • 清洁信息:对公司的敏感信息进行清洁,去除敏感信息;清洁信息可以在系统中自由地流动

Chapter 7 操作系统安全机制

一、访问控制列表(Aaccess Control List,ACL)

通常将访问控制矩阵表示为存在于计算机中的一张表(ACL),保存用户对特定系统对象例如文件目录或单个文件的存取权限。

二、Windows安全模型

                                            Windows系统安全体系结构

1、Windows安全子系统

Windows采用模块化的系统设计,安全子系统置于核心层,其主要任务是身份认证访问控制

其中身份认证机制前文已经讨论过,可以采用LM或NTLM或kerberos机制,其中NTLM协议主要用于本地认证,kerberos协议是网络认证协议

具体结构如下图:

1)登录过程 (logon process,LP) :接受本地用户或者远程用户的登录请求,处理用户信息,为用户做一些初始化工作——winlogon.exe

2)本地安全授权机构(LSA):管理本地安全策略、管理审计策略和设置、为用户生成包含SID和组权限关系的令牌——lsass.exe。LSA验证的过程:通过访问本地SAM数据库,可以完成本地用户的验证。

3)安全账号管理器 (security account manager,SAM) :维护账号的安全性管理数据库

4)安全引用监视器 (security reference monitor,SRM) :检查存取合法性,防止非法存取和修改

2、Windows的安全概念

1)安全标识 (security identifier,SID):安全标识和账号唯一对应,在账号创建时创建,账号删除时删除,而且永不再用。 安全标识与对应的用户和组的账号信息一起存储在SAM数据库里。

2)访问令牌 (access token) :当用户登录时,本地安全授权机构为用户创建一个访问令牌,包括用户名、所在组、安全标识等信息。以后,用户的所有程序都将拥有访问令牌的拷贝

3)主体:用户进行的操作和访问令牌一起构成一个主体

4)对象、资源、共享资源:对象的实质是封装了数据和处理过程的一系列信息集合体;资源是用于网络环境的对象;共享资源是在网络上共享的对象

5)安全描述符:是Windows系统为共享资源创建的,包括四个部分:

  • 1、拥有者SID
  • 2、对象所在组SID
  • 3、自主访问控制表 (DACL) ——该对象的访问控制表,由对象的所有者控制,由访问控制项(ACEs)组成 。ACEs权限包括:读、修改、执行、完全控制等;ACEs授权类型有Access Allowed、Access Denied和System Audit。前两种用于自主访问控制;后一种用于记录安全日志。
  • 4、系统访问控制表 (SACL) ——定义操作系统将产生何种类型的审计信息,由系统的安全管理员控制。

3、Windows的访问控制过程

Step1(身份认证): 当一个账号被创建时,Windows为它分配一个SID,并与其他账号信息一起存入SAM数据库。

Step2 (身份认证) : 每次用户登录时,登录主机 (通常为工作站) 的系统首先把用户输入的用户名、口令和用户希望登录的服务器域信息送给安全账号管理器(口令需经过NTLM哈希加密),安全账号管理器将这些信息与SAM数据库中的信息进行比较。

Step3 (身份认证完成并授权) : 比较结果,如果匹配,服务器发给工作站允许访问的信息,并返回用户的安全标识和用户所在组的安全标识,工作站系统为用户生成一个进程。服务器还要记录用户账号的特权、主目录位置、工作站参数等信息

Step4 (授权): 本地安全授权机构(LSA)为用户创建访问令牌,访问令牌中有当前用户的唯一标识SID,组唯一标识SID以及一些权限标志(Privilege)。 此后,用户每新建一个进程,都将访问令牌复制作为该进程的访问令牌。

Step5(访问控制): 当用户或者用户生成的进程要访问某个对象时,安全引用监视器(SRM)将用户/进程的访问令牌中的SID与对象安全描述符中的自主访问控制表(DACL)进行比较,从而决定用户是否有权访问对象。 在这个过程中应该注意SID对应账号的整个有效期,而访问令牌只对应某一次账号登录(系统出问题后重启)

三、Linux基本访问控制机制

1、与Windows系统异同

同:都是自主访问控制

异:Windows系统使用访问控制列表(ACL)实现访问控制。每个对象都有一个ACL;

Linux系统使用一种基于用户和组的权限控制模型。每个文件或目录都有一个所有者、一个用户组以及三种访问权限(读、写和执行)。因此,在Linux系统中,对对象的访问控制是通过对它们的所有者和组权限的组合来确定的。用户组体现了一点角色的概念

2、LINUX的安全概念

1)用户和组

用户:/etc/passwd /etc/shadow

组:/etc/gpasswd /etc/gshadow

分别为口令文件和影子口令文件

2)文件权限

  • 三部分分别对应文件的属主、属组、其他人
  • 三种访问权限(读写执行)
  • 两种表示形式:9位字符或三位数字
  • Umask 掩码:- 设置用户创建目录和文件时的默认权限,在目录和文件的默认权限属性是不同的,因为对于一个目录来说它的x权限也就是执行权限是很重要的,进入目录等操作都是需要目录具有执行权限的,而对于文件来说,一般情况都是用于数据的记录操作,故目录的默认权限是777,文件的默认权限是666;- Umask掩码表示OS不希望某些成员具备的权限,即便设置了也不会生效。 - 若umask 022,则目录权限为755,文件权限是644- 若文件原本设置的权限是766,则文件权限为766-022=744
  • SUID/SGID:让进程临时拥有文件的属主/属组的执行权限——将文件执行位设为s或者通过函数调用Setuid()、setgid()来设置S位。但SUID/SGID往往是入侵的基础 - 字符设定法:chomd u+s test;chomd g+s test- 数字设定法:4代表suid,2代表sgid;chmod 6755 test——suid和sgid

四、Selinux

1、概述

基于 域-类型 模型(domain-type)的强制访问控制(MAC)安全系统,是一个 Linux 内核模块,也是 Linux 的一个安全子系统。主要作用是实现最小访问原则——传统Linux是根据进程属主来决定是否有访问权限的,而Selinux是根据进程类型决定的。

传统Linux的不足:

  • 存在特权用户root: 任何人只要得到root的权限,对于整个系统都可以为所欲为。这一点Windows也一样。
  • 对于文件的访问权划分不够细:在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。
  • SUID程序的权限升级:如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用
  • DAC(Discretionary Access Control)问题: 文件的所有者可以对文件进行所有的操作(只要是自主访问机制都有这种问题)

Selinux的优点:

  • 更严格和细粒度的访问控制 :对于所有的文件、目录、端口这类的资源的访问,都可以是基于策略设定的,这些策略是由管理员定制的、一般用户是没有权限更改的。- 类型的细分——增加客体类别概念,如普通文件、目录、进程、套接字、文件系统等- 权限的细化——针对不同的客体类别设定不同的权限
  • 对于进程只赋予最小的权限——默认拒绝原则
  • 防止权限升级
  • 对于用户只赋予最小的权限 :对于用户来说,被划分成一些ROLE,例如,即使是ROOT用户,你要是不在sysadm_r里,也还是不能实行sysadm_t管理操作的。

2、SELinux 安全策略

1)MAC(强制访问控制)——见上文

2)TE(Type Enforcement):对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的标签。

  • 是一种强制访问控制模型:一方面,TE模型基于域和类型标签进行访问控制,而不是基于用户标识进行的;另一方面,决定访问权的标签、DDT(域定义表)、DIT(域间定义表)有管理员决定,而不是由属主决定
  • Q: 如何使应用间互不干扰地进行工作? A:为不同的应用定义不同的域和不同的类型,如web_d、ftp_d域和web_t、ftp_t类型

(3)SELinux状态:在安全操作系统上,SELinux状态有三种:

  • Enforcing:**强制模式。违反SELinux规则的行为将被阻止并记录到日志中。 **
  • Permissive:**宽容模式。违反SELinux 规则的行为只会记录到日志中。一般为调试用。 **
  • disabled:关闭SELinux。

3、SELinux的安全上下文

1)定义:在SELinux当中,所有操作系统访问控制都是以关联的客体和主体的某种访问控制属性为基础。 这种访问控制属性叫做安全上下文,所有的客体以及主体都有与其有关联的安全上下文。

2)一个安全上下文由三部分组成:

  • 用户:指示登录系统的用户类型,如root,user_u,system_u,多数本地进程都属于自由(unconfined)进程
  • 角色:如system_r通过角色实现RBAC(基于角色的访问控制),在SELinux中,并不直接建立用户和type之间的联系,而是通过角色作为桥梁,且一个用户可以属于多个角色,不同角色具有不同权限,可以通过切换角色更改用户权限,优势是: - 降低policy复杂度:可能有上百个用户和上千种type,但是所需的不同角色只有若干个;role作为user和type之间的“中间层”,便于限制user的能力;- 实现不同用户优先级-当前用户通过扮演某种角色,以获得相应的能力。特权角色只能由特权用户来扮演。- RBAC的两个语法:用户声明语句和角色声明语句,比如: user joe roles {user_r}; role user_r types {user_t passwd_t);
  • 类型标识符:如果是进程的安全上下文,该部分多半为domain。MAC的基础管理思路其实不是针对上面的RBAC,而是所谓的Type Enforcement Accesc Control(简称TEAC,一般用TE表示)。对进程来说,Type就是Domain。Domain有什么权限,都需要政策和规则说明。

4、策略描述语言

前提: 因为SELinux默认不允许任何访问,所以,所有的访问都必须明确授权,不管用户/组ID是什么, 在SELinux中,通过allow 语句对主体授权对客体的访问权限

allow规则:

  • 源类型(Source type(s)) :通常是尝试访问进程的域类型
  • 目标类型(Target type(s)) :被进程访问的客体的类型
  • 客体类别(Object class(es)) :指定允许访问的客体的类型 如file,dir,socket等
  • 许可(Pemission(s)) :象征目标类型允许源类型访问客体类型的访问种类

例:allow user_t bin_t: file {read execute getattr}含义是拥有域类型user_t的进程可以读/执行或获取具体有bin_t类型的文件客体的属性

5、Selinux实现架构

LSM(Linux security module)- LSM框架的思想是允许安全模块以插件形式进入内核,以便更严格地控制Linux默认的基于身份的自主访问控制(DAC)安全性。LSM在内核系统调用逻辑中提供了一套钩子(hooks),这些钩子通常放在标准Linux访问检查后、且内核调用访问真实资源之前

有关概念

1)钩子函数:钩子函数也叫回调函数,是通过函数指针来实现的

2)LSM模块架构:

  • 客体管理器:负责创建和管理内核客体的内核子系统,如文件系统、进程管理系统等待。
  • AVC:保存安全服务器生成的访问判定结果。由AV(访问向量)构成 - AV:,用来表示策略的规则。如允许域访问各种系统客体,一个AV是一套许可。一个基本的AV规则是主体和客体的类型对,AV规则的语法如下:<av_kind> <source_type(s)> <target_type(s)>:<class(es)> <permission(s)>- 如:1、allow init_t apache_exec_t : file execute; 2、allow userdomain shell_exec_t: file{ read getattr lock execute ioctl}; - <av_kind>由以下四种设置:allow 表示允许主体对客体执行允许的操作。 neverallow 表示不允许主体对客体执行指定的操作。 auditallow 表示允许操作并记录访问决策信息。 dontaudit 表示不记录违反规则的决策信息,且违反规则不影响运行。

其工作过程为:当客体管理器通过LSM钩子调用LSM模块进行控制判定是,首先在AVC中查找与访问请求相符的AV。如果能命中,则把它传给客体管理器;如果不能命中,则交由安全服务器根据访问控制策略进行判定。安全服务器完成判定后,生成AV结果,并把它交给AVC,进而传给客体管理器。

3)LSM框架的优势

在关键的特定内核数据结构中加入了安全域; 在内核源码中不同的关键点处插入对安全钩子函数的调用; 提供了一个通用的安全系统调用; 提供了注册和注销函数,使得访问控制策略可以以内核模块方式实现;

标签: 安全

本文转载自: https://blog.csdn.net/eldrida1/article/details/129431329
版权归原作者 懒羊羊(学习中) 所有, 如有侵权,请联系我们删除。

“网安概论(四)”的评论:

还没有评论