做网站的微信号,html网站开发目标,网站做代码图像显示不出来的,门户网站建设项目首发公号#xff1a;Rand_cs
前段时间的工作遇到了一些关于 SELinux 的问题#xff0c;初次接触不熟悉此概念#xff0c;导致当时配置策略时束手束脚#xff0c;焦头烂额#xff0c;为此去系统的学习了下 SELinux 的东西。聊 SELinux 之前#xff0c;先来看看什么叫做访…首发公号Rand_cs
前段时间的工作遇到了一些关于 SELinux 的问题初次接触不熟悉此概念导致当时配置策略时束手束脚焦头烂额为此去系统的学习了下 SELinux 的东西。聊 SELinux 之前先来看看什么叫做访问控制。
访问控制模型简介 从上图可知一个访问控制模型包括四个部分
Subject主体访问的发起者通常就是进程Object客体被访问的对象一般是操作系统所管理的资源最常见的就是文件Rules DB规则库/策略定义了主体客体的属性以及主体对客体的访问规则RVM操作系统内实现的验证机制上述访问控制策略的执行者在访问操作过程中根据规则库判断当前操作是否合法
DAC 简介
DACDiscretionary Access Control自主访问控制机制名字听着很陌生但你一定很熟悉就是 Linux 下那套常见的 ugo、rwx 规则。
DAC 主要思想是用户(UID)作为资源的拥有者用户可以决定自身资源的所有访问权限此用户执行的所有程序也默认拥有同样的权限。 DAC 只起到了用户隔离的作用所有 DAC 机制都有一个共同的弱点即无法识别自然人与计算机程序之间最基本的区别。如果一个用户被授权允许访问某资源则意味着此用户执行的所有程序都被授权访问。
However用户或者说用户登录的 shell 进程是可信的绝不等于用户执行的程序shell fork 出来的子进程也是可信的。是程序便可能有漏洞有漏洞便可能被利用一旦被攻击植入代码黑客便可以获取该用户在系统上所有的权力。
另外 DAC 对于权力(rootnon-root)的划分、权限(r, w, x)的划分都不够细致粒度过大不符合最小权限原则。 最小权限原则是指每个程序和系统用户都应该具有完成任务所必需的最小权限集合在计算机科学以及其它领域中它要求计算环境中的特定抽象层的每个模块如进程、用户或者计算机程序等只能访问当下所必需的信息或者资源 SELinux 简介
为此便有了 MACMandatory Access Control强制访问控制机制而 SELinuxSecurity-Enhanced Linux便是其中一种用于在 Linux 操作系统上提供高度的安全性保护。
SELinux 可以解决 DAC 存在的问题其最根本的改变在于资源的拥有者不再决定资源的访问权限被限制的基本单位从用户变为了进程。
MAC 的基本原理是通过给每个主体(进程)客体(文件等)分配一个安全上下文安全标签、标签然后制定策略来限制标签之间的访问也就限制了主体对客体的访问。这是以一种白名单的方式开放权限意味着我们需要明确地规定哪些操作是被允许的而其他所有的操作都将被拒绝。
现在 SELinux 被广泛用于 Android 系统Android 启动的第二阶段便是初始化 SELinux 子系统。一般的 Linux 发行版没有使能 SELinux需要安装相关库、策略文件并修改启动参数来使能 SELinux。比如说 ubuntu 并没有使能 SELinuxubuntu 默认使用另外一种 MACApparmor
SELinux 访问控制示例
此小节简单给出一个 SELinux 的访问控制示例好亲身感受一下 SELinux 到底是如何限制访问的。SELinux 本身又分了多种访问控制模型本文作为开篇先简单介绍其中最常用的一种模型TEType Enforcement 模型。
假设现在有进程 a、b有文件 x、y它们的类型如下所示
a -- proc_a_t
x -- file_x_t策略文件如下所示
allow proc_a_t file_x_t : file read;
// allow subject object : class { perms };上述语句的意思是proc_a_t 类型的进程对类型为 file_x_t 的文件有读权限。SELinux 的策略为白名单机制意思是说proc_a_t 对于 file_x_t 类型的文件只有读权限没有其他权限想要有其他权限必须额外添加策略
SELinux 策略有专属的语法上面的 allow 语句便是其中一种也是用的最多的一条语句其语法为 allow subject_t object_t : class { perms };
allow 表示后面的 主体对客体的访问方式为允许subject_t 表示主体的类型比如上述例子中进程的类型proc_a_tobject_t 表示客体的类型比如说上述例子中文件的类型file_x_tclass 表示客体类别SELinux 中对客体进行了分类常见的有文件、目录等perms 表示权限集合在 allow 语句中表示将要授予的权限不同的客体类别有着不同的权限集合比如说文件客体有读写权限目录客体有搜索权限等等
好了本文就只是先做个简单介绍后面再继续有什么问题欢迎来讨论交流。
首发公号Rand_cs