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. mysql数据库内容相关操作

    第一:介绍 mysql数据内容的操作主要是: INSERT实现数据的插入 UPDATE实现数据的更新 DLETE实现数据的删除 SELECT实现数据的查询. 第二:增(insert) 1.插入完整的数 ...

  2. 【常用指令】git+服务器+数据库

    git日程操作 服务器常用操作 ①同步master git pull origin master ②创建分支 git checkout -b 分支名 ③常规操作 git diff git add 文件 ...

  3. HBuilder git使用-建立仓库,邀请用户

    1.git环境配置好后,在Github上注册好帐号 2. 创建一个Respository(代码仓库) 3.邀请其他小组用户(必须的,要不别人提交不了修改) 4.把邀请链接要COPY给其他用户 5. 其 ...

  4. sqlite3数据库教程

    1.sqlite3安装(命令行): sudo apt-get install sqlite3 2.图形界面查看工具安装: sudo apt-get install sqlitebrowser 3.命令 ...

  5. filter 过滤器 禁止浏览器缓存

    public class BrowserNoCacheFilter implements Filter { public void init(FilterConfig filterconfig) th ...

  6. 安卓开发学习笔记(三):Android Stuidio无法引用Intent来创建对象,出现cannot resolve xxx

    笔者在进行安卓开发时,发现自己的代码语法完全没有问题.尤其是创建intent对象的时候,语法完全是正确的,但是Android Stuidio却显示报错,Intent类显示为红色,如图所示: 代码如下所 ...

  7. vue-cli的跨域设置

    概述 今天打算快速使用vue-cli建立一个小应用用于测试,使用axios发送http请求,但是遇到了跨域问题,总结了一下,供以后开发时参考,相信对其他人也有用. vue-cli的跨域设置 在vue. ...

  8. [Swift]LeetCode836. 矩形重叠 | Rectangle Overlap

    A rectangle is represented as a list [x1, y1, x2, y2], where (x1, y1) are the coordinates of its bot ...

  9. [Swift]LeetCode875. 爱吃香蕉的珂珂 | Koko Eating Bananas

    Koko loves to eat bananas.  There are N piles of bananas, the i-th pile has piles[i]bananas.  The gu ...

  10. js闭包vs Java内部类

    前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类 ...