JobPlus知识库 互联网 网络安全 文章
OS安全机制之访问控制机制

(一)自主访问控制机制:

DAC:Discretionary Access ControlDAC概念:

文件的拥有者可以按照自己的意愿精确指定系统中的其他用户对其文件的访问权。
定义:自主访问控制是基于客体所属用户/组身份,以及需知原则来约束对客体的访问的一种手段。这种控制是自主的意义在于:具有特定访问权限的一个主体能够将该权限(直接或间接地)传递给另一个主体。
一个用户可以自主地说明他所拥有的资源允许系统中哪些用户以何种权限进行共享。从这种意义上讲,是“自主”的。
“自主”也指对其他具有授予某种访问权力的用户能够自主地(可能是间接地)将访问权或访问权的某个子集授予另外的用户。

DAC分类:

基于行的访问控制矩阵信息:连接可访问客体到指定用户。
基于列的访问控制矩阵信息:连接用户列表到指定的客体。

1)基于行的自主存取控制机制:在每个主体上都附加一个该主体可访问的客体的明细表,根据表中信息的不同可分成三种形式: 能力表、前缀表和口令。
①  能力表(capability list)
对于每个用户,系统有一个能力表。要 采用硬件、软件或加密技术对系统的能力表进行保护,防止非法修改 。能力的两个基本属性是: 它们可以从一个访问主体传递给另一个主体,且
未经操作系统TCB的允许,拥有 某些能力 的 访问主体 不能 修改 或者 伪造 任何能力。

②前缀表(profiles)
对每个主体赋予的前缀表,包括 受保护客体名 和 主体对它的访问权限。当主体要访问某客体时,自主存取控制机制将检查主体的前缀是否具有它所请求的访问权。
不足: (1)访问权的撤消 和 客体的删除一般都是比较困难的,因为系统必须能够检测每个主体的前缀;(2)对于一个可访问许多客体的主体,它的前缀量将非常大,很难管理;(3)如果不采用全路径,客体命名必须惟一,否则难以管理。

③口令: password-based access control mechanisms
如果对每个客体,每个主体都拥有它自己独有的口令(类似能力表)
每个客体 都相应地有一个读/写口令 ,主体在对客体进行访问前,必须向操作系统提供该客体的口令。正确,才可以访问该客体。

(2)基于列的自主存取控制机制:在每个客体上都附加一个主体明细表,表示存取控制矩阵。表中的每一项都包括主体的身份和主体对该客体的访问权限。可明确指定特定的用户允许或不允许访问一个特定受保护的客体。
① 拥有者/同组用户/其他用户” 模式:
在UNIX/Linux系统中,实现了一种十分简单、常用而又有效的自主存取控制模式,即在每个文件上附加一段有关存取控制信息的二进制位,比如:Linux系统某个目录的访问模式为:r w _  r _ x  r_ _  或 654,这些二进制位(称为9bit位)反映了不同类别用户的存取权:
Owner(前三位)  此客体的拥有者对它的访问权限;
Group(中间三位) owner同组用户对此客体的访问权限;
Other(最后三位) 其他用户对此客体的访问权限;
缺点: 客体的拥有者不能精确控制某个用户对其个客体的访问权。比如:”不能指定与owner同组的用户A对该客体具有读、写权限,而同组用户B对该客体却没有任何权限。

②ACL和“拥有者/同组用户/其他用户”相结合模式:
方法:仅对“拥有者/同组/其他用户”无法分组的用户使用ACL
优点:保持与原系统的兼容性,且控制粒度细化到单个用户
实现示例:UNIX SVR4.1ES在文件系统中,针对文件的索引结构开发ACL项及相关信息项,使每个文件对应一个ACL。在 IPC 的索引结构中开发ACL项及相关信息项,使每个消息队列、信号量集合、共享存贮区对应一个 ACL
ACL 语义,一个ACL是对应于一个客体的三元组集合,每个三元组称为 ACL的一项,比如: <type, id, perm>   其中,type表示id为用户ID还是用户组ID, perm表示允许id代表的用户对该文件的访问权限。
对 ACL 的操作:用户可以对一个客体对应的ACL进行“授权”、“取消”、“查阅”…比如:linux 2.6以上的setfacl, getfacl, chacl等操作。命令格式: setfacl -m user:testu1:rwx,group:testg1:r file1

(二)客体重用机制:

数据残留:

又称残留信息,是指数据在被以某种形式擦除以后所残留的物理表现,存储介质被擦除后可能留有一些残留物特性使数据能够被重建。文件的删除和创建,可能会在重新分配物理盘块空间时,泄露这些盘块上以前存放的信息,因为删除文件只是简单的将该文件对应的目录索引项(比如结点号、文件名)清楚,而对应该文件的物理盘块上的内存内容依然存在。

客体重用:

包含一个或多个客体的存储介质(例如,页面,磁盘扇区,磁带)的主体的重新分配。通过标准系统机制,为新的主体重新分配时不应含有任何可用的残留数据。

客体重用的使用:

TESEC的四等七级中,从C2到A1都使用了客体重用机制
我国GB17859中第二级到第五级都使用了客体重用机制

补充:GB1785五个等级

第一级:用户自主保护级
第二级:系统审计保护级
第三极:安全标记保护级
第四级:结构化保护级
第五级: 访问验证保护级

TESTC和GB17859对客体重用的要求:

在计算机信息系统可信计算基的空闲存储客体空间中,对客体初始指定、分配、或者再分配一个主体之前,应撤销该客体所含信息的所有授权,当主体得到一个已被释放的客体的访问权时,当前主体不能获得原主体活动所产生的任何信息

(三)安全标记机制:

计算机信息系统可信计算基维护与可被外部主体直接或间接访问到的计算机信息系统资源如主体、存储客体、只读存储器相关的敏感标记,这些标记是实施强制访问控制的基础,为了输入未加安全标记的数据,计算机信心系统可信计算基向授权用户要求并接受这些数据的安全级别,且由计算机信息系统的可信计算基审计。

(四)强制访问控制机制:

MAC,:Mandatory Access Control

在DAC控制下,以某个用户身份运行的程序可以任意地修改该用户所拥有文件的访问控制信息,而操作系统无法区分修改信息的是一个合法用户还是一个木马。尽管系统可以对拥有特权的特定程序修改访问控制信息的能力进行限制,但同时会失去灵活性。实际上,在DAC控制下并没有办法防止木马通过共享客体(shared objects)-比如文件、消息和共享内存等,把消息从一个进程传给另一个进程。MAC可以阻止一些Trojan horses攻击,主要体现在:为每个主体(subjects)和客体(objects)赋予安全属性(security attributes),这些属性不像自主访问控制属性那样可以随意改变。系统通过比较主体和客体的安全属性来决定该主体能否以期望的方式访问该客体。反之,如果系统判定拥有某一安全属性的主体不能访问某个客体,那么任何人(包括客体的拥有者)也不能使它访问该客体。从这种意义上讲,是“强制”的。

两个安全级之间存在的支配关系:

①A支配B,即A的密级不小于B的密级,A的范畴集包含B的范畴集。
②A支配于B,或B支配A,即B的密级不小于A的密级,B的范畴集包含A的范畴集。
③A等于B,即A的密级等于B的密级,A的范畴集等于B的范畴集。
④A、B无关,即A的范畴集不包含B的范畴集,B的范畴集也不包含A的范畴集
File:       {secret: NATO,NUCLEAR},
User1:   {top secret: NATO,NUCLEAR,CRYPTO}
User2:  {top secret: NATO,CRYTPO}
User3:   {confidential: : NATO,NUCLEAR,CRYPTO}

安全级的标识和赋值:

①  主体的安全级:
“主体的安全级 = 以用户身份运行的进程的安全级”
用户安全级范围的初始设置 由系统管理员在创建用户时完成,并保存到一个用户安全文档(例如:修改useradd和usermod命令,增加ia_userinfo命令来查看)在用户登录时,可以指定本次登录shell进程的安全级或缺省安全级,但都必须在用户所指定的安全级范围之内。
②  客体的安全级:
根据客体的类型、按以下规则标识:
“文件、有名管道”的安全级 = 创建进程的安全级,且必须等于其父目录的安全级,保存在相应的磁盘inode结点和内存inode结点中。
“进程、消息队列、信号量集合和共享存储区”的安全级 = 创建进程的安全级,保存在内存相应的数据索引结构中。
“目录”的安全级 = 创建进程的安全级,且必须大于或等于其父目录的安全级,保存在相应的磁盘inode结点和内存inode结点中。
设置客体安全级的命令为setlevel
③  设备的安全级:
系统须在设备安全文件档中说明系统中每个设备的安全属性,如设备的最高安全级、最低安全级等。设备工作时还具有一个当前安全级,为调用该设备的用户进程、系统进程或系统服务进程的安全级,而且必须在设备允许的最高安全级和最低安全级范围之内。
设备分为单级设备和多级设备。

  • 单级设备在某个时刻只能处理单一安全级的数据。这类设备包括终端和用于某个相应状态的磁带机和软盘驱动器。如果一个设备用作一个公用资源,那么它必须是单级设备。
  • 多级设备可以包含多个安全级数据。这个设备只能由具有适当特权的进程打开,这些进程包括内核和系统进程、具有适当特权的管理员进程。磁盘和存储器设备就是多级设备。

通常一个用户在登录时访问一个终端设备,这个用户将以某个安全级在该终端上进入系统。如果这个安全级不在这个终端所定义的安全级范围之内,这个登录就会失败。如果登录成功,这个设备的安全级就被设置成用户登录时所使用的安全级。
要使用磁带或软盘设备,或者不是在登录时访问终端设备,用户必须要求管理员分配(allocate)设备,管理员以某个安全级将此设备分配给这个用户。
如果这个安全级不在设备的安全级范围之内,这个分配将失败。
如果成功,用户就成为这个设备的所有者(owner),设备文件的DAC设置为600,设备安全级为分配时给定的安全级,并且管理员通知用户分配成功。如果用户当前的安全级等于分配的设备安全级,用户就可以任意地使用该设备了。


如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

¥ 打赏支持
6人赞 举报
分享到
用户评价(0)

暂无评价,你也可以发布评价哦:)

扫码APP

扫描使用APP

扫码使用

扫描使用小程序