美文网首页
selinux安全机制

selinux安全机制

作者: 赛非斯 | 来源:发表于2021-11-03 18:55 被阅读0次

    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 的整体结构如下图所示:

    [图片上传失败...(image-f1a927-1635329187741)]

    SELinux 包含五个基本组成:

    • 用于处理文件系统的辅助模块, 即SELinuxFS.
    • 集成Linux Security Modules 的hooks sets.
    • Security Policy Database.
    • Security Label 验证模块.
    • Access Vector Cache (AVC), 访问向量缓存,以便提高验证速度.

    基本的访问流程如下图所示:

    [图片上传失败...(image-b1da77-1635329187741)]

    流程如下: * 进程通过系统调用(System Call) 访问某个资源, 进入Kernel 后, 先会做基本的检测, 如果异常则直接返回. * Linux Kernel DAC 审查, 如果异常则直接返回. * 调用Linux Kernel Modules 的相关hooks, 对接到SELinux 的hooks, 进而进行MAC 验证, 如果异常则直接返回. * 访问真正的系统资源. * 返回用户态, 将结构反馈.

    3****、****SELinux and SEAndroid

    Android 是建立在标准的Linux Kernel 基础上, 自然也可以开启SELinux, 通常在通用移动平台上, 很少开启这样的安全服务, Google 为了进一步增强Android 的安全性, 经过长期的准备,目前已经在Android 5.0(L) 上有完整的开启SELinux, 并对SELinux 进行深入整合形成了SEAndroid.从Android N 版本的后续版本Google 都会要求强制性开启SELinux, 以保证手机安全.从Android O 版本后, Google 大幅度的增强了selinux 的限制, 特别是限制System/Vendor 之间的交叉使用, 如VNDK 的权限控制就主要由selinux 来控制.总体来说, Selinux 在android 上的使用过程是一个从具体启用, 到整体启用, 从粗粒度限制, 到精细控制的过程.SELinux 给Android 带来的影响: * 严格限制了ROOT 权限, 以往ROOT “无法无天” 的情况将得到极大的改善.

    • 通过SELinux 保护, 降低系统关键进程受攻击的风险, 普通进程将没有权限直接连接 到系统关键进程.
    • 进一步强化APP 的沙箱机制, 确保APP 难以做出异常行为或者攻击行为.
    • 将改变APP 一旦安装, 权限就已经顶死的历史, APP 权限动态调整将成为可能.

    4、SELinux Mode

    SELinux 分成两种模式, 即Permissve Mode(宽容模式), 和 Enfocing mode(强制模式). Permissive Mode 只通过Kernel Audit System 记录LOG, 但不真正拦截访问.Enforcing Mode 在记录LOG 的同时,还会真正的拦截访问.通常在调试时,我们会启用Permissive Mode, 以便尽可能的发现多的问题, 然后一次修正. 在真正量产时使用Enforcing mode, 来保护系统.

    5****、Core SELinux Components

    SELinux 的核心组件可以参考下面的图:

    [图片上传失败...(image-d85995-1635329187741)]

    • Subject 通常是指触发访问行为的对象, 在Linux 里面通常是一个进程(Process). * Object Manager 即是对象访问管理器, 即可以知道Subject 需要访问哪些资源,并且触发验证机制 * Security Server 即安全服务器, 用来验证某个Subject 是否可以真正的访问某个Object, 而这个验证机制是基于定义好的Security Policy. * Security Policy 是一种描述SELinux Policy 的语言. * Access Vector Cache (AVC) 是访问缓存, 用来记录以往的访问验证情况, 以便提供效率,快速处理.

    6****、Security Context****

    SELinux 给Linux 的所有对象都分配一个安全上下文(Security Context), 描述成一个标准的字符串。 两种类型 * Subject 主体, linux通常以进程为单位 * Object 访问对象, linux 通常以文件为单位

    标准格式 user:role:type[:range]

    • User: 用户, 非Linux UID。 * Role: 角色,一个user可以属于多个role,不同的role具有不同的权限。它是SELinux中一种比较高层次,更方便的权限管理思路,即Role Based Access Control(基于角色的访问控制,简称为RBAC, SELinux 不推荐使用)。 * Type: Subject或者Object的类型。 MAC的基础管理思路其实不是针对上面的RBAC,而是所谓的Type Enforcement Access Control(简称TEAC,一般用TE表示)。对进程来说,Type就是Domain。 * Range: Multi-Level Security(MLS)的级别。MLS将系统的进程和文件进行了分级,不同级别的资源需要对应级别的进程才能访问。

    相关文章

      网友评论

          本文标题:selinux安全机制

          本文链接:https://www.haomeiwen.com/subject/moupaltx.html