IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 智能终端信息安全概念(十):内核安全(2)SElinux -> 正文阅读

[系统运维]智能终端信息安全概念(十):内核安全(2)SElinux

1、SELinux整体架构

1.1 SELinux基本概念

SELinux由NSA发布,之后,Red Hat、Network Associates、Secure Computing Corporation、Tresys Technology以及Trusted Computer Solutions等公司及研究团队都为SELinux的发展做出了重要的贡献。

SELinux本质是一个Linux内核安全模块,可在Linux系统中配置其状态。
SELinux的状态分为3种,即disabled、permissive和enforcing。

  • (1)disabled状态:指在Linux系统中不启用SELinux模块的功能。
  • (2)permissive状态:指在Linux系统中,SELinux模块处于Debug模式,若操作违反策略系统将对违反内容进行记录,但不影响后续操作。
  • (3)enforcing状态:指在Linux系统中,SELinux模块有效,若操作违反策略,SELinux模块将无法继续工作。

(1)主体

主体是访问操作的发起者,是系统中信息流的启动者。主体通常指用户或代表用户意图的进程。

通常,主体是访问的发起者,但有时也会成为访问或受控的对象
一个主体可以向另一个主体授权,一个进程可能会控制几个子进程,这时受控的主体或子进程就是一种客体。

(2)客体

客体相对主体而存在,通常客体是指信息的载体或从其他主体或客体接收信息的实体,即访问对象。

(3)访问控制分类

管理方式的不同形成不同的访问控制方式。

通常,访问控制方式分为两类:自主访问控制(DAC, Discretionary Access Control)和强制访问控制(MAC, Mandatory Access Control)。

(4)域

域决定了系统中进程的访问,所有进程都在域中运行。本质上**,域是一个进程允许的操作列表,决定了一个进程可以对哪些类型进行操作**。SELinux中域的概念相当于标准Linux中uid的概念。

(5)类型

类型与域的概念基本相似,但是,域是相对进程主体的概念,类型是相对目录、文件等客体的概念类型分配给一个客体,并决定哪个主体可以访问该客体。

(6)角色

角色决定了可以使用哪些域。具体哪些角色可以使用哪些域,需要在策略配置文件中预先定义。如果在策略配置文件中定义了某个角色不可以使用某个域,在实际使用中将会被拒绝。

(7)身份

身份属于安全上下文的一部分,身份决定了本质上可以执行哪个域。

(8)安全上下文

安全上下文是对操作涉及的所有部分的属性描述,包括身份、角色、域、类型。

(9)策略

策略是规则的集合,是可以设置的规则。

策略决定一个角色的用户可以访问什么,哪个角色可以进入哪个域,哪个域可以访问哪个类型等。

2、SELinux内核架构

最早期的SELinux是Linux系统一个增强安全的补丁集,其后为解决每个系统对安全的细节控制不尽相同的问题,Linux安全框架(LSM, Linux Security Modules)被提出,使SELinux可作为可加载的安全模块运行。

LSM是一个底层的安全策略框架,Linux系统利用LSM管理所有的系统调用。SELinux通过LSM框架整合到Linux内核中。LSM在Linux内核中的位置如图4-1所示。

在这里插入图片描述
当用户进程执行系统调用时,进程首先遍历Linux内核现有的逻辑寻找和分配资源,进行一些常规的错误检查,然后进行DAC自动访问控制。

进程仅在内核访问内部对象之前,由LSM的钩子询问LSM模块可否访问,LSM模块处理该策略问题并回答可以访问或拒绝访问。

LSM框架主要包括安全服务器、客体管理器和访问向量缓存。LSM模块架构如图4-2所示。

在这里插入图片描述
安全服务器负责策略决定,安全服务器使用的策略通过策略管理接口载入。

客体管理器负责按照安全服务器的策略决定强制执行它管理的资源集。
对于内核,客体管理器可以理解为一个内核子系统,负责创建并管理内核级的客体,包括文件系统、进程管理和System V进程间通信(IPC, Inter-Process Communication)。

访问向量缓存(AVC, Access Vector Cache)提升了访问确认的速度,并为LSM钩子和内核客体管理器提供了SELinux接口。

3、SELinux策略语言

SELinux架构中,对于内核资源,策略通过策略管理接口载入SELinux LSM模块安全服务器中,从而决定访问控制。SELinux的优势是其策略规则不是静态的,用户必须按照安全目标的要求自行编写策略。使用和应用SELinux本质上就是编写和执行策略的过程。

策略在策略源文件中描述。策略源文件名称为policy.conf,其文件结构包括以下几点。

(1)类别许可,指安全服务器的客体类别,对于内核而言,类别直接关系内核源文件,**许可指针对每个客体类别的许可。**通常,SELinux策略编写者不会修改客体的类别和许可定义。

(2)类型强制声明,包括所有的类型声明和所有的TE(Type Enforcement,类型强制)规则,是SELinux策略中最重要的部分。

(3)约束,是TE规则许可范围之外的规则,为TE规则提供必要的限制。多级安全(MLS)是一种约束规则。

(4)资源标记说明,指对所有客体都必须添加的一个“安全上下文”标记,是SELinux实施访问控制的前提。SELinux根据资源标记说明处理文件系统标记以及标记运行时创建的临时客体规则。

SELinux策略大而复杂,由一个个小的策略模块构成。策略模块的生成一般采用源模块法。源模块法支持单策略的开发,并通过一组shell脚本、m4宏和Makefile一起合并成为文本文件。多个策略模块集合组成策略源文件,即policy.conf,策略源文件是文本文件,通过策略编译器checkpolicy编译为二进制文件policy.xx(xx为版本号),并通过策略装载函数security_load_policy载入内核且实施访问控制。

使用源模块构造和载入SELinux策略的全过程如图4-3所示。

在这里插入图片描述
首先,通过源模块法生成一个个策略模块,策略模块聚合形成一个大的策略源文件policy.conf;

其次,策略源文件policy.conf通过策略编译器checkpolicy,生成可被内核读取的二进制文件policy.xx;

最后,policy.xx通过策略装载函数security_load_policy载入内核空间并实施访问控制。

目前,在SELinux策略上常见的是单策略组合。

2、SELinux关键技术

SELinux是基于域—类型模型(domain-type)的安全访问控制策略。对用户权限和进程权限的最小化控制,使受到攻击后即使进程权限或用户权限被夺,仍不会对整个系统造成重大影响,从而保证系统的高安全性。

技术特征上,SELinux从强制访问控制(MAC, Mandatory Access Control)类型强制(TE, Type Enforcement)domain迁移、**基于角色的访问控制(RBAC, Role Base Access Control)**4个方面建立一种加强的安全访问控制策略。

(1)强制访问控制MAC
强制访问控制MAC区别于自主访问控制DAC而存在,强制访问控制MAC基于策略实施对所有客体的访问,这些策略由管理员统一定制,一般用户无更改权限。

(2)类型强制TE
**类型强制TE对每个进程均赋予最小的权限。**类型强制TE的特点是对所有的进程都赋予一个domain的标签,并对所有的文件都赋予一个type的文件类型标签。Domain标签能够执行的操作由AV规则在策略中设定。

(3)domain迁移
domain迁移可防止权限升级,domain迁移的概念可用如下例子很好地说明。
众所周知,SELinux中所有的进程都在域中运行。假设进程A在Domain A内运行,进程B在Domain B内运行。若要使B程序在Domain A中执行,就需要使用domain迁移,否则运行B程序时,其默认继承Domain B。

(4)基于角色的访问控制RBAC
基于角色的访问控制RBAC,可使在SELinux中用户只被赋予最小的权限。在SELinux中,用户被划分成一些role,策略决定哪些role可以执行哪些domain。role可以迁移,但只能按照策略的规定进行迁移。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 12:39:35  更:2022-10-31 12:40:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 3:32:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计