SELinux概述
- 格式:doc
- 大小:266.50 KB
- 文档页数:88
selinux学习理解一、什么是selinux。
selinux全称是security enhanced linux,安全强化linux,是MAC (mandatory access control,强制访问控制系统)的一个实现,目的在于明确的知名某个程序可以访问哪些资源(程序,端口)。
它的用户在于防范0—DAY攻击(利用尚未公开的漏洞实现攻击),所以它不是防火墙和ACL的替代品,功能也不重复。
举例来说,系统上Apache被发现存在一个漏洞,使得远程用户可以访问系统上的敏感文件(比如/etc/passwd),且修复该漏洞的补丁尚未发布,此时selinux可以起到弥补漏洞的方法。
因为/etc/passwd 不具有apache的访问标签,所以Apache对于/etc/passwd的访问会被selinux阻止。
相比其他强制访问系统,selinux有如下访问优势:1.控制策略是可以查询,而非程序比可见的。
2.可以热更改策略,无需或停止服务。
3.可以从程序初始化、继承、执行三个方面,使用策略进行控制。
4.控制范围广,包括:文件系统,目录,文件,文件启动描述符,端口,消息接口,网络接口。
二、了解和配置selinux。
1、获取当前selinux运行状态getenforce:可能返回三种结果Enforcing:记录报警且阻止可疑行为。
Permissive:记录告警,不阻止可以行为。
Disable:关闭selinux。
默认是Enforcing2、改变selinux状态。
setenforce 1|0 1代表Enforcing,0代表Permissive。
此时不需要重启系统就可以实现。
要永久改变selinxu的状态,在/etc/sysconfig/selinux实现。
当从disable切换到enforcing或permissive时,要重启系统并为整个文件系统重新创建安全标签。
3、selinux运行策略。
配置文件/etc/sysconfig/seilnux还包含了selinux运行策略的信息,通过改变SELINUXTYPE值实现,该值有两种可能:targeted代表仅针对预制的几种网络服务和访问请求都要使用selinux。
一、SELinux简介SELinux(Secure Enhanced Linux)安全增强的Linux是由美国国家安全局NSA针对计算机基础结构安全开发的一个全新的Linux安全策略机制。
SELinux可以允许系统管理员更加灵活的来定义安全策略。
SELinux是一个内核级别的安全机制,从Linux2.6内核之后就将SELinux集成在了内核当中,因为SELin ux是内核级别的,所以我们对于其配置文件的修改都是需要重新启动操作系统才能生效的。
现在主流发现的Linux版本里面都集成了SELinux机制,CentOS/RHEL都会默认开启SELinux机制。
二、SELinux基本概念操作系统的安全机制管理对象:进程和系统资源(文件、网络套接字、系统调用等)。
在之前学过的知识当中,Linux操作系统是通过用户和组的概念对系统资源进行限制,每个进程都需要一个用户才能执行。
在SELinux当中针对这两样东西定义了两个基本概念:域(domin)和上下文(context)。
域就是用来对进程进行限制,而上下文就是对系统资源进行限制。
可以通过ps -Z这命令查看当前进程的域的信息,也就是进程的SELinux信息:[root@xiaoluo ~]# ps -ZLABEL PID TTY TIME CMDunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102 3 2503 pts/0 00:00:00 suunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102 3 2511 pts/0 00:00:00 bashunconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c102 3 3503 pts/0 00:00:00 ps通过ls -Z命令查看文件上下文信息,也就是文件的S ELinux信息:[root@xiaoluo ~]# ls -Z-rw-------. rootroot system_u:object_r:admin_home_t:s 0 anaconda-ks.cfgdrwxr-xr-x. rootroot unconfined_u:object_r:admin_ho me_t:s0 Desktop-rw-r--r--+ root root system_u:object_r:admin_home_t: s0 install.log-rw-r--r--. rootroot system_u:object_r:admin_home_t:s 0 install.log.syslog在稍后探讨一下这些字段所代表的含义。
selinux基本工作原理SELinux(Security-Enhanced Linux)是一个在Linux内核中实现的强制访问控制(MAC)系统。
其基本工作原理是通过在系统中强制执行安全策略,对进程的访问和操作进行更为细致和精确的控制,以增强系统的安全性。
以下是SELinux的基本工作原理:1.策略定义:SELinux的工作始于一个称为"策略"的定义。
策略规定了哪些主体(如进程、用户)有权执行哪些操作(如读、写、执行),以及在哪些对象(如文件、目录)上执行这些操作。
策略是由安全策略管理器生成和维护的。
2.标签:SELinux为系统上的每个对象和主体分配唯一的安全标签。
这些标签包含了有关对象和主体的信息,如它们的角色、类型和安全上下文。
标签的引入使得SELinux能够在更细粒度上进行访问控制。
3.强制访问控制:SELinux通过在系统中实施强制访问控制来执行定义的策略。
传统的Linux访问控制是基于自愿访问控制(DAC),而SELinux引入了强制访问控制(MAC)。
这意味着即使用户具有访问某个资源的权限,如果SELinux规则不允许,则该用户也无法访问。
4.安全上下文:SELinux使用安全上下文来定义对象和主体的标签。
安全上下文包括类型(type)、角色(role)和用户(user)。
这些信息在策略中定义,并通过标签与对象和主体相关联。
5.审计日志:SELinux还提供了审计功能,可用于记录系统上发生的安全事件。
审计日志记录包含有关SELinux决策的信息,以及与安全策略违规相关的详细信息。
总体而言,SELinux通过实施强制访问控制和基于安全标签的访问规则,提供了比传统自愿访问控制更为细致和强大的安全性。
这有助于防范各种攻击和提高系统的整体安全性。
selinux详解及配置⽂件selinux详解selinux 的全称是Security Enhance Linux,就是安全加强的Linux。
在Selinux之前root账号能够任意的访问所有⽂档和服务;如果某个⽂件设为777,那么任何⽤户都可以访问甚⾄删除。
这种⽅式称为DAC(主动访问机制),很不安全。
DAC⾃主访问控制:⽤户根据⾃⼰的⽂件权限来决定对⽂件的操作,也就是依据⽂件的own,group,other/r,w,x 权限进⾏限制。
Root有最⾼权限⽆法限制。
r,w,x权限划分太粗糙。
⽆法针对不同的进程实现限制。
Selinux则是基于MAC(强制访问机制),简单的说,就是程序和访问对象上都有⼀个安全标签(即selinux上下⽂)进⾏区分,只有对应的标签才能允许访问,否则即使权限是777,也是不能访问的。
在selinux中,访问控制属性叫做安全上下⽂,所有客体(⽂件、进程间通讯通道、套接字、⽹络主机等)和主体(进程)都有与其关联的安全上下⽂,⼀个安全上下⽂由三部分组成:⽤户(u)、⾓⾊(r)、和类型(t)标识符。
但我们最关注的是第三部分当程序访问资源时,主体程序必须要通过selinux策略内的规则放⾏后,就可以与⽬标资源进⾏安全上下⽂的⽐对,若⽐对失败则⽆法存取⽬标,若⽐对成功则可以开始存取⽬标,最终能否存取⽬标还要与⽂件系统的rwx权限的设定有关,所以启⽤了selinux后出现权限不符的情况时,你就得⼀步⼀步分析可能出现的问题了。
1.selinux状态查看与配置:selinux的配置⽂件位置:/etc/selinux/config,它还有个链接在/etc/sysconfig/selinux.使⽤config⽂件来配置selinux(通过配置⽂件修改selinux的状态属于永久修改,要重启系统才⽣效)[root@localhost ~]# ls /etc/sysconfig/selinux -llrwxrwxrwx. 1 root root 17 Jan 10 19:48 /etc/sysconfig/selinux -> ../selinux/config(1)配置⽂件[root@make_blog ~]# cat /etc/sysconfig/selinux# This file controls the state of SELinux on the system.# SELINUX= can take one of these three values:# enforcing - SELinux security policy is enforced.# permissive - SELinux prints warnings instead of enforcing.# disabled - No SELinux policy is loaded.SELINUX=disabled# SELINUXTYPE= can take one of three two values:# targeted - Targeted processes are protected,# minimum - Modification of targeted policy. Only selected processes are protected.# mls - Multi Level Security protection.SELINUXTYPE=targetedselinux=enforcing#此项定义selinux状态#enforcing-是强制模式系统,它受selinux保护。
SELinux之一:SELinux基本概念及基本配置旺旺知识库SELinux从出现至今,已经走过将近13年历史,然而在Linux相关QQ技术群或者Linux相关论坛,经常有人遇到问题问题都归咎与SELinux,如httpd各项配置都正常,但客户就是无法访问;又比如vsftpd配置均正常,但客户端访问提示无法转换家目录。
于是乎很多人都对SELinux有了极大的偏见,认为SELinux带来的似乎只有麻烦,于是很多人选择在安装系统第一件事就是将SELinux设置为禁用。
不过随着日益增长的 0-day 安全漏洞,SELinux在很多时候给了我们关键的保障。
什么是SELinux?SELinux 全称 Security Enhanced Linux (安全强化 Linux),是美国国家安全局2000年以 GNU GPL 发布,是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)。
强制访问控制系统的用途在于增强系统抵御 0-Day 攻击(利用尚未公开的漏洞实现的攻击行为)的能力。
所以它不是网络防火墙或 ACL 的替代品,在用途上也不重复。
在目前的大多数发行版中,已经默认在内核集成了SELinux。
举例来说,系统上的Apache 被发现存在一个漏洞,使得某远程用户可以访问系统上的敏感文件(比如 /etc/passwd 来获得系统已存在用户) ,而修复该安全漏洞的Apache 更新补丁尚未释出。
此时SELinux 可以起到弥补该漏洞的缓和方案。
因为/etc/passwd 不具有Apache 的访问标签,所以Apache 对于/etc/passwd 的访问会被SELinux 阻止。
相比其他强制性访问控制系统,SELinux 有如下优势:•控制策略是可查询而非程序不可见的。
•可以热更改策略而无需重启或者停止服务。
•可以从进程初始化、继承和程序执行三个方面通过策略进行控制。
selinux_enforcing 内核符号SELinux(Security-Enhanced Linux)是一种在Linux内核中实现的安全机制,它通过强制访问控制(MAC)来限制进程的权限,从而提供更高的系统安全性。
在SELinux中,内核符号`selinux_enforcing`是一个用于控制SELinux强制模式的标志。
SELinux有三种模式:强制模式(enforcing)、警告模式(permissive)和禁用模式(disabled)。
在强制模式下,SELinux 会严格限制进程的权限,只允许其执行经过授权的操作。
在警告模式下,SELinux会记录并报告违反安全策略的操作,但不会阻止它们。
在禁用模式下,SELinux完全关闭,不对进程进行任何限制。
`selinux_enforcing`是一个内核符号,用于表示当前SELinux 的模式。
它的值为1时表示SELinux处于强制模式,为0时表示SELinux处于警告模式或禁用模式。
内核使用这个符号来判断是否需要对进程进行强制访问控制。
当`selinux_enforcing`为1时,内核会根据SELinux的策略对进程进行访问控制,只允许经过授权的操作。
如果进程尝试执行未经授权的操作,内核会拒绝该操作并记录相关信息。
这种模式下,SELinux提供了更高的系统安全性。
当`selinux_enforcing`为0时,内核不会进行强制访问控制,而是将违反安全策略的操作记录下来。
这种模式下,SELinux仍然可以帮助管理员分析系统安全问题,但不会限制进程的权限,因此可能会降低系统的安全性。
要修改`selinux_enforcing`的值,可以通过修改内核参数或者使用SELinux管理工具来实现。
但需要注意的是,修改这个值可能会对系统的安全性产生重大影响,因此在进行修改之前需要仔细评估系统的安全需求和风险。
总结来说,`selinux_enforcing`是一个用于控制SELinux模式的内核符号。
SELinux 是一种强制访问控制(MAC)系统,是Linux 内核的一部分,它通过将安全上下文标签应用到各种资源(如进程、文件、套接字等)来提供更细粒度的安全策略。
它的主要思想是建立一个强制访问控制策略,即只允许明确允许的操作,而禁止所有其他操作,以保护系统和数据安全。
SELinux 的工作原理可以分为以下几个方面:1. 标记系统:SELinux 会为每个对象(如进程、文件、套接字等)提供一个安全上下文标签,该标签包含对象的身份信息、权限信息和其他策略信息。
2. 策略引擎:SElinux 提供了一个策略引擎,用于根据安全上下文标签规则执行访问控制决策,以确定哪些操作是允许的,哪些是禁止的。
3. 访问控制决策:当某个进程对某个对象进行操作时,SELinux 会根据当前操作的安全上下文标签和对象的安全上下文标签,去策略引擎里查找匹配的规则,如果匹配成功则允许操作,否则拒绝访问。
4. 日志记录:SELinux 会将所有访问控制决策信息记录到系统日志中,以便后期审计和分析。
除了上面提到的,SELinux 还有一些其他的原理和特点:1. 强制访问控制(MAC):SELinux 强制访问控制是指只有在用户被授权访问某个资源的情况下才允许访问,而普通的权限控制是基于用户自己的限制和许可来控制访问。
2. 安全上下文:SELinux 使用安全上下文标签来标识每个进程和文件的身份信息、权限信息和其他策略信息。
这些标签是由系统管理员和SELinux 策略引擎共同定义的。
3. 多层安全:SELinux 支持多层安全,可以为不同的用户和应用程序分配不同的安全级别,确保系统各部分之间的完全隔离,并使其更加安全可靠。
4. 可定制性:SELinux 的策略引擎是高度可定制的,可以针对不同的应用场景进行设置,以满足不同的安全需求。
SELinux 是一个复杂而且功能强大的安全模块,它能够在Linux 系统中提供强制访问控制和更细粒度的安全保障,适合需要高度安全性保护的系统和应用程序。
selinux强制访问控制规则SELinux(Security-Enhanced Linux)是一种强制访问控制(Mandatory Access Control)机制,用于在Linux操作系统中实施细粒度的访问控制策略。
它通过对系统资源和进程进行标记和限制,提供了更高级别的安全性。
本文将介绍SELinux强制访问控制规则的基本原理和常见应用。
让我们了解SELinux的基本概念。
SELinux是一个内核级别的安全模块,它与传统的Linux访问控制(例如文件权限)不同,可以实现对进程、文件和设备等资源的细粒度访问控制。
SELinux通过为每个进程和对象分配一个安全上下文(Security Context),并使用安全策略(Policy)对访问进行限制,从而提供了更强大的安全保护。
在SELinux中,强制访问控制规则是通过安全策略定义的。
安全策略是一个包含了一系列规则的数据库,用于描述系统中的对象和主体,并定义了它们之间的访问规则。
每个规则由一个三元组(源上下文、目标上下文和访问类型)组成,用于控制主体对对象的访问。
SELinux的强制访问控制规则是基于最小权限原则的。
也就是说,一个主体只能访问它需要的资源,并且只能以被授权的方式进行访问。
这种最小权限原则可以最大限度地减少系统被攻击的风险,提高系统的安全性。
在SELinux中,每个进程和文件都有一个安全上下文。
安全上下文由一个标签(Label)组成,用于标识其所属的安全域和角色。
安全域定义了对象的访问权限,而角色定义了主体的权限。
通过安全上下文,SELinux可以根据安全策略对进程和文件的访问进行精确控制。
除了安全上下文,SELinux还使用了类型强制(Type Enforcement)和访问向量缩小(Confinement)等技术来增强安全性。
类型强制是指通过为对象和主体分配不同的类型和角色,限制它们之间的相互作用。
访问向量缩小是指将系统中的对象和主体分组,并限制它们之间的访问。
selinux机制原理概述及解释说明1. 引言:1.1 概述:SELinux(Security-Enhanced Linux)是一种用于Linux操作系统的强制访问控制(MAC)安全机制,它通过为每个对象和主体分配唯一的标签,并使用这些标签来管理对系统资源的访问权限,从而提供了更高级别的系统安全性。
SELinux广泛应用于各种Linux发行版中,并成为许多关键部署环境中不可或缺的安全功能。
1.2 文章结构:本文首先对SELinux机制进行概述,包括其基本原理和概念。
然后介绍了安全策略与访问控制在SELinux中扮演的角色,并阐述了标签和标记机制在实现安全性方面的重要性。
接下来,我们将深入了解SELinux的工作原理,包括类型强制访问控制(TE)机制、强制访问控制(MAC)模型与规则引擎等方面。
此外,我们还会提供一些利用SELinux保护系统安全的实例和示例。
在完成对SELinux机制原理和工作原理的详细介绍后,我们将说明如何与Linux 内核集成以及各种实现方式。
这部分将涵盖SELinux在Linux内核中位置、关键组件的介绍,以及如何解决不同发行版和版本之间的差异。
最后,我们会提供一些开启、关闭或配置SELinux策略的方法和技巧指南。
1.3 目的:本文旨在为读者深入了解SELinux机制原理提供一个全面而清晰的解释。
通过详细阐述SELinux的基本概念、工作原理、与Linux内核的集成方式等内容,读者可以更好地理解SELinux对系统安全性的重要性和实际应用。
同时,本文也将帮助读者掌握使用和配置SELinux策略的方法,进一步提升系统的安全性。
2. SELinux机制原理:2.1 SELinux概述:SELinux(Security-Enhanced Linux)是一种强制访问控制(MAC)机制,旨在增强Linux操作系统的安全性。
它通过强制策略来控制进程、文件和网络资源的访问,以及保护系统免受恶意软件和未经授权的访问。
SELinux使用了分级的强制访问控制,是Linux核的重要安全措施。
SELinux的安全策略工具可从oss.tresys./projects下载。
本章分析了SELinux的安全机制,介绍了安全策略配置语言、核策略库的结构,简述了SELinux核模块的实现,还分析了用户空间的客体管理器。
3.1SELinux概述SELinux是安全增强了的Linux,是Security-enhanced Linux的简写,SELinux改进了对核对象和服务的访问控制,改进了对进程初始化、继承和程序执行的访问控制,改进了对文件系统、目录、文件和打开文件描述的访问控制,还改进了对端口、信息和网络接口的访问控制。
早期的Linux核只提供了经典的UNIX自主访问控制(root用户,用户ID,模式位安全机制),以及部分地支持了POSIX.1e标准草案中的capabilities安全机制,这对于Linux系统的安全性是不够的,NSA(the National Security Agency)和SCC(Secure Computing Corporation)共同开发了强大的基于类型加强(Type Enforcement)的强制访问控制(mandatory access control,简称MAC)机制,提供了动态的安全策略机制。
Linux核增加了一个通用的安全访问控制框架,它通过hook函数来控制程序的执行,这个框架就是Linux安全模块(LSM),在LSM上可使用各种安全控制机制(如:Flask机制)来实现对程序的控制。
SELinux应用了类型加强(Type Enforcement,TE)和基于角色访问控制(role-based access control,RBAC)技术。
TE给每个主体(进程)和系统中的客体定义了一个类型,这些类型定义在SELinux的安全策略文件中,以安全标签形式存放在文件本身的扩展属性(extended attributes,简称xattrs)里。
当一个类型与一个进程相关时,这个类型称为域(domain),例如:后台进程httpd的域为httpd_t。
主体(subject)对客体(object)的操作在SELinux中默认下是不允许的,而由策略定义允许的操作。
TE使用主体的域和客体类型从策略文件中查找操作许可。
例如:策略中的一条规则如下:allow httpd_t net_conf_t:file { read getattr lock ioctl };这条规则表示httpd_t域对net_conf_t类型客体的文件有“{}”中所表示的操作权限。
SELinux的访问控制规则存放在安全策略文件中,策略文件分为二进制和源代码文件,源代码以策略配置语言的形式描述,由编程者创建和维护。
源代码经策略配置工具编译后生成二进制文件。
二进制策略被装载到核空间,形成在存中的策略库及缓存,核就可以使用访问控制规则了。
SELinux可以实现非常小颗粒的访问控制,这些细小颗粒的访问控制也造成了安全策略的复杂性。
Linux核的SELinux安全体系由Flask和LSM框架共同组成,LSM是由hook函数组成的安全控制框架,Flask框架将SElinux的策略规则转换成访问控制许可。
在安全策略配置语言中经常用到的名称术语说明如下。
subject 主体,常指一个进程object 客体,常指一个文件object class客体的类permission 许可context上下文user用户role角色type 类型Type Attributes 类型属性Type Enforcement 类型增强dormain 域,它是一个进程的类型source type源类型target type目标类型labeling标识access vector cache (AVC) 访问向量缓存access decision 访问决策3.1.1Linux与SELinux在安全管理上的区别在传统的Linux自由访问控制(Discretionary Access Controls,DAC)之后,SELinux在核中使用强制访问控制机制(MAC)检查允许的操作。
在DAC下,文件客体的所有者提供了客体上的潜在风险控制。
用户可以通过错误配置的chmod命令和一个非期望的访问权限传递,暴露一个文件或目录给一个恶意信任者。
这个用户启动的进程,如:CGI脚本,可在这个用户拥有的文件做任何的操作。
DAC实际上仅有两个主要的用户分类:管理者和非管理者。
为了解决权限分级,它使用了访问控制列表(access control lists,简称ACL),给非管理者用户提供不同的权限。
而root 用户对文件系统有完全自由的控制权。
MAC访问控制框架可以定义所有的进程(称为主体)对系统的其他部分(如:文件、设备、socket、端口和其他进程,它们被称为客体或目标对象)进行操作的权限或许可。
这些许可由进程和客体的安全策略来定义,通过核实现控制。
这种方式可给一个进程仅授予操作所需要的权限,这遵循了最小权限原则。
在MAC下,即使用户用chmod暴露了他们的数据,但进程还是无法修改在策略中没有许可的文件。
DAC和MAC分别使用自己的访问控制属性,两者独立,但都必须通过权限检查。
它们的区别有以下二个:1.在主体的访问控制上:DAC:真实有效的用户和组IDMAC:安全上下文(user:role:type)DAC和MAC的UID是独立的。
2.在客体的访问控制上:DAC:(文件)访问模式(rwx r-x r-x)和用户及组IDMAC:安全上下文(user:role:type)3.1.2Flask安全框架概述1.Flask框架对操作许可的判定过程图3-1描述了Flask框架,图中,一个主体进程对系统中的客体(如:设备文件)进行操作,如:读写文件。
这个操作通过DAC权限检查之后,再进行SELinux的权限检查。
在DAC检查中,主体通过基于ACL常规文件权限获得了对客体的操作许可。
SELinux权限检查的过程如下:策略强制服务器(policy enforcement server)从主体和客体收集安全上下文,并发送安全上下文标签对给安全服务器(security server),安全服务器负责产生策略的决策。
策略强制服务器首先检查AVC,如果AVC有高速缓存的策略决策,它返回决策给策略强制服务器。
如果没有,它转向到安全服务器,安全服务器使用系统初始化期间装载到核的二进制策略作出决策,将决策放到AVC的cache中进行缓存,并将决策返回给策略强制服务器。
如果决策为允许操作,则主体对客体进行操作,否则,操作被禁止,禁止操作信息被记录到log文件,log文件一般为/var/log/messages。
图3-1Flask框架安全服务器产生策略决策的同时,强制服务器处理任务的其他部分。
从这个角度来看,强制服务器部分可以看作客体管理器,客体管理包括用安全上下文件标识客体、管理存中的标签、管理客户端和服务器的标识行为。
2.Flask框架组成说明Flask安全体系结构由客体管理器和安全服务器组成。
客体管理器实施安全策略的判定结果,安全服务器作出安全策略的判定。
Flask安全体系结构提供从安全服务器检索访问、标记和多例化判定的接口。
访问判定指主体对客体操作的一个权限是否得到批准。
标记指分配给一个客体的安全属性标签。
多例化判定指一个特定的请求应该从多例化资源中选取哪一个。
Flask安全体系结构还提供一个访问向量缓存(AVC)模块,该模块允许从客体管理器缓存中直接取出缓存的判定结果,以提高执行速度。
Flask框架的安全服务器的安全策略由四个子策略组成:多级安全(MLS)策略、类型加强(TE)策略、基于标识的访问控制(IBAC)策略和基于角色的访问控制(RBAC)策略。
安全服务器提供的访问判定必须满足每个子策略的要求。
安全服务器定义了一个由类型加强(TE)策略、基于角色的访问控制(RBAC)策略和多级安全(MLS)策略组合成的策略决策系统。
其中,TE和RBAC策略是安全策略的必要部分,MLS策略是可选的,当核配置选项CONFIG_FLASK_MLS打开时,系统提供MLS策略支持。
Flask体系结构为安全标记定义了两个独立于策略的数据类型:安全上下文(context)和安全标识符(SID)。
安全上下文是由可变长字符串表示的安全标记,存在于文件的扩展属性中。
SID是被安全服务器映射到对应安全上下文的整数。
Flask 客体管理器负责将安全标签绑定到客体上、绑定SID到核对象上。
一个安全上下文(或称为标签)由用户ID、角色、类型和可选的MLS分级属性或分类属性组成。
角色仅与进程相关,因而文件安全上下文有一个通用的object_r的角色。
安全服务器仅为安全上下文提供SID。
SELinux系统提供一个与安全服务器相配套的安全策略配置语言,该语言用于对安全服务器中安全策略的配置进行描述。
策略配置语言描述的规则策略存于策略文件中,策略文件源代码由工具编译成二进制策略文件,安全服务器在引导时读取二进制形式策略文件,形成策略库。
3.MLS分级机制MLS(Multi-Level Security)机制给用户提供了可以用不同等级的安全水平来访问系统。
例如:MLS安全分级从低到高为Confidential、Secret、Top Secret和Individuals,不同级别可查看不同的分类信息。
低级别不可查看高级别的文档。
SELinux支持分级保护数据,它使用BLP(Bell-LaPadula Model:BLP)模型,这个模型定义了系统的信息是如何基于粘附在每个主体和客体的标签来进行流动的。
如:在Secret级别的用户可与其他同级别用户共享数据,并能提取来自Confidential级(比Secret级低)的信息。
但在Secret级别的进程不能查看Top Secret级别(比Secret级高)的数据。
它还阻止高级别进程随便给低级别的数据写入信息。
即“不能读较高级别的数据,不能写较低级别的数据”模型。
在多级别系统中,高级别用户不自动获得管理者权限,但它们对计算机上的所有信息可以有访问权。
安全上下文中,主体和客体用安全级别(Security Levels,SL)标识,SL由敏感属性和分类属性组成。
Sensitivity(敏感属性)是安全体系的属性,它将数据等分成不同安全级别,如:“Secret”或“Top Secret”。
Categories(分类属性)是一套非体系的属性,如:“US Only”或“UFO”,表示仅US使用。
分类属性将数据分隔成几个独立的小组,每个小组可归属于不同的用户等。
一个SL必须有一个敏感属性和0个或多个分类属性。