SELinux入门简介
操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。
进程启动时所拥有的权限就是运行此进程的用户权限,一个进程能访问哪些文件取决于该文件的主、组和其他权限,这就是DAC
如一个用户运行了进程,运行此进程需要若干个文件,但该进程具有的权限是与该用户的权限一致,即该进程能访问此用户能够访问的所有文件。Linux自身是无法限定某个进程只能访问其运行需要的指定文件,因此MAC,就是不让进程在该用户权限下访问它不需要文件,即使进程是有权限访问的。
那么是如何实现的?
每个进程启动时,给它划定一个范围,只能访问此范围内的资源。但是每种程序运行依赖的资源或权限并不相同,并不可能为每一种程序制定范围。所以有如下两种工作级别。
SELinux工作级别
restrict:每个进程都受selinux的控制
targeted:仅有限的进程受到控制,通常只监控容易受到入侵的进程
SELinux工作模型
存在三种角色subject operation object
subject:主体,操作的发起者
operation:操作,主体能够执行什么样的操作取决于客体所支持的操作
object:客体,操作的作用对象
通常动作的发起者是进程,进程可以对诸如文件或者进程等对象执行操作,那针对文件来说可以支持的操作有读、写、打开、关闭及更改权限等,针对进程作为客体,执行的操作有杀死、创建等
每一个进程都有一个标签。操作系统中的每一个文件/目录客体object也都有一个标签。甚至连网络端口、设备,乃至潜在的主机名都被分配了标签。标签有五部分组成USER:ROLE:TYPE[LEVEL[:CATEGORY]]。user指的是SELinux的user非系统user,LEVEL和CATEGORY:定义层次和分类,只用于mls策略中。
进程通过标签划分在不同的域,文件通过标签定义为不同个类型。SElinux存在一规则库,其中定义了哪种域能够访问哪些类型内的文件。如某进程要访问一个文件,但是此进程的域与文件的类型不在同一范围内那么要如何突破限制,这时候就要修改标签。
SELinux的策略通常是编译成二进制文件以加速访问。
如何使用SELinux
(1) /etc/sysconfig/selinux打开或关闭SELinux
SELINUX=enforcing|permissive|disabled
从disable状态启用,需要重启系统,让系统上的所有文件重新打上标签。permissive不禁止,但会计入日志/var/log/audit/audit.log
getenforce/setenforce 0|1 获取或更改当前状态
(2)查看、更改文件标签
ps –Z :检查进程的安全上下文;
ls -Z :检查文件、目录的安全上下文
chcon [-u USER] [-r ROLE] [-t TYPE]
一般目录下的文件具有“目录名_t”的类型,更改文件标签类型可以在不更改主(组)的情况下限制进程对其的访问。
还原文件的默认标签 ,restorecon [-R] path/file
(3)SELinux的布尔型开关
getsebool -a: 列出SELinux的所有布尔值
setsebool: 设置SELinux布尔值,如:setsebool -P dhcpd_disable_trans=0,-P表示重启后也能生效,直接写入规则库
参考:http://blog.csdn.net/myarrow/article/details/9856095/
最新文章
- Map拷贝 关于对象深拷贝 浅拷贝的问题
- ExtJS入门教程02,form也可以很优雅
- [ActionScript 3.0] AS3 时间格式化方法
- Oracle数据文件管理
- Jordan Lecture Note-9: Principal Components Analysis (PCA).
- muduo网络库使用心得
- JQuery的方便之处——宽高设置、坐标值和滚动条+事件绑定机制
- Yii2整合AdminLTE后台主题
- ASP.Net Core中使用jquery-ajax-unobtrusive替换Ajax.BeginForm
- 我的WafBypass之道(upload篇)
- 一个发送邮件的java类,包含多种发送方法
- Delphi下让窗口不显示在任务栏的另类方法
- Tensorflow中的name_scope和variable_scope
- UI(一)
- SELinux安全系统基础
- 洛谷P2507 [SCOI2008]配对 [DP,贪心]
- [Jenkins] 全局变量
- 69、ViewPagerIndicator+ViewPager实现Tab
- android studio 中类似VS的代码折叠功能Region
- linux 修改openfiles
热门文章
- maltab-图像拼接(左右两幅图)
- ATS6.2安装部署笔记
- FPGA笔试必会知识点1--数字电路基本知识
- MTK6261 11C之Init Analysis【手记】
- 基于SpringBoot+Mybatis+AntDesign快速开发平台,Jeecg-Boot 1.1 版本发布
- IDEA与eclipse:vm参数调优笔记
- ReactiveX 学习笔记(27)使用 RxJS + Vue.js 进行 GUI 编程
- Spring-boot中@ConfigurationProperties,@Value,@PropertySource
- React Native: unable to load scripts from assets 'index.android.bundle' on real device
- linux 之 shell