一、基础

1)访问模型

Linux原有访问模型:自主访问控制 DAC

安全隐患: 进程所能访问资源的范围 为用户所能访问的资源范围

后门: rootkit程序
进程被胁持:
基于进程作为跳板,就有了进程属主的权限
root
普通用户--> 查看其他文件 --> 找到漏洞,提权操作

SELinux:Secure Enhanced Linux 工作于Linux内核中

SELinux访问模型: 强制访问机制 MAC

类似sandbox机制:进程启动在一个沙箱内部,

为进程运行,启用一个专用的沙箱

sandbox 沙箱: 最小资源集合
进程脱离控制时,不能访问用户所有能访问的文件

2)、SELinux有两种工作模式 

  strict :严格级别  每个进程都受到SELinux的控制

  targetted  : 仅有限个进程受SELinux控制,只监控容易被入侵的进程

3)SELinux工作方式

subject(主语) operation(谓) object(宾)

subject: 进程

operation: 取决于被操作对象支持的模式 及 操作者是否在有效区域内

object: 进程、文件、用户

   文件: operation: open, read, write, close, chown, chmod

活动范围(域):

subject: domain

object:  type   操作者称为域(活动的发出者),被操作者称为类型

4)SELinux安全标签显示

SELinux为每个文件、进程提供安全标签

查看:

进程:ps axuZ

- 没有激活SELinux(SELinux必须在内核启动时激活才能生效)

例如:-   root       3.0  0.4      pts/    R+   :   : ps axuZ

文件: ls -Z 显示SELinux的安全上下文

例如:-rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg

 前三段 user:role:type

  user: SELinux的user

  role: 角色,类似linux的组

  type: 类型, 沙箱的范围

  subject: domain

  object: type

  object能被subject操作只有:type是domain的子集:domain == type 或 domain包含type

二、激活SELinux

1)配置文件位置:

 

2)SELinux状态

获取SELinux当前状态

getenforce

设定状态:当前有效,重启失效

setenforce #
设定为permissive
设定为enforce

  enforcing   强制:每个受限的进程必然受限,不受限的进程不受限。

  permissive  允许:每个受限的进程违规操作不会禁止,但会被记录于审计日志中。 日志位置:/var/log/audit.log

  disabled   关闭

3)激活或关闭SELinux

  开启selinux: disabled --> enforcing/permissive

sed -i 's,SELINUX=disabled,SELINUX=enforcing,' /etc/selinux/config

开启SELinux必须重启,在/重新挂载后,重新对所有文件打标才可以对selinux操作

关闭selinux:enforcing/permissive --> disabled

sed -i -r 's@(SELINUX=)(enforcing|permissive)@\1disabled@' /etc/sysconfig/selinux

4)、激活SELinux后

 进程访问文件的安全上下文

a)、进程的属主对文件的权限,通过

b)、文件的type是否是进程domain的子集

进程查看规则库,查看进程所属的domain是否被授权了能够访问文件所属type

是:能访问

否:被SELinux规则所拒绝,并记录至日志文件中 /var/log/audit.log,审计:在合理的使用范围内,进程对文件可执行的合理的操作

SELinux的规则库:
规则:哪种域能访问哪种或哪些和类型内文件
法无授权即禁止 --> 在SELinux规则库中没有定义的规则,均被禁止
进程如何访问非本域domain的文件?
修改文件的type 属于进程domain即可

c)、设定某些布尔型特性

  [root@localhost /]# getsebool -a

5)改变文件所属的域

  chcon   [-u USER] [-r ROLE]  [-t TYPE] FILE...

   -R :递归打标

 

使用示例

[root@localhost conf.d]#cd /etc/httpd/conf.d

[root@localhost conf.d]# mv welcome.conf welcome.conf.bak

 

6)还原标签

  restorecon  [-R]  /path/to/somewhere

   -R :还原一个目录下的所有标签

e.g   restorecon  /www/html/index.html

使用示例

 

7)设定程序功能开启或关闭

默认对于某些程序的功能,相对安全级别较低的功能,将被SELinux自动被禁止,例如ftp的匿名用户:任何用户可以上传文件

布尔型规则:

获取程序功能sebool

getsebool -a   [boolean] 所有程序功能

  getsebool ftp_home_dir

设置程序功能

setsebool [-P] sebool=value

-P 永久有效,将修改的结果保存至策略库中 (需要一定时间:找到规则库,设定,转换为binary格式 )

  例如:
setsebool ftp_home_dir
setsebool ftp_home_dir setsebool ftp_home_dir on
setsebool ftp_home_dir off

参考:https://blog.51cto.com/sonlich/1964022

二十九、SELinux简介的更多相关文章

  1. 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)

    1.简介 有些测试场景或者事件,Selenium根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作.比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某 ...

  2. Bootstrap <基础二十九>面板(Panels)

    Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...

  3. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  4. WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]

    原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...

  5. VMwarevSphere 服务器虚拟化之二十九 桌面虚拟化之安装View副本服务器

    VMwarevSphere 服务器虚拟化之二十九  桌面虚拟化之安装View副本服务器 VMware View中高可用性可是一个必须要考虑的问题.在整个虚拟桌面环境中View Connection S ...

  6. Bootstrap入门(二十九)JS插件6:弹出框

    Bootstrap入门(二十九)JS插件6:弹出框 加入小覆盖的内容,像在iPad上,用于存放非主要信息 弹出框是依赖于工具提示插件的,那它也和工具提示是一样的,是需要初始化才能够使用的 首先我们引入 ...

  7. mysql进阶(二十九)常用函数

    mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...

  8. JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习

    JAVA之旅(二十九)--文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习 我们继续学习File 一.文件递归 我们可以来实现 ...

  9. 【黑金原创教程】【FPGA那些事儿-驱动篇I 】原创教程连载导读【连载完成,共二十九章】

    前言: 无数昼夜的来回轮替以后,这本<驱动篇I>终于编辑完毕了,笔者真的感动到连鼻涕也流下来.所谓驱动就是认识硬件,还有前期建模.虽然<驱动篇I>的硬件都是我们熟悉的老友记,例 ...

  10. 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用

    第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...

随机推荐

  1. 题解 P3378 【【模板】堆】

    Update 18.2.27----想当年我还用着C..... 看到题解里一堆用C++ STL库中的优先队列,身为C语言选手心里不是滋味 故手打一个优先队列献给坚守在C语言的选手 #include & ...

  2. pytorch神经网络实现的基本步骤

    转载自:https://blog.csdn.net/dss_dssssd/article/details/83892824 版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载 ...

  3. restTemplate源码解析(五)处理ClientHttpResponse响应对象

    所有文章 https://www.cnblogs.com/lay2017/p/11740855.html 正文 上一篇文章中,我们执行了ClientHttpRequest与服务端进行交互.并返回了一个 ...

  4. mysql-8.0.16-winx64的最新安装教程

    最近刚学习数据库,首先是了解数据库是什么,数据库.数据表的基本操作,这就面临了一个问题,mysql的安装,我这里下载的是64位的,基于Windows的,以下是在我电脑上的安装过程,希望可以帮助到大家. ...

  5. 关于Vue中,checkBox等组件在赋值后,点击切换页面未及时更新问题

    我们经常碰到这样的问题,在v-for循环中,给某些组件(此处以checkBox为例)赋值后,组件并不能正常切换, 这是因为数据层太多,render函数没有自动更新,需手动强制刷新. 解决方法:在切换c ...

  6. C++ unordered_map桶增长规律

    无序容器unordered_map存储为一组桶,各元素通过hash函数映射到各个桶中.心血来潮,来看一下桶的增长规律. #include <iostream> #include <s ...

  7. 还在用ABAP进行SAP产品的二次开发?来了解下这种全新的二次开发理念吧

    Jerry从2018年底至今,已经写了一系列关于SAP Kyma的文章,您可以移步到本文末尾获得这些文章的列表.Kyma是SAP开源的一个基于Kubernetes的云原生应用开发平台,能够允许SAP的 ...

  8. SAP WebIDE里UI5应用的隐藏文件project.json

    在SAP WebIDE UI5应用编辑器里的菜单View->Show Hidden files点击后,即可发现项目文件夹下有一个隐藏文件project.json: 内容如下: 这也解释了为什么b ...

  9. JdbcTemplate批量插入数据

    运行环境:SpringBoot,注入JdbcTemplate @Autowired private JdbcTemplate jdbcTemplate; 1.单表批量插入数据 @Test public ...

  10. linux基础6-bash shell编程

    1. type [-ta] name 一般情况下,type命令被用于判断另外一个命令是否是内置命令,但是它实际上有更多的用法. 1.1.判断一个名字当前是否是alias.keyword.functio ...