二十九、SELinux简介
一、基础
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

二十九、SELinux简介的更多相关文章
- 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
1.简介 有些测试场景或者事件,Selenium根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作.比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某 ...
- Bootstrap <基础二十九>面板(Panels)
Bootstrap 面板(Panels).面板组件用于把 DOM 组件插入到一个盒子中.创建一个基本的面板,只需要向 <div> 元素添加 class .panel 和 class .pa ...
- Web 开发人员和设计师必读文章推荐【系列二十九】
<Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...
- WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载]
原文:WCF技术剖析之二十九:换种不同的方式调用WCF服务[提供源代码下载] 我们有两种典型的WCF调用方式:通过SvcUtil.exe(或者添加Web引用)导入发布的服务元数据生成服务代理相关的代码 ...
- VMwarevSphere 服务器虚拟化之二十九 桌面虚拟化之安装View副本服务器
VMwarevSphere 服务器虚拟化之二十九 桌面虚拟化之安装View副本服务器 VMware View中高可用性可是一个必须要考虑的问题.在整个虚拟桌面环境中View Connection S ...
- Bootstrap入门(二十九)JS插件6:弹出框
Bootstrap入门(二十九)JS插件6:弹出框 加入小覆盖的内容,像在iPad上,用于存放非主要信息 弹出框是依赖于工具提示插件的,那它也和工具提示是一样的,是需要初始化才能够使用的 首先我们引入 ...
- mysql进阶(二十九)常用函数
mysql进阶(二十九)常用函数 一.数学函数 ABS(x) 返回x的绝对值 BIN(x) 返回x的二进制(OCT返回八进制,HEX返回十六进制) CEILING(x) 返回大于x的最小整数值 EXP ...
- JAVA之旅(二十九)——文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习
JAVA之旅(二十九)--文件递归,File结束练习,Properties,Properties存取配置文件,load,Properties的小练习 我们继续学习File 一.文件递归 我们可以来实现 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】原创教程连载导读【连载完成,共二十九章】
前言: 无数昼夜的来回轮替以后,这本<驱动篇I>终于编辑完毕了,笔者真的感动到连鼻涕也流下来.所谓驱动就是认识硬件,还有前期建模.虽然<驱动篇I>的硬件都是我们熟悉的老友记,例 ...
- 第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理—用户代理和ip代理结合应用
第三百二十九节,web爬虫讲解2—urllib库爬虫—ip代理 使用IP代理 ProxyHandler()格式化IP,第一个参数,请求目标可能是http或者https,对应设置build_opener ...
随机推荐
- java实现工程配置文件敏感字段加解密
以下引自他人博客: 1. 需求背景我们在开发应用时,需要连接数据库,一般把数据库信息放在一个属性配置文件中,比如***.properties,具体的内容 #mysql的配置文件jdbc.url=jdb ...
- (二)CXF之用CXF官方工具生成客户端Client
一.CXF工具的下载与使用 登录CXF官网:http://cxf.apache.org/download.html 下载,本系列使用的是3.1.5版本: 添加path环境变量 二.案例 2.1 发布w ...
- (五)web服务中的异常处理
一.服务端发布服务 package com.webservice; import javax.jws.WebParam; import javax.jws.WebResult; import java ...
- Java单例设计模式和多例设计模式
单例设计模型 教学视频链接:https://edu.aliyun.com/course/1011 1,private不可以在类外部访问,但可以在内部访问 2,此时Singleton类内部的instan ...
- win8系统安装.net Framework3.5
Win8 离线安装 .Net Framework 3.5(工具+方法)(支持Win8.1) 微软在最新的 Win8 / Win8.1 系统中没有集成 .NET 3.5,如果安装的话,必须是在线安装,甚 ...
- [JZOJ5897]密匙--哈希骚操作
[JZOJ5897]密匙--哈希骚操作 题目链接 太懒了自行Google 前置技能 二分/倍增求LCP e.g TJOI2017DNA 分析 这题看了样例解释才知道什么意思 本以为自己身为mo法师蛤希 ...
- JS基础 sessionStorage
html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage. sessionStorage用于本地存储一个会话(session)中的数据,这些数据只 ...
- S2-019、S2-020
前言 “Struts2系列起始篇”是我整各系列的核心,希望大家能花些时间先看看. 正文 我发现关于一些早期的Struts2的漏洞,网上的分析文章并不多,不知道是不是我打开浏览器的方式不对,唯一看到的两 ...
- 我用Python爬虫挣钱的那点事
在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩的钱,写这篇文章总结下几种爬虫挣钱的方式. 1.最典型的就是找爬虫外包活儿.这个真是体力活,最早是在国外各个freelancer网站上找适合 ...
- Java 基础 - Set接口 及其实现类HashSet/LinkedHashSet/TreeSet
笔记: /**Set接口 及其实现类 * 公用操作同Collection: * * ①size(),clear()②isEmpty(),③contains(),④add()方法 和remove()方法 ...