SELinux Overview

来源:互联网 发布:中国论文期刊数据库 编辑:程序博客网 时间:2024/06/05 16:34


转自mtk


1. SELinux 来源
 SELinux 即Security-Enhanced Linux, 由美国国家安全局(NSA)发起, Secure Computing Corporation (SCC) 和 MITRE 直接参与开发, 以及很多研究机构(如犹他大学)一起参与的强制性安全审查机制, 该系统最初是作为一款通用访问软件,发布于 2000 年 12 月(代码采用 GPL 许可发布)。并在Linux Kernel 2.6 版本后, 有直接整合进入SELinux, 搭建在Linux Security Module(LSM)基础上, 目前已经成为最受欢迎,使用最广泛的安全方案.
 
2. SELinux 基本架构与原理.
 SELinux 是典型的MAC-Mandatory Access Controls 实现, 对系统中每个对象都生成一个安全上下文(Security Context), 每一个对象访问系统的资源都要进行安全上下文审查。审查的规则包括类型强制检测(type enforcement), 多层安全审查(Multi-Level Security), 以及基于角色的访问控制(RBAC: Role Based Access Control).

 SELinux 搭建在Linux Security Module(LSM)基础上, 关于 LSM 架构的详细描述请参见文章 “Linux Security Modules: General Security Support for the Linux Kernel”, 该文章在 2002 年的 USENIX Security 会议上发表。有完整的实现LSM 的所有hook function.
 SELinux 的整体结构如下图所示:

 
P-1-1-1: 整体流程图 

 SELinux 包含五个基本组成:
 * 用于处理文件系统的辅助模块, 即SELinuxFS.
 * 集成Linux Security Modules 的hooks sets.
 * Security Policy Database.
 * Security Label 验证模块.
 *  Access Vector Cache (AVC), 访问向量缓存,以便提高验证速度.
 
    基本的访问流程如下图所示:
 
 P-1-1-2: 访问流程图
 
 流程如下:
 * 进程通过系统调用(System Call) 访问某个资源, 进入Kernel 后, 先会做基本的检测, 如果异常则直接返回.
 * Linux Kernel DAC 审查, 如果异常则直接返回.
 * 调用Linux Kernel Modules 的相关hooks, 对接到SELinux 的hooks, 进而进行MAC 验证, 如果异常则直接返回.
 * 访问真正的系统资源.
 * 返回用户态, 将结构反馈.

原创粉丝点击