zoukankan      html  css  js  c++  java
  • selinux基本

    TE模型

    主体划分为若干组,称为域
    客体划分为若干组,每个组称为一个类型
     
    DDT(Domain Definition Table,域定义表,二维),表示域和类型的对应访问权限,权限包括读写执行
    一个域通常有多个主体
    一个类型通常有多个客体
     
    DIT(Domain Interaction Table,域交互表)当主体成为客体的时候,用DIT表来实现访问控制。权限包括发信号、创建进程、杀死进程等
     
    缺点:
    1、访问控制权限的配置比较复杂
    2、二维表结构无法反映系统的内在结构
    3、控制策略的定义比较复杂

    DTE模型

    立足于解决TE模型在实际应用中遇到的问题
    • 提供了用于描述安全数学和访问控制配置的高级语言,DTE语言(DTEL)
    • 采用了隐含方式表示文件的安全属性
    假设有如下的DTE语句:type unix_t, specs_t, budget_t, rates_t;
    表示定义四个客体类型,名称分别是unix_t, specs_t, budget_t, rates_t;
     
    DTE的赋值语句把客体和客体类型联系起来,也就是设置客体的类型属性
    客体间的层次关系,可以采用隐含赋值的方式给客体赋类型值,比如,给该目录赋值类型,相当于把该类型赋值给该目录及其下面的所以目录和文件。这就是客体赋值的隐含规则
     
    assign -r -s uinix_t /;
    将/下所有目录和文件赋值为类型unix_t,-r表示递归、-s表示禁止系统在循行期间创建与目录的类型不同的客体
     
    DTEL还定义了域入口点,一个域的入口点是一个可执行程序,执行该可执行程序可以使程序进入到该域中。
     

    SELinux实现的TE模型

    SELinux实现的TE模型对DTE模型进行了扩充
    1、类型的细分,在类型的基础之上增加类别(class)的概念
    2、权限的细化,定义了几十个class,为每个class定义了大量精细的访问控制
     
    SELinux中几个常用的客体类别(class),及其权限
    file:read、write、execute、getattr、create
    dir:read、write、search、rmdir
    process:signal、transition(域的转换)、fork、getattr
    socket:bind、listen、connect、accept
    filesystem:mount、unmount
     
    访问控制方法
    allow是描述访问控制授权的基本方法,语法规则如下:
    allow    source_type    target_type  : object_class    perm_list
    source_type:主体的域
    target_type:客体类型
    object_class:访问权限所针对的客体类别
    perm_list:允许源类型对目标类型的客体类别进行的访问
     
    allow user_d bin_t : file{read、execute、getattr}
    允许user_d域的进程对bin_t类型的普通文件进行读、写、取属性操作
     
    举例:
    3条allow规则的含义
    如果要实现域的转移,则需要以下3条规则:
     

    进程工作域的字段切换

    当满足了以上的三个条件的时候,可以实行进程工作域的切换
    SELinux通过类型切换规则来描述进程工作域的字段切换方法,规则如下:
    type_transition    source_type    target_type    :    process    default_type
    该规则的含义是,当source_type(该字段表示域)的进程执行target_type(表示文件类型)的入口程序的时候,自动把进程的域切换到 default_type(表示域)。
     

    访问判定

    SELinux中,一个权限的判定通过以下的四元组来确定
    source_type    target_type    object_class    perm_list
    perm_list用来做为判定结果,每种权限用一个位表示

    切换判定

    切换判定指给新的主体或新的客体分配新的标签及新的标签该取什么值,给主体和客体分配新的标签就被称为标签切换
    可以使用type_transition规则描述文件的类型切换控制,该规则的描述如下:
    type_transition    source_type    target_type    :    file     default_type
    在source_type域中、target_type类型的目录下创建新文件时,该规则把新文件的类型标签切换为default_type

    客体类型标签的存储

    linux中客体分为临时客体和永久客体
    临时客体的安全属性保存在内存的表结构中
    永久客体如文件和目录,保存在文件系统的扩展属性结构中,系统运行时,SELinux再把文件系统拓展属性中的永久客体的类型标签映射到内存结构的表结构

    SELinux中系统结构设计

    LSM框架是inux内核支持安全拓展的方式,实现是在linux内核的系统调研中安插一系列的钩子,这些钩子安插在linux访问控制之后,实施访问操作之前
     
    在linux中,如果调用open时成功,之后又被撤销了读取权限,进程还是可以读取文件
    但是SELinux在每次操作文件时都会检查权限
     
     
    SELinux的策略语言
  • 相关阅读:
    web全栈第四讲:后端框架express.js初步体验。
    web全栈第三讲:Angular单页面应用
    Web第六讲:HTML基础
    关于命令模式的一点意见
    黑猫白猫读《大话设计模式》
    排序二叉树的实现和我的一个数据结构设计
    《算法与数据结构C语言描述》优先队列
    《算法与数据结构C语言描述》里的农夫过河
    读《算法与数据结构c语言描述》
    《算法与数据结构C语言描述》里的求多项达式值
  • 原文地址:https://www.cnblogs.com/likaiming/p/10360115.html
Copyright © 2011-2022 走看看