SELINUX、Security Access Control Strategy && Method And Technology Research - 安全访问控制策略及其方法技术研究

cataloghtml

0. 引言
1. 访问控制策略
2. 访问控制方法、实现技术
3. SELINUX 

 

0. 引言mysql

访问控制是网络安全防范和客户端安全防护的主要策略,它的主要任务是保证资源不被非法使用、保证网络/客户端安全最重要的核心策略之一。访问控制包括linux

1. 入网访问控制
2. 网络权限控制
3. 目录级控制
4. 属性控制等多种手段

访问控制相关领域知识是CISSP的重要章节,本文将重点讨论访问控制模型、及其相关的方法和技术程序员

0x0: 访问控制概念组成sql

访问控制涉及到三个基本概念数据库

1. 主体
是一个主动的实体,它包括
    1) 用户
    2) 用户组
    3) 终端
    4) 主机
    5) 应用
主体能够访问客体

2. 客体
是一个被动的实体,对客体的访问要受控。它能够是
    1) 字节
    2) 字段
    3) 记录、
    4) 程序
    5) 文件
    6) 处理器
    7) 存贮器
    8) 网络接点等 

3. 访问受权 
指主体访问客体的容许,受权访问对每一对主体和客体来讲是给定的。例如受权访问有
    1) 读写: 读写客体是直接进行的
    2) 执行: 执行是搜索文件、执行文件
对用户的访问受权是由系统的安全策略决定的  

在—个访问控制系统中,区别主体与客体很重要。首先由主体发起访问客体的操做,该操做根据系统的受权或被容许或被拒绝。另外,主体与客体的关系是相对的,当一个主体受到另外一主体的访问,成为访问目标时,该主体便成为了客体编程

0x1: 入网访问控制windows

入网访问控制为网络访问提供了第一层访问控制。它控制哪些用户可以登陆到服务器并获取网络资源,控制准许用户入网的时间和准许他们在哪台工做站入网。用户的入网访问控制可分为三个步骤数组

1. 用户名的识别与验证
//用户还可采用一次性用户口令,也可用便携式验证器(如智能卡)来验证用户的身份
2. 用户口令的识别与验证
//对网络用户的用户名和口令进行验证是防止非法访问的第一道防线。为保证口令的安全性,用户口令不能显示在显示屏上,口令长度应很多于6个字符,口令字符最好是数字、字母和其余字符的混合,用户口令必须通过加密
3. 用户帐号的缺省限制检查
//网络管理员能够控制和限制普通用户的帐号使用、访问网络的时间和方式,三道关卡中只要任何一关未过,该用户便不能进入该网络

0x2: 权限控制安全

网络的权限控制是针对网络非法操做所提出的一种安全保护措施。用户和用户组被赋予必定的权限。网络控制用户和用户组能够访问哪些目录、子目录、文件和其余资源

0x3: 目录级安全控制

网络应容许控制用户对目录、文件、设备的访问。用户在目录一级指定的权限对全部文件和子目录有效,用户还可进一步指定对目录下的子目录和文件的权限。对目录和文件的访问权限通常有八种

1. 系统管理员权限(最高root权限)
2. 读权限
3. 写权限
4. 建立权限
5. 删除权限
6. 修改权限
7. 文件查找权限
8. 访问控制权限

用户对文件或目标的有效权限取决于如下两个因素

1. 用户的受托者指派
2. 用户所在组的受托者指派、继承权限屏蔽取消的用户权限

一个网络管理员应当为用户指定适当的访问权限,这些访问权限控制着用户对服务器的访问。八种访问权限的有效组合可让用户有效地完成工做,同时又能有效地控制用户对服务器资源的访问,从而增强了网络和服务器的安全性

0x4: 属性安全控制

网络系统管理员应给文件、目录等指定访问属性。属性安全在权限安全的基础上提供更进一步的安全性。网络上的资源都应预先标出一组安全属性。用户对网络资源的访问权限对应一张访问控制表,描述用户对网络资源的访问能力。属性设置能够覆盖已经指定的任何受托者指派和有效权限。属性每每能控制如下几个方面的权限

1. 向某个文件写数据
2. 拷贝一个文件
3. 删除目录或文件
4. 查看目录和文件
5. 执行文件
6. 隐含文件
7. 共享
8. 系统属性等

0x5: 服务器安全控制

网络容许在服务器控制台上执行一系列操做。用户使用控制台能够装载和卸载模块,能够安装和删除软件等操做。网络服务器的安全控制包括

1. 设置口令锁定服务器控制台,以防止非法用户修改、删除重要信息或破坏数据
2. 设定服务器登陆时间限制、非法访问者检测和关闭的时间间隔 

Relevant Link:

http://www.baike.com/wiki/%E8%AE%BF%E9%97%AE%E6%8E%A7%E5%88%B6
http://staff.ustc.edu.cn/~sycheng/cs/lectures/chap08_Bell-LaPadula_Model.pdf

 

1. 访问控制策略

访问控制模型(Access Control Model)描述了主体访问客体的一种框架,它经过访问控制技术和安全机制来实现模型的规则和目标,主要的访问控制模型有如下几种

1. 自主访问控制(Discretionary Access Control DAC)
2. 强制访问控制(Mandatory Access Control MAC)
3. 基于角色的访问控制(Ro1e-Based Access Control RBAC)
4. Bell-Lapadula安全模型
5. Biba安全模型
//每一种模型都采用不一样的方法来控制主体如何访问客体,都有其优缺点

这些模型内置在不一样操做系统核心或内核,以及为操做系统提供支持的应用程序中,对于每个访问尝试,在主体可以与客体进行通讯以前,安全内核会对访问控制模型的规则进行审核,以决定是否容许该访问请求

0x1. 自主访问控制(Discretionary Access Control DAC)

是否容许访问某个资源取决于资源自己

若是用户建立了一个文件,则他是这个文件的拥有者,文件头中包含了用户的标识符,这种全部权也能够赋予一群特定的个体。使用自主型访问控制(discretionary access control dac)的系统,可让资源的拥有者指定哪些主体能够访问该资源,是从资源自身的角度出发的,故称为"自主型",对访问的控制是由资源拥有者自主决定的
在DAC模型中,访问根据授予用户的权限来进行限制,这意味着客体(资源)的拥有者有权指定对这些客体的访问类型,若是一个系统采用了DAC模型,那么系统管理员可让资源的拥有者控制哪些人能够访问它们的文件
DAC模型中最多见的实现方式是访问控制列表(ACL),这个列表由客体的全部者只i的那个,由操做系统强制实施
咱们使用的大多数操做系统都是基于自主型访问控制模型的,都是用ACL实现DAC模型的实例
DAC可适用于目录树结构及其包含的文件,计算机领域采用的访问权限包括

1. 不能访问
2. 读(r)
3. 写(w)
4. 执行(x)
5. 删除(d)
6. 更改(c)
7. 彻底控制
//在Linux、windows上的具体实现中会有微小差异

DAC系统根据主体的身份来许可或拒绝访问,身份能够为用户身份或组成员
0x2. 强制访问控制(Mandatory Access Control MAC)

在强制型访问(mandatory access control mac)模型中,用户和数据的全部者没有决定谁能访问这些文件的权利,这应该是由操做系统最后作出的决定,而且可能会覆盖用户的设置,这种模型更为结构化并更加严格,通常基于"安全标签系统"来实现,用户被赋予一个安全级别(秘密、机密、绝密等),而且数据被分红了多个类别,这种级别和分类存储在资源的安全标签中
分类标签被绑定到某个主体或客体上,当系统接到一个客体访问请求时,操做系统根据主体的安全级别和客体的安全类别来做出决策,主体如何访问数据的规则由管理层制定、配置、管理,由操做系统来进行实施,由安全技术支持
安全标签和各个客体附在一块儿,原则上每个文件、目录、设备都有其本身的安全标签以及分类信息,一个用户可能具备秘密(secret)的访问级别,他要访问的数据具备绝密(top secret)的安全标签,这种状况下用户会被拒绝访问,由于它的安全级别不等于或低于客体的安全类别

任什么时候候,每一个主体和客体都必须有一个带有属性的相关联标签,由于这是操做系统访问决定标准的一部分,每一个主体和客体并不须要惟一性的标签,但它们在逻辑上必须相互关联,例如服务器上的全部主体和客体能够共享相同的秘密访问许可和分级

这种模型主要用在信息分类和机密性要求很是高的环境中,例如军队,只有一些专门开发的UNIX系统支持MAC模型,最多见的MAC系统是SELINUX

1. 敏感度标签

采用MAC模型时,每个主体和客体必须有一个敏感性标签,也称为安全标签,他包含

1. 一个级别: 级别表示了敏感级别,级别具备一个层次结构,一个级别可能比另外一个级别更受信任
    1) 在一个军事环境中,信息按安全级别能够分为绝密(top secret)、秘密(secret)、机密(confidential)、未分类(unclassified)
    2) 在一个商业机构中,信息按安全级别能够分为机密(confidential)、私有(proprietary)、公司(corporate)、敏感(sensitive)
对信息级别的定义由组织本身负责,而且只在公司内部有意义

2. 不一样的类别: 类别则用于强调须知规则,类别没有层次,由于它们表明系统中不一样域内的信息
标签的类别部分用来实施须知规则,一个具备绝密级别的用户并不意味着他能够访问全部绝密的信息 

在MAC模型中,系统经过比较主体和客体的安全标签来作出访问决策(相似查表的过程),可是在DAC模型中,系统须要比较主体的安全令牌(访问权限)和资源的ACL来决定
0x3. 基于角色的访问控制(Ro1e-Based Access Control RBAC)

基于角色的访问控制(role-based access control rbac)也称做非自主型访问控制,它使用"集中管理"的控制方式来决定主体和客体如何交互,这种模型容许用户基于他所处的角色来访问资源
在UNIX/LINUX POSIX标准采用的访问控制管理以DAC模型为基础,它在角色层使用ACL指定访问控制,即DAC+RBAC组合的模式,使用更粗的角色粒度来分配客体(资源)的访问权限
在RBAC模型中,某个角色会根据该角色所执行的操做和任务来定义

角色的引入也引入了显式受权和隐式受权的不一样
1. 若是权限是显式分配的,那么这种权限是分配给特定的我的的: DAC
2. 若是这些权限是分配给一个角色或用户则的,则用户能自动继承角色的属性: RBAC

RBAC模型是员工流动性较高的组织最适合的访问控制系统,或者进一步说更适合在文件常常变更的文件系统上部署DAC+RBAC模型的ACL检查

1. 核心RBAC

这个组件将整合到每个RBAC模型中,由于它是这个模型的基础。用户、角色、许可、操做、会话应根据安全策略进行定义并相互对应

1. 用户与权限之间存在多对多n:n的关系
2. 会话是某个用户与少数几个角色之间的对应关系
3. 提供传统但稳健的基于群组的访问控制

许多用户可能属于多个组,并拥有每一个组所享有的各类权限,当用户登陆时(这是一个会话),该用户所分配到的各类角色和组将当即对这个用户生效,即得到这些组的权限
这种模型提供了稳健的选择,由于它在作出访问决策时可以包括其余组件,而不是仅仅根据一组证书作出决策,还能够配置RBAC包含时间、角色位置、星期等方面,这意味着不只用户ID和证书,其余信息也可用于作出访问决策
2. 层级RBAC

这个组件容许管理员创建一个组织RBAC模型,将某个环境中的组织结构和功能描述对应起来,造成了一个层次关系

1. 角色关系定义了用户成员与权限继承,全部层级是其余角色的权限和许可的累加
2. 反映组织结构和功能描述
3. 两种类型的层级
    1) 有限层级: 只容许一个层级(角色1继承角色2的权限,没有其余角色)
    2) 普通层级: 容许多个层级(角色1同时继承角色二、角色3的许可)

层级是一种划分角色结构并反映结构的受权和责任的天然方法,橘色层级(role hierarchy)定义角色之间的继承关系,这个模型提供两种不一样类型的责任分割

1. RBAC中的静态责任分割(SSD)关系: 这种责任分割经过限制组合各类权限来防止欺诈
2. RBAC中的动态责任分割(SSD)关系: 这种责任分割经过限制各类可在任何会话中激活的权限来防止欺诈

基于角色的访问控制可经过如下方法进行管理

1. 非RBAC方法: 用户直接对应用程序对应起来,不使用角色
2. 有限的RBAC方法: 用户与多个角色相互对应起来,并直接与其余类型的没有基于角色访问功能的应用对应起来
3. 混合型RBAC: 用户与多个应用程序角色对应,仅分配给这些角色选定的权限
4. 彻底的RBAC方法: 用户与企业角色相互对应

0x4. Bell-Lapadula安全模型

Bell-lapadula是20世纪70年代,美国军方提出的用于解决分时系统的信息安全和保密问题,该模型主要用于防止保密信息被未受权的主体访问
使用Bell-lapadula模型的系统会对系统的用户(主体)和数据(客体)作相应的安全标记,所以这种系统又被称为多级安全系统(相似MAC模型),级别和模型用于限制主体对客体的访问操做,该模型用于增强访问控制的信息保密性
Bell-lapadula使用主体,客体,访问操做(读、写、读/写)以及安全级别这些概念,当主体和客体位于不一样的安全级别时,主体对客体就存在必定的访问限制。实现该模型后,它能保证信息不被不安全的主体所访问
Bell-lapadula有三条强制的访问规则

1. 简单安全规则(simple security rule): 简单安全规则表示低安全级别的主体不能从高安全级别客体读取数据
2. 星属性安全规则(star property): 星属性安全规则表示高安全级别的主体不能对低安全级别的客体写数据
//它们都是从防止信息泄漏的角度出发的
3. 强星属性安全规则(strong star property): 强星属性安全规则表示一个主体能够对相同安全级别的客体进行读和写操做

值得注意的是,全部的MAC系统都是基于BELL-LAPADULA模型,由于它容许在代码里面整合多级安全规则,主体和客体会被设置安全级别(在MAC模型中被称为安全标签),当主体试图访问一个客体,系统比较主体和客体的安全级别,而后在模型里检查操做是否合法和安全。下图是对bell-lapadula模型的简要描述

1. 当安全级别为Secret的主体访问安全级别为Top Secret的客体时,简单安全规则(simple security rule)生效,此时主体对客体可写不可读(no read up) 
2. 当安全级别为Secret的主体访问安全级别为Secret的客体时,强星属性安全规则(strong star property)生效,此时主体对客体可写可读 
3. 当安全级别为Secret的主体访问安全级别为Confidential的客体时,星属性安全规则( star property)生效,此时主体对客体可读不可写(no write down) 

0x5. Biba安全模型

Biba模型是在bell-lapadula模型以后开发的,它跟bell-lapadula模型很类似,被用于解决应用程序数据的完整性问题

1. Bell-lapadula使用安全级别(top secret、secret、sensitive等),这些安全级别用于保证敏感信息只被受权的个体所访问
2. Biba模型不关心信息保密性的安全级别,所以它的访问控制不是创建在安全级别上,而是创建在完整性级别上 

若是布署正确的话,Biba模型可以防止数据从低完整性级别流向高完整性级别,跟Bell-lapadula同样,Biba模型也有三条规则提供这种保护

1. 星完整性规则(*-integrity axiom): 星完整性规则表示完整性级别低的主体不能对完整性级别高的客体写数据,即破坏高等级的完整性
星完整性规则(*-integrity axiom)强调主体如何修改(写)客体

2. 简单完整性规则(simple integrity axiom): 简单完整性规则表示完整性级别高的主体不能从完整性级别低的客体读取数据
简单完整性规则(simple integrity axiom)强调主体如何从客体进行读操做

3. 恳求属性规则(invocation property): 恳求属性规则表示一个完整性级别低的主体不能从级别高的客体调用程序或服务
而恳求属性完整性规则(invocation property)则强调一个主体如何跟另一个客体(能够是另一个主体)进行通讯并对其进行初始化,例如:一个主体能够经过它的进程发送一个请求消息调用另一个客体的执行程序,从而完成某项任务。在Biba模型里,主体只容许去调用低完整性客体的程序或服务,反之则禁止。这就保证低完整性的主体不会去调用某个高完整性客体的清除工具清除该客体的数据
//Linux中的sudo命令就是一种恳求属性规则的应用

下图是对Biba模型的简要描述

1. 当完整性级别为Medium Integrity的主体访问完整性级别为High Integrity的客体时,星完整性规则(*-integrity axiom)和恳求完整性规则(invocation property)生效,此时主体对客体可读不可写(no write up),也不能调用主体的任何程序和服务;
2. 当完整性级别为Medium Integrity的主体访问完整性级别为Medium Integrity的客体时,此时主体对客体可写可读 
3. 当完整性级别为Medium Integrity的主体访问完整性级别为Low Integrity的客体时,简单完整性规则(simple integrity axiom)生效,此时主体对客体可写不可读(no read down) 

Relevant Link:

http://wenda.tianya.cn/question/494ef8f320019d38
http://214994.blog.51cto.com/204994/578099

 

2. 访问控制方法、实现技术

一旦一个组织决定了采用什么样的访问控制模型,那么就须要进一步肯定可以支持该模型的方法和技术,咱们接下来具体讨论访问控制模型对应的实现技术
下面是三种不一样的访问控制模型的主要特色

1. DAC: 数据的拥有者决定谁能访问该资源,访问控制列表用于执行安全策略
2. MAC: 操做系统经过使用安全标签来执行系统安全策略
3. RBAC: 访问决策基于主体的角色和功能的位置

0x1: 基于规则的访问控制

基于规则的访问控制使用特定的规则来规定主体与客体之间能够作什么,不能够作什么,它基于"若是X则Y"这样简单的编程规则,能够为针对资源自己提供更加细化的访问控制,下面是一个基于规则的例子

电子邮件的附件大小不得大于5MB,这一规则适用于全部用户,并不单独针对某个用户,若是将基于规则改成基于身份,则会形成很大的混乱和冗余
//基于规则的访问控制经过制定一个适用于全部用户的规则,不管它是什么身份,从而简化了规则制定

基于规则的访问控制容许开发者详细定义各类特殊情形,规定在这些情形中,主体是否可以访问客体,以及在访问获得许可后主体可以执行的操做。基于规则的访问控制典型地用在MAC系统中,做为MAC系统提供的一种复杂访问规则实施机制
同时,基于规则的访问控制也用在其余类型的系统和应用程序中,例如入侵检测、内容过滤使用"若是-则(if-then)"编程语言,将数据或某种活动与一组规则进行比较,许多路由器和防火墙使用规则决定容许或拒绝哪些类型的数据包访问网络,基于规则的访问控制是一种强制型控制,这些规则由管理员制定
0x2: 限制性的用户接口

限制性的用户接口经过不容许提供提交某些功能、信息、或访问某些系统资源的请求来限制用户的访问能力,有如下几种典型的限制性接口

1. 菜单和命令
    1) 当使用菜单和命令限制时,用户只被给与它们可以执行的命令选项
    2) 命令解释器是一个系统的虚拟环境,若是采用了限制性命令,那么命令解释器就只包含管理员但愿用户能运行的命令

2. 数据库视图
3. 物理限制接口
物理性的用户接口限制能够在键盘上提供一个特殊的键或在屏幕上提供触摸按钮,ATM提款机就是这种设计思想,这种装置有一个操做系统,他可以接收全部的命令和设置,可是咱们在物理上受限不能执行这些功能,咱们只能按键来进行提款、查询、结算、存款操做

4. Linux namespace、cgroup隔离
5. Linux chroot隔离
6. WEB系统中根据不一样用户身份显示不一样的功能界面

0x3: 访问控制矩阵

访问控制矩阵是一个包含有主体和客体的表,它规定每个主体对每个客体所能执行的操做,矩阵是一个数据结构,它用于程序员进行表查询以供操做系统进行调用

这种类型的访问控制通常都具备DAC模型的特征,访问权限能够直接分配给主体(访问能力)或客体(访问控制列表),LINUX POSIX ACL典型地就是这种设计思想
0x4: 访问能力表

访问能力表给出了某些特定的主体对一些肯定的客体进行操做的访问权限,访问能力表和访问控制列表是彻底不一样的,这是由于主体被绑定在访问能力表中,而客体被绑定在访问控制表中,即它们出发点是不一样的

1. 访问控制表: 从客体的角度出发
2. 访问能力表: 从主体的角度出发

一个基于访问能力的系统就是Kerberos,在这个系统中,Kerberos先给用户提供一个票证,这个票证就是一个访问能力表,将这个票证和用户绑定在一块儿,上面标明了用户能够访问哪些客体以及可以访问到什么程度

1. 访问能力能够为令牌、票证、或密钥,若是主体提供一个能力组件,操做系统(或应用程序)将审查该能力组件中的访问权限,并只容许主体执行这些功能。能力组件是一种数据结构,其中包含一个惟一客体标识,以及主体对该客体的访问权限
2. 客体能够为文件、数组、内存段、或端口。每个用户、进程和应用程序在访问能力系统中都有本身的一组能力

0x5: 访问控制列表

访问控制列表(access control list acl)用于不一样的操做系统、应用程序和路由器配置中,它们是一些主体被受权访问一个特定的客体的权限列表,列表定义了受权的程度,受权能够具体到一个个体或组
访问控制列表给出了访问控制矩阵中和客体有关的内容,其中访问能力表对应的是访问控制矩阵中的行,而访问控制列表是对应的访问控制矩阵中的一列


0x6: 基于内容的访问控制

在基于内容的访问控制中,对客体的访问主要取决于客体的内容,例如snort等NIDS都是基于内容的访问控制
0x7: 基于情形的访问控制

与基于内容的访问控制不一样,基于情形的访问控制根据一组信息的情形,而不是信息自己的敏感性作出访问决定,使用基于情形的访问控制的系统先"审计状况"(经常表现为一个行为序列),再作出决定,例如基于状态的防火墙须要了解协议通讯的全部步骤,了解一个会话任务的必要步骤,这就是基于情形访问控制的一个实例
经过将监控到的行为序列和预约义的规范行为序列进行比较,来判断当前会话是否处于异常状态

Relevant Link:

《CISSP认证考试指南》

 

3. SELINUX

SELinux(Secure Enhanced Linux)安全加强的Linux是由美国国家安全局NSA针对计算机基础结构安全开发的一个全新的Linux安全策略机制。SELinux能够容许系统管理员更加灵活的来定义安全策略。SELinux是一个内核级别的安全机制,从Linux2.6内核以后就将SELinux集成在了内核当中,由于SELinux是内核级别的,因此咱们对于其配置文件的修改都是须要从新启动操做系统才能生效的。如今主流发现的Linux版本里面都集成了SELinux机制,CentOS/RHEL都会默认开启SELinux机制

0x1: SELinux基本概念

咱们知道,操做系统的安全机制其实就是对两样东西作出限制: 进程和系统资源(文件、网络套接字、系统调用等),Linux操做系统是经过用户和组的概念来对咱们的系统资源进行限制,咱们知道每一个进程都须要一个用户才能执行
在SELinux当中针对这两样东西定义了两个基本概念

1. 域(domin): 域就是用来对进行进行限制 
咱们能够经过 ps -Z 这命令来查看当前进程的域的信息,也就是进程的SELinux信息 
[root@xiaoluo ~]# ps -Z
LABEL                             PID TTY          TIME CMD
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2503 pts/0 00:00:00 su
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 2511 pts/0 00:00:00 bash
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 3503 pts/0 00:00:00 ps

2. 上下文(context): 上下文就是对系统资源进行限制
经过 ls -Z 命令咱们能够查看文件上下文信息,也就是文件的SELinux信息 
[root@xiaoluo ~]# ls -Z
-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop
-rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

0x2: 策略

在SELinux中,咱们是经过定义策略来控制哪些域能够访问哪些上下文。在SELinux中,预置了多种的策略模式,咱们一般都不须要本身去定义策略,除非是咱们本身须要对一些服务或者程序进行保护
在CentOS/RHEL中,其默认使用的是目标(target)策略,目标策略定义了只有目标进程受到SELinux限制,非目标进程就不会受到SELinux限制,一般咱们的网络应用程序都是目标进程,好比httpd、mysqld,dhcpd等等这些网络应用程序
咱们的CentOS的SELinux配置文件是存放在 /etc/sysconfig/ 目录下的 selinux 文件,咱们能够查看一下里面的内容

[root@xiaoluo ~]# 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=enforcing
# SELINUXTYPE= can take one of these two values:
#     targeted - Targeted processes are protected,
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted   // 咱们的CentOS使用的策略就是目标策略

0x3: SELinux模式

SELinux的工做模式一共有三种

1. enforcing(强制模式): 只要是违反策略的行动都会被禁止,并做为内核信息记录
2. permissive(容许模式): 违反策略的行动不会被禁止,可是会提示警告信息
3. disabled(禁用模式): 禁用SELinux,与不带SELinux系统是同样的,一般状况下咱们在不怎么了解SELinux时,将模式设置成disabled,这样在访问一些网络应用时就不会出问题了 

咱们能够经过 ls -Z 这个命令来查看咱们文件的上下文信息,也就是SELinux信息,咱们发现其比传统的 ls 命令多出来了 system_u:object_r:admin_home_t:s0 这个东西,咱们如今就来分析一下这段语句所表明的含义

[root@xiaoluo ~]# ls -Z

-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg
drwxr-xr-x. root root unconfined_u:object_r:admin_home_t:s0 Desktop
-rw-r--r--+ root root system_u:object_r:admin_home_t:s0 install.log
-rw-r--r--. root root system_u:object_r:admin_home_t:s0 install.log.syslog

system_u:object_r:admin_home_t:s0
这条语句经过:划分红了四段,第一段 system_u 表明的是用户,第二段 object_r 表示的是角色,第三段是SELinux中最重要的信息,admin_home 表示的是类型,最后一段 s0 是跟MLS、MCS相关的东西,暂时不须要管
1. system_u: 指的是SElinux用户
    1) root表示root帐户身份
    2) user_u表示普通用户无特权用户
    3) system_u表示系统进程
经过用户能够确认身份类型,通常搭配角色使用。身份和不一样的角色搭配时有权限不一样,虽然可使用su命令切换用户但对于SElinux的用户并无发生改变,帐户之间切换时此用户身份不变,在targeted策略环境下用户标识没有实质性做用 

2. 客体角色
    1) object_r: object_r通常为文件目录的角色
    2) system_r: 通常为进程的角色,在targeted策略环境中用户的角色通常为system_r
用户的角色相似用户组的概念,不一样的角色具备不一样的身份权限,一个用户能够具有多个角色,可是同一时间只能使用一个角色。在targeted策略环境下角色没有实质做用,在targeted策略环境中全部的进程文件的角色都是system_r角色 

3. 类型
    1) admin_home: 文件和进程都有一个类型,SElinux依据类型的相关组合来限制存取权限 

SELINUX开启后是一种白名单(非白即黑)的访问控制策略,一旦开启了SELINUX,就须要根据本机的业务场景进行大量配置,不然极可能形成业务中断。而实际上咱们须要的主动防护访问控制策略是一个"黑名单机制"的控制,即明确指定某些进程不能读写哪些路径下的文件

Relevant Link:

http://www.cnblogs.com/xiaoluo501395377/archive/2013/05/26/3100444.html
http://xinghen.blog.51cto.com/1080189/722082
http://www.uml.org.cn/embeded/201304252.asp
http://os.51cto.com/art/201105/265956.htm
http://www.cnblogs.com/zgx/archive/2011/08/31/2160330.html

 

Copyright (c) 2015 LittleHann All rights reserved

相关文章
相关标签/搜索