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的策略语言

selinux基本的更多相关文章

  1. 关闭selinux

    1.查看SELinux状态:getenforce Enforcing(启动) disable(禁用) 1.禁用SELinux(重启后依然生效) 修改 vi /etc/sysconfig/selinux ...

  2. 关闭SELinux和iptables防火墙

    1.关闭SELinux: 编辑SELinux配置文件: [root@Redis selinux]# vim /etc/selinux/config 修改SELINUX配置项为disable SELIN ...

  3. 开发thinkphp的第一步就是给Application目录(不包括其下的文件)777权限, 关闭selinux

    开发thinkphp的时候, 总是会出现各种个样 的奇怪的毛病, 比如: 说什么Application目录不可写, 比如: 说什么 _STORAGE_WRITE_ERROR, 不能生成 Runtime ...

  4. linux系统的初化始配置(包括网络,主机名,关闭firewalld与selinux)

    每次我们使用Linux都会对系统进行初始化的配置,下面我们一一列出来. 1.服务的开启 systemctl enable firewalld.service //将指定的服务设置为开机启动 syste ...

  5. SElinux对一些服务关系的影响

    kerberos 允许系统使用kerberos  setsebool -P allow_kerberos 1 setsebool -P krb5kdc_disable_trans 1 service ...

  6. Centos 7 安装 设置 IP地址,DNS,主机名,防火墙,端口,SELinux (实测+笔记)

    环境: 系统硬件:vmware vsphere (CPU:2*4核,内存2G,双网卡) 系统版本:CentOS-7.0-1406-x86_64-DVD.iso 安装步骤: 1.虚拟系统安装 1.1 使 ...

  7. Linux下开启关闭SeLinux

    SELinux (Security-Enhanced Linux) in Fedora is an implementation of mandatory access control in the ...

  8. 关闭Linux防火墙(iptables) 及 SELinux

    一.关闭防火墙 1.重启后永久性生效: 开启:chkconfig iptables on 关闭:chkconfig iptables off 2.即时生效,重启后失效: 开启:service ipta ...

  9. selinux 导致无法启动httpd

    selinux 导致无法启动httpd ansible_dire:~ # /etc/init.d/httpd restart 停止 httpd: [失败]正在启动 httpd:(13)Permissi ...

  10. Linux selinux iptables

    关闭SELINUX – 使用getenforce命令检查SELINUX状态,若结果不是”Disabled”,可使用setenforce 0命令临时关闭SELINUX.要永久关闭SELINUX,需修改/ ...

随机推荐

  1. Cordova打包vue项目生成Apk (解决cordova build android抛出的zip问题)

    最近对vue前端框架情有独钟.但研究了一下怎么把vue项目打包成android apk来玩玩. 首先讲一下创建vue2.x项目.其实在之前的文章中都有写过,有兴趣的同学可以去看看.http://www ...

  2. MySQL之爱之初体验

    写在前言:本篇博客从mysql的安装开始说起,至于什么是数据库以及数据的由来什么的,不在详谈!!! 第一:mysql安装 linux安装:两种方式 1.apt安装 apt install mysql- ...

  3. BUAA-OO-第一单元总结

    BUAA-OO第一单元博客总结 第一次作业总结 (1)类关系图 第一次作业类图关系简单,仅有一个Poly封装类以及一个Main主类调用Poly,Poly封装类内部完成了包括对象构造,求导,生成字符串的 ...

  4. Android图标

    在线生成安卓App图标.IOS App图标 https://icon.wuruihong.com

  5. Three.js学习笔记05

    场景相关函数和属性 下面的代码中应用到了所有以上的函数及属性: <!DOCTYPE html> <html lang="en"> <head> ...

  6. Linux atop监控

    200 ? "200px" : this.width)!important;} --> 介绍 atop是一个功能非常强大的linux服务器监控工具,它的数据采集主要包括:CP ...

  7. new Date()设置日期在IOS的兼容问题

    一般这样创建一个日期变量 var d = new Date("2017-08-11 12:00:00"); 发现在iOS中不兼容,返回valid Date. IOS中不支持 - 连 ...

  8. [Swift]LeetCode470. 用 Rand7() 实现 Rand10() | Implement Rand10() Using Rand7()

    Given a function rand7 which generates a uniform random integer in the range 1 to 7, write a functio ...

  9. [Swift]LeetCode773. 滑动谜题 | Sliding Puzzle

    On a 2x3 board, there are 5 tiles represented by the integers 1 through 5, and an empty square repre ...

  10. [Swift]LeetCode971.翻转二叉树以匹配先序遍历 | Flip Binary Tree To Match Preorder Traversal

    Given a binary tree with N nodes, each node has a different value from {1, ..., N}. A node in this b ...