selinux第一节

(一):selinux简介

selinux是security enhancement linux的简称,从字面意思说就是安全增强型linux,这种增强能够有效的减轻

有缺陷的应用软件所出现的问题,包括那些没有被发现的或者是被创建的缺陷。同时,这种增强也能够强化很多安全

目标,从数据保密到应用集成来提高其健壮性。

(二):DAC和MAC

1): 在早期的操作系统中几乎是没有安全方面的考虑的,用户可以只要知道资源的名称就可以获取任何文件或者是资源。后来,有了比较主流的访问控制机制(access control mechanisms)-DAC,即discretionary access control,自主访问控制,DAC的主要特征就是资源拥有者能够指定谁能或者是谁不能访问该资源。DAC机制有一些基础的安全缺陷。

—-下面来自百度知道:

“自主访问控制的实现方式包括目录式访问控制模式、访问控制表(ACL)、访问控制矩阵、面向过程的访问控制等,其中,访问控制表是自主访问控制机制通常采用的一种方式。访问控制表是存放在计算机中的一张表,本质上是带有访问权限的矩阵,其访问权限包括读文件、写文件、执行文件等等。在自主访问控制机制下,每个客体都有一个特定的安全属性,同时访问控制表也授予或禁止主体对客体的访问权限。在实际工作中,安全管理员通过维护访问控制表,控制用户对文件、数据等IT系统资源的访问行为,来达到安全防控的目的。

  从安全性上看,现有操作系统中基于访问控制表的自主访问控制存在着明显的缺陷:一方面,超级用户(root/Administrator)权力过度集中,可以随意修客体的访问控制表,只要拥有超级管理员权限就可以对服务

器所有的资源进行任意操作;另一方面,客体的属主可以自主地将权限转授给别的主体,一旦把某个客体的ACL修改权转授出去以后,拥有者便很难对自己的客体实施控制了。因此,在现有的这种访问控制模型下,

操作系统存在很多安全风险。”

  

  

所以,基于自主访问控制的缺点,另外一种访问控制机制–MAC,强制访问控制被开发出来。MAC目的是在提供安全需求的时候,能够克服DAC的缺陷。selinux带给linux的主要价值就是一个灵活的,可配置的MAC机制。

2):引用监控的概念

在引用监控中,操作系统将被动资源,例如文件隔离到不同的客体当中,同时,将活动的实体,例如运行中的

程序分隔到主体当中。引用监控机制也就是引用验证机制,通过提供集成一套访问控制规则的安全策略来验证主体和客体之间的访问。通过这种方式,程序访问访问系统资源,例如文件,就能够被限制在符合安全策略的访问中。

访问控制决策是基于与每一个主体和客体相关的安全属性的,安全属性代表着主体或者是客体的安全相关的特征。例如,在linux中,主体也就是进程,都有真实并且有效的用户标识符,客体,例如文件,有访问权限模式,该模式被用来决定哪一个进程能够打开文件。

除了实现安全策略,引用监控概念实现的基础设计目标就是:
1:防篡改(不能被恶意改变或者是修改)
2:无通行(主体不能避免访问控制决策)
3:可验证(他是正确的,并且安全策略的实现是已经证明的)

几乎所有的操作系统都在实行了引用监控的形式,而且都是以主体,客体以及安全策略规则为特征的。在标准linux中,主体通常都是进程,客体大都是用来信息共享,存储和交流(文件,目录,套接字,共享内存等)的系统资源。

在linux中,和其他流行的操作系统一样,被引用监控(也就是内核)实施的安全策略都是固定的和硬编码的,然而被这些规则用于验证的安全属性(例如,访问模式)可以被改变和被分配。标准的linux安全是DAC安全的一种形式。

3):自主访问控制的问题

DAC是一种访问控制形式,他通常是允许被批准的用户(通过他们的程序,例如shell)来改变来改变客体的访问控制属性,因此来执行哪一个其他用户有权来访问该客体。DAC的一种简单的形式就是文件密码,想要访问文件必须要知道被文件拥有者创建的密码。大多数DAC机制是基于用户身份访问控制属性的。几乎所有当前的操作系统都有基于用户身份的DAC形式。在linux中,拥有者-组-其他权限模式机制是非常普遍的和出名的。同样的,一个更加普通的访问控制列表机制也是比较普遍的。

所有的DAC机制都有一个基础性的缺陷,就是他不能识别人用户和计算机程序的区别。DAC尝试着去模拟一个所有权的概念;例如,文件所有者有权利来指定文件访问,并且仅仅将访问权限指定给他信任的其他用户。假设你能够信任一个 人用户(可能是一个无效的命题),计算机工作的方式不能直接模拟一个真实的世界。简单的说,用户依赖于不是他们自己创造的,但是能够在计算机上执行功能的软件,所以我们不能给用户授权和使用访问的能力,而是给软件程序这种能力。正如在互联网时代非常明显的事情,程序充满着缺陷并且很容易被恶意攻击。这就是特洛伊木马,首次在1970s被发现,今天的病毒,蠕虫和间谍软件都是他的变体,所带来的问题。简而言之,如果一个用户是被授权访问的,那也就意味着程序也被授权访问了,如果程序被授权访问了,那么恶意程序也会得到相同的访问权。

DAC假设了一个良性的环境,在这个环境当中,所有的程序都是值得信任的并且是没有缺陷的。虽然我们希望有这样的环境,但是,我们知道,当前是没有这样的环境的。

4):MAC的起源

整个1970s到1980s,基本上所有的精力都放在解决恶意攻击和软件存在缺陷的问题上。目标就是实现MAC。

多层安全模型(MLS)是基于一个正式的模型,称作Bell-LaPadula模型。在多层安全模型中,主体和客体是用安全层来标记的。在我们的例子中,我们有PUBLIC和SECRET敏感层,这些层代表着数据的相对敏感性和代表着主体正在操作的用户的许可(SECRET的数据要比PUBLIC的数据敏感)。在MLS中,主体可以读或者是写具有相同敏感度的客体。除此,主体能够读低层的客体(“read down”)和写高层的客体(“write up”)。然后,一个主体绝不能读高层的客体(”no read up”)或者是写底层的客体(“no write down”)。这样的思想就能够使信息从低层流向高层了,但不能反转,从而来保护高层数据的机密性。

MLS在我们认为的访问控制方面是一个翻天覆地的变化。数据拥有者不再能够任意的决定谁能访问客体了。更进一步,假设,大多数软件是不可信的,我们也有非常强健的安全机制了,因为信息流向规则会阻止不适当的数据访问。在MLS当中,组织通过固定的规则来决定个人用户怎样来共享数据。MLS是至今最具应用价值的MAC机制。并且在多个操作系统中也是非常普遍的。

MLS主要的问题就是,严格意义上,MLS实现了一个单一的安全目标(也就是说,使用政府分类文档的迷性来保护敏感数据的机密性),是一种固定的方式。不是所有的操作系统安全问题都是与数据机密性相关的,同时,大多数也不是服从于严格地,简单的政府分类文档的模型的。在MLS中为了扩展这个目标(和类MAC机制),主体一定要被赋予权限在安全策略之外工作(也就是说,未被“无通行”的原则),并且被信任不会违背这个策略的目的。

5):一个更好的MAC形式

SElinux实现了一个灵活的MAC机制,称作type enforcement(TE),即类型强制策略。正如你看到的,类型强制策略提供了一个以适应安全目标的多样性为形式的,健壮的强制安全策略。同时,TE提供了一种手段来控制个人程序层的访问,允许组织者定义一个适合自己系统的安全策略。在TE中,所有的主体和客体都有一个类型标识符与他们相关联。为了能够访问客体,主体的类型一定要被授权为客体的类型,不管主体的用户标识符是什么。

使得selinux的方法比直接的MLS方法优越的原因就是,统治基于类型的访问控制在内核中是不预先被定义的或者不是硬编码的。默认的,selinux不允许访问。一个组织能够开发任何数量的规则来指定什么是被允许的,使得selinux能够适应安全策略的多样性。

一个系统中允许访问的规则的集合被称作selinux policy,即selinux策略。一个selinux策略是包含所有的selinux内核要实施的规则的文件。策略文件从源文件集合中被编译。正如你看到的,selinux策略能够从一个系统移植到另外一个系统中。在启动进程阶段,策略被加载到内核当中,它在内核当中被用做访问控制决策的基础。

selinux向linux带来了以基于角色的访问控制为形式的灵活的TE和可选的传统的MLS附加。这个被构建在主流的linu操作系统当中的灵活的和可修改的MAC安全机制,是能够提高安全性的有希望的技术。

时间: 2024-10-23 11:39:42

selinux第一节的相关文章

火云开发课堂 - 《Shader从入门到精通》系列 第一节:Shader介绍与工程搭建

<Shader从入门到精通>系列在线课程 第一节:Shader介绍与工程搭建 视频地址:http://edu.csdn.net/course/detail/1441/22665?auto_start=1 交流论坛:http://www.firestonegames.com/bbs/forum.php 工程下载地址:请成为正式学员获取工程 课程截图: 项目实例: 版权声明:本文为博主原创文章,未经博主允许不得转载.

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一、 除夕诗词概述 二、元日诗词概述 三、 元宵诗词概述 第二节:春节古诗词拾萃

杨森翔:春节文化大观上编 第三章 春节古诗词 目录 第一节:春节诗词概述 一. 除夕诗词概述 二.元日诗词概述 三. 元宵诗词概述 第二节:春节古诗词拾萃 一.腊祭诗词 二.祭灶诗词 三.除夕诗词 四.元旦诗词 五.人日诗词 六.元宵诗词 第一节:春节古诗词概述 中国的春节,作为除旧迎新的节日,时间相当长,从年前的腊月二十三,天空中就似乎弥漫了节日的气息.这种节日的气氛,在保持传统风俗较好的地方,甚至会持续到二月二龙抬头的时候,但欢度春节的高潮,应该说是自除夕始一直到上元之夜.因此,历代歌咏和反

第一节课作业

1 C语言是在国内外广泛使用的一种计算机语言.其语言功能丰富.表达能力强.使用灵活方便.既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件.其功能强大,不仅用在计算机上广泛用在电子,机械等方面上,而且,所有的windows,Unix,Linux,Mac,os/2,无一例外,哪一个不是C语言写的?很多新型的语言如,C++,Java,C#,J#,perl...都是衍生自C语言.掌握了C语言,可以说你就掌握了很多门语言. 学习C程序这门课一年了,这是我们学的第一门专业课,在大学里C语言不

第一节,C语言入门

1.标示符:    命名规则:    1.只能由字母.数字.下划线组成    2.不能数字开头    3.不能与关键字重名    4.严格区分大小写    命名规范:     1.起一个有意义名字     2.驼峰标示2.注释 注释: 对代码的解释说明,是写给程序看的,方面程序员之间交流 特点: 注释是不参与编译 /* 这里面可以写 */ 多行注释 // 这是一个单行注释 只有这一行是注释,只有 两个斜杠后面才是注释内容 /* */ command + / 注释或取消注释 多行注释是可以嵌套单行

MFC第一节-windows程序内部运行机制

一.窗口 设计窗口类时: 1 typedef struct _WNDCLASS{ 2 UINT style; //如水平.垂直变化是否重绘,禁用Close,检测双击 3 WNDPROC lpfnWndProc;//窗口过程函数句柄 4 int cbClsExtra;//类附加内存 5 int cbWndExtra;//窗口附加内存 6 HANDLE hInstance;//实例句柄 7 HANDLE hIcon;//图标 8 HCURSOR hCursor;//光标 9 HBRUSH hbrBa

linux基础知识第一节

用户接口: 是一种独特的应用程序,能够为用户提供启动其它应用程序的的机制 cli:命令提示符,用户输入要执行的命令即可, shell: 外壳 sh ,csh ,ksh ,   bash, zsh , tcsh gui: 通过点击操作来启动应用程序 gnome,  mainframe  大型机 多用户操作系统    多终端   终端:设备,显示器,鼠标,键盘 虚拟终端 表示:/dev/tty# ctrl-alt-f(1-6) 物理终端(控制终端)console 串行终端 伪终端 /dev/pts#

VUE2.0实现购物车和地址选配功能学习第一节(来源--慕课网河畔一角)

第一节  vue知识 vue-resource:和后台交互的一个插件,实现get.post和jsonp等功能.(替代jQuery) vue特点: 1.易用:通过创建vue实例,{{}}绑定数据十分方便,如果是jQuery还要获取值,设定十分繁琐 2.灵活-渐进式 ①渲染字段:②公共头部和公共尾部做成组件:③单页面会用到:④管理组件状态,vuex⑤使用构建工具完结项目 3.高效 ①16kb min+gzip的运行大小:②超快虚拟DOM:③最省心的优化 vue基础指令介绍: 1.指令的使用: v-m

photoshop第一节:认识ps

Photoshop 第一节: 1. 认识ps: (讲ps前说说我们所见过的图片)电脑呈现的图像类型分为两大类: 一类称为点阵图(当我们放大图片会看到像马赛克模糊的阵容,而那些方块叫像素点,每个像素点表示一种颜色.由方块像素点组成的阵列图片,我们叫它点阵图,比如我们上网百度的图片,壁纸,或手机拍出来的照片等等). 一类称为矢量图(放大不会模糊,因为它并不是由像素点组成.而是通过数学公式计算它的.一般要支持的矢量图格式的软件才能打开,比如插画师用adobe公司的AI软件作插画,). 而Photosh

C#第一节课作业,HelloWorld

通过第一节课的学习,我们掌握了一些C#的基本知识.无论是C#的名字的由来还是有关Hello World和Console都让我受益匪浅. 回到家后,我首先实验了一下最简单的Hello World▼ 成功了√ 然后,我实验了一下省去System的写法▼ 成功了√ 这之后我又试了一下同文件中的调用▼ 成功了√ 之后是调节字和背景的颜色▼ 成功了√ 之后我尝试了不同文件的调用▼ 成功了√ 然后我试了下分步执行▼ 成功了√ 然后我设置了变量▼ 成功了√ 最后我试验了一下ResetColor的用法▼ 成功了