了解SELlinux
selinux是mac: mandatory access control. 强制访问控制. 是经过了20年的mac研究基础上开发的安全子系统.
访问控制分为三种:
dac: di'scretionary access control. 是规定每个用户的权限. "主体(subject, 指用户,程序,系统进程等)对 对象(objects)及其运行的程序有完全的自主权". 是操作系统的一种安全策略. 主体可以把属于自己的对象资源 赋予给其他主体共享; 主体运行的程序拥有和主体一样的权限. 因此, 运行的进程的安全程度决定了系统的安全强度.如果运行的程序出现了安全裂缝, 则系统可能遭受攻击. 有Alice & Charlie 的例子(木马和恶意程序执行 恶意/攻击 操作的代码都是隐藏隐晦 和隐蔽进行的), 所以DAC的安全策略是容易受到攻击的. linux默认的访问控制就是这种, 凡是通过ACl访问列表来实现的, 都是这种dac
MAC: mandatory access control 这时候, 系统的安全策略不是下放到每个用户自己的手里了, 而是全部收回到管理员手里了: 由管理员来统一的制定系统的策略. 主体不能改变策略, 默认的时候是禁止访问对象的, 只能显式地被赋予权力才能访问. 这是selinux的方式
RBAC: 基于角色的访问控制. 没有针对具体的哪个用户来制定策略, 而是先规定一些角色(有系统内建的builtin, 也可以由用户自己创建角色), 赋予角色对各种对象的访问权限. 然后具体要控制某个用户的访问权力时, 只要将用户规定某个或某几个角色, 那么它就相应的拥有了这几个角色的操作权限. 这就将管理员从规定众多的/每个用户的具体权限的繁重工作中解放了出来.
现代操作系统, 通常是几个策略结合使用.
==============================================================分隔线
selinux: 是由nsa(美国安全局)跟linux社区共同开发的 安全子模块. 从linux 2.6版本开始就 在发行板中 编入内核了. fedora23使用的是 4.2.3的内核
[root@localhost ~]# uname -a
Linux localhost.localdomain 4.2.3-300.fc23.i686 #1 SMP Mon Oct 5 16:26:47 UTC 2015 i686 i686 i386 GNU/Linux
[root@localhost ~]#
自然在内核中就已经包含了. selinux据说是最出色的安全 子系统. (在原来linux的dac基础上增加的). 采用的是 mac的访问控制, 是基于 domain-type的模型??
配置文件: (名称是SELinux, 但是配置文件都是小写?)
在 /etc/seLinux/下, 主要配置文件是/etc/selinux/config, (selinux目录下 还有semanage.conf, targeted)
其中: /etc/sysconfi/selinux是 /etc/selinux/config的软链接.
---conf是习惯的通用的缩写方式, 一般 目录, 文件后缀名都用conf: /etc/httpd/conf/httpd.conf; 单独的文件还是用config.---
/etc/selinux/config文件中, 主要有两个设置项:
SELINUX=enforcing (can take one of these three values....)
SELINUXTYPE=targeted / minimum / mls
minimum: 是修改了的targeted 策略, 只保护被选择的进程: modification of targeted policy. only selected pocesses are protected...
mls: multiple level security protection
SELINUX=enforcing
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
这里在config中制定的targeted, 是不是就是在/etc/selinux/targeted中规定的这些目标要被策略保护?
selinux的策略policy/policy.29是乱码
要查看selinux的上下文,使用-Z 选项, 可以使用在ls ps上, 即文件和进程都具有selinux/context属性
===================================================================
this指离说话人较近的事物, that则指较远的...the是定冠词, 是需要有上下文contex来支持的,指(第二次或以上)再提到前面所说的事物时,使用的. 如果在一段话语中第一次说到某个事物时, 最好还是用this/that....
gnome是整个桌面系统, gnome-shell是gnome的桌面 "窗口管理器". gnome-terminal才是终端. 所以 gnome-shell是界面和kernel交互的壳, gnome-terminal才是虚拟终端.
linux的声卡驱动进程: alsa-sound, alsa: advanced linux sound architecture. alsasound进程.
禁用一些不必要的服务进程, 可以: 释放内存, 减小cpu处理这些"无用"进程的时间,减小启动时间, 增加安全性系统的.
【摘录】(一般情况下,Linux系统安装完后会运行很多服务进程。关闭这些进程可以释放内存、减少系统启动时间和减少CPU处理进程的时间,还有就是提升了系统的安全性,开放的服务越少被攻击的机率将会越少。)
=========================================================
如何设置/修改selinux的安全上下文: context 参考文章:http://blog.csdn.net/cqkxboy168/article/details/8764373
chcon... change (selinux) contexts
【摘录 开始】
对于文件的访问权的划分不够细, (linux也有缺陷和漏洞) 在linux系统里,对于文件的操作,只有「所有者」,「所有组」,「其他」这3类的划分。
对于「其他」这一类里的用户再细细的划分的话就没有办法了。SUID程序的权限升级如果设置了SUID权限的程序有了漏洞的话,很容易被攻击者所利用。DAC(Discretionary Access Control)问题文件目录的所有者可以对文件进行所有的操作,这给系统整体的管理带来不便。
对于以上这些的不足,防火墙,入侵检测系统都是无能为力的。
在这种背景下,对于访问权限大幅强化的OS SELinux来说,它的魅力的无穷的。SELinux的优点SELinux系统比起通常的Linux系统来,安全性能要高的多,它通过对于用户,进程权限的最小化,即使受到攻击,进程或者用户权限被夺去,也不会对整个系统造成重大影响。
接下来我来介绍SELinux的一些特点。对访问的控制彻底化特点
1:MAC(Mandatory Access Control)―――对访问的控制彻底化
对于所有的文件,目录,端口,系统进程等这类的资源的访问,都是基于策可以略设定的,这些策略是由管理员定制的(如果你管理员不去定制, 就是使用、 loaded 系统builtin的那个policy)、一般用户是没有权限更改的。
2: TE (Type Enforcement)――― 对于进程只赋予最小的权限
Te概念在 SELinux里非常的重要。它的特点是对所有的文件都赋予一个叫type的文件类型标签,对于所有的进程也赋予各自的一个叫 domain的 标签。 这就是传说中的type-domain 因为进程可以执行很多操作, 可以访问多个文件和目录, 所以把它赋予domain标签
Domain标签能够执行的操作也是由access vector在策略里定好的。
我们熟悉的apache服务器,httpd进程只能在httpd_t 里运行,这个httpd_t 的domain能执行的操作,比如能读网页内容文件赋予httpd_sys_content_t, 密码文件赋予shadow_t, TCP的80端口赋予 http_port_t等等。
如果在access vector里我们不允许 http_t来对http_port_t进行操作的话,Apache启动都启动不了。反过来说,我们只允许80端口,只允许读取被标为 httpd_sys_content_t的文件,httpd_t就不能用别的端口,也不能更改那些被标为httpd_sys_content_t的文件(read only)。
特点3: domain迁移 ―― 防止权限升级
在用户环境里运行点对点下载软件azureus,你当前的domain是fu_t, 但是,你考虑到安全问题,你打算让他在azureus_t里运行,你要是在terminal里用命令启动azureus的话,它的进程的domain就会默认继承你实行的shell的fu_t。
有了domain迁移的话,我们就可以让azureus在我们指定的azureus_t里运行,在安全上面,这种做法更可取,它不会影响到你的fu_t。
下面是domain迁移指示的例子:
domain_auto_trans(fu_t, azureus_exec_t, azureus_t)
意思就是,当在 fu_t domain里,实行了 被标为 azureus_exec_t的文件时,domain 从fu_t迁移到 azureus_t 。下面是Apache启动的迁移图。注意了,因为从哪一个domain能迁移到httpd_t是在策略里定好了,所以要是我们手动 (/etc/init.d/httpd start)启动apache的话,可能仍然留在sysadm_t里,这样就不能完成正确的迁移。要用run_init命令来手动启动。
特点4: RBAC(role base access control) ――――― 对于用户只付与最小的权限
对于用户来说,被划分成一些ROLE,即使是ROOT用户,你要是不在sysadm_r里,也还是不能实行sysadm_t管理操作的。因为,那些ROLE可以执行那些domain也是在策略里设定的。ROLE也是可以迁移的,但是也只能安策略规定的迁移。
控制切换从fedora core 2开始, 2.6内核的版本都支持selinux.我们看看 Fedora core 5 里的/etc/sysconfig/selinux标准设定吧。
【摘录 结束】
=============================================================---- 自我理解 分隔线
文件的类型标签是 :type, 进程的类型标签是:domain。 ???为什么重要的是要控制 进程的 access vector? 因为在系统中, 真正能够对系统产生影响或破坏的 只能是 运行的执行操作的 “进程“, 真正危险的是” 执行的程序“”进程“。文件(包括没有运行的病毒或木马)本身是静止的, 是无害的。
selinux事先(内建builtin)创建一些(最适合大多数人, 大多数场景下的)policy。 在这些policy中,事先就预先规定/定义了 系统内文件的type和进程的domain标签, 并且对常见常用进程的 domain规定了 access vector. ...
像这种思路和程序设计的方法, 其实具有普遍意义。 原因是:
当你要 创建/推出/确定/推广/建立 一套(程序, 社会体系也是一样)体系(正如这里的selinux)的时候,你需要 规定 / 理顺 体系内各种 “实体”的关系。 更重要的是, 你不能给人们只讲道理 规则, 你还得真正的 要给出 一套 适合大多数人的、有现实意义的、直接就可以为现实世界可用的一套 (程序)体系的 “实例”instance“例子example”。 比如我们使用ls -Z; ps -aux -Z 命令来查看文件或进程时, 就会发现一些selinux的 context , 而实际上, 我们根本就没有去定义/创建, 这个就是由loaded的系统事先建好的policy。
因为, 这个如果你这个东西是复杂的, 除了你可能别人都不懂的,那么最开始,你得提供一个可以运行的“instance”让别人用。 然后, 在别人理解掌握了你的思想后, 别人再来修改你的instance, 或者再按照你的规则和思路, 自己创建一个新的policy。
总的来说, selinux中的几个元素: xx_u(用户)-->关联着 xx_r(角色) -->关联着 进程的domain --> 关联着 “进程可以执行的权限access vector" (这些权限就是指对哪些type类型的文件,进程, 系统进程, 设备,端口等资源 可以进行的 读、写、改等操作)
参考selinux的设置和修改和安装: http://baike.911cha.com/ci/SELinux
========================================================
【摘录 参考文章: 】
安全上下文格式
所有操作系统访问控制都是以 关联的客体和主体的某种类型的 访问控制属性 (ACP: properties)为基础的。在SELinux中,访问控制属性叫做安全上下文 。所有客体(文件、进程间通讯通道、套接字、网络主机等)和主体(进程)都有与其关联的安全上下文,一个安全上下文由三部分组成:用户、角色和类型标识符。常常用下面的格式指定或显示安全上下文:
USER:ROLE:TYPE[LEVEL[:CATEGORY]]
!!!(不同的主体或者客体 对于安全上下文中 “关心”的 内容 不同) ::安全上下文中的用户和角色标识符除了对强制有一点约束之外对类型强制访问控制策略没什么影响,
对于进程,用户和角色标识符显得更有意义,因为它们是用于控制类型和用户标识符的联合体,这样就会与Linux用户账号关联起来;
然而,对于客体,用户和角色标识符几乎很少使用,为了规范管理,客体的角色常常是object_r,客体的用户常常是创建客体的进程的用户标识符,它们在访问控制上没什么作用。
标准Linux安全中的用户ID和安全上下文中的用户标识符之间的区别,就技术而论,它们是正交标识符,分别用于标准的和安全增强的访问控制机制,这两者之间的任一相互关联都是通过登陆进程按照规范严格规定的,而不是通过SELinux策略直接强制实施的。
!!命令id可以显示 查看shell的context:
【摘录 开始】
TYPE
1) type:用来将主体(subject)和客体(object)划分为不同的组,给每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境;
2) 当一个类型与执行中的进程相关联时,其type也称为domain;
3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心脏,预设值以_t结尾;
LEVEL和CATEGORY:定义层次和分类,只用于mls策略中
• LEVEL:代表安全等级,目前已经定义的安全等级为s0-s15,等级越来越高
• CATEGORY:代表分类,目前已经定义的分类为c0-c1023
【摘录 结束】
[root@localhost sbin]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
其中的s0-s0指安全级别
c0.c1023指context的分类. 其中: level和category只是再mls中才有. 因为selinux中是开启了的 mls策略的.
================================================
最后,重点看这篇文章: http://blog.csdn.net/myarrow/article/details/9856095
其中, 控制 selinux & context的命令 基本上都在 /usr/sbin/中。。。
selinux是在 linux访问控制上增加了 TE (type enforcement) 的访问控制 而已。
===================================================
webcam: web-camera: 照相机-摄像机都是.
shotwell和f-spot:
Shotwell is now the default application for organizing and making simple changes to photos, replacing F-Spot. Shotwell取代F-Spot,成为了默认的照片管理及简易修饰工具。
照片的tint是色相, straighten: 把倾斜的照片矫正为直立的(方法是: 先旋转,然后最大程度的剪切). staighten ... out: 处理(问题, 事情,情况straighten the case out, 整顿, 矫正, 纠正..)
shot: 1. 是shoot的过去式和过去分词; 2. 同时,它本身也有意义: n. 铅球;射击;投篮;射门;...
[[[[因为对普通用户来说,The Gimp太过于专业。然而Ubuntu用户随后又觉得F-Spot太过于简单了,它的功能不能很好的满足需要。现在Ubuntu 10.10的默认图像编辑软件将换成 Shotwell。 Shotwell为GNOME桌面环境下的个人照片管理软件,多个基于GNOME的发行版,如Fedora 13,都已经用它取代了F-Spot。它为用户提供了简单的旋转、裁切、消除红眼、调整层次和色彩平衡等编辑功能,支持将照片发布到 Facebook、Flickr和Picasa Web Albums。Shotwell用Vala语音编写。]]]]
chess 象棋 != cheese 奈洛...
"红眼"功能就是将 "红色"的小圆圈 内容 --> "黑色/灰色/浅色"的小圆圈....
==============================================================
npapi和ppapi?
这是两种flash插件的架构, npaip= np-api, netscape plugin: 是网景的插件api, 大多数插件都是基于这个来开发的, 它的性能好, 但是安全性较差, 插件可以获得底层的权限,... ppapi = pp-api, pepper plugin(辣椒, 花椒,胡椒等) 是2010年 google 在npapi的基础上开放的插件结构. mac机器的插件大多是 ppapi , 安全但是较费资源....
了解SELlinux的更多相关文章
- Linux kernel 文件夹说明
Linux 内核代码的目录结构 arch: 包含和硬件体系相关的的代码,每种硬件平台占一个相应的目录,如i386,arm, arm64, powerpc,mips等. block: 块设备驱动程序I/ ...
- Haproxy安装配置及日志输出问题
简介: 软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现.LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载 ...
- 如何关闭SELinux
一般安装linux课程时都把SELinux与iptables安排在后面,使初学者配置linux服务器时不成功,却没有头绪,那是因为在RedHat linux操作系统中默认开启了防火墙,SELinux也 ...
- linux_系统调优
linux如何调优? 1. 关闭SELLinux功能,美国国家安全局对于强制访问控制实现,生产场景也是关闭 cat /etc/selinux/config | grep '^SELINUX=' # 查 ...
- CentOS7 设置yum源
1.关闭防火墙 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机自关闭 systemctl disable firewalld 临时打开防火墙 systemctl st ...
- ELK实时日志分析平台环境部署--完整记录
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- linux 为什么要关闭selinux
一般安装linux课程时都把SELinux与iptables安排在后面,使初学者配置linux服务器时不成功,却没有头绪,那是因为在RedHat linux操作系统中默认开启了防火墙,SELinux也 ...
- ELK实时日志分析平台环境部署--完整记录(转)
在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...
- Elasticstack 5.1.2 集群日志系统部署及实践
Elasticstack 5.1.2 集群日志系统部署及实践 一.ELK Stack简介 ELK Stack 是Elasticsearch.Logstash.Kibana三个开源软件的组合,在实时数据 ...
随机推荐
- HTML中button标签点击实现页面跳转
方法1:使用onclick事件 <input type="button" value="按钮" onclick="javascrtpt:wind ...
- 增强 Jupyter Notebook的功能
增强 Jupyter Notebook的功能 Jupyter Notebook 是所有开发者共享工作的神器,它为共享 Notebooks 提供了一种便捷方式:结合文本.代码和图更快捷地将信息传达给受众 ...
- kotlin学习(7)高阶函数
高阶函数 以另一个函数作为参数或者返回值的函数被称为高阶函数. 函数类型 //隐式声明(省略了变量类型) val sum = (x:Int, y:Int -> x+y) val action = ...
- mongodb启动报错,child process failed, exited with error number 1
error: child process failed, exited with error number 1 第一次安装mongodb,随后启动一般不会出现上面的错误,出现这种错误的原因一般是mon ...
- CSS行内框(内联元素)
行内框在一行中水平布置.可以使用水平内边距.边框和外边距调整它们的间距.但是,垂直内边距.边框和外边距不影响行内框的高度.由一行形成的水平框称为行框(Line Box),行框的高度总是足以容纳它包含的 ...
- JavaScript的循环结构和经典题目
一.JS中的循环结构 循环结构的执行步骤1.声明循环变量:2.判断循环条件;3.执行循环体操作:4.更新循环变量:5.然后循环执行2-4,直到条件不成立,跳出循环. while循环()中的表达式,运算 ...
- Spring基础17——使用注解来配置Bean
1.组件扫描 组件扫描(component scanning):Spring能够从classpath下自动扫描,侦测和实例化具有特定的注解的组件. 特定组件包括: —@Component:基本注解,标 ...
- MySQL数据库的自动备份与数据库被破坏后的恢复(3)
[2] 当数据库被修改后的恢复方法 数据库被修改,可能存在着多方面的原因,被入侵.以及相应程序存在Bug等等,这里不作详细介绍.这里将只介绍在数据库被修改后,如果恢复到被修改前状态的方法. 具体和上面 ...
- display:line-block
1.那是因为第二个标签是inline-block,它的对齐方式是基线对齐,对齐的是第一个元素里面字的下划线,所以第二个元素的下边缘对齐的是1的下划线,只要在第二个元素里面加内容或者加个空格( )就可以 ...
- 【leetcode】Smallest Rotation with Highest Score
题目如下: Given an array A, we may rotate it by a non-negative integer K so that the array becomes A[K], ...