SELinux 的运作模式
主体 (Subject):SELinux 主要想要管理的就是程序,因此你可以将『主体』跟 process 划上等号;
目标 (Object): 主体程序能否存取的『目标资源』一般就是文件系统。因此这个目标项目可以等文件系统划上等号;
政策 (Policy): 由于程序与档案数量庞大,因此 SELinux 会依据某些服务来制订基本的存取安全性政策。这些政策内还会有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。在目前的 CentOS 6.x 里面仅有提供两个主要的政策如下,一般来说,使用预设的 target 政策即可。
targeted:针对网络服务限制较多,针对本机限制较少,是预设的政策;
mls:完整的 SELinux 限制,限制方面较为严格。
安全性本文 (security context): 我们刚刚谈到了主体、目标与政策面,但是主体能不能存取目标除了要符合政策指定之外,主体与目标的安全性本文必须一致才能够顺利存取。 这个安全性本文 (security context) 有点类似文件系统的 rwx 啦!安全性本文的内容与设定是非常重要的! 如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),当然就会一直出现『权限不符』的错误讯息了!
(1)主体程序必须要通过 SELinux 政策内的规则放行后,就可以与目标资源进行安全性本文的比对, (2)若比对失败则无法存取目标,若比对成功则可以开始存取目标。
安全性本文 (Security Context)
身份识别 (Identify): 相当于账号方面的身份识别!主要的身份识别则有底下三种常见的类型:
root:表示 root 的账号身份,如同上面的表格显示的是 root 家目录下的数据啊!
system_u:表示系统程序方面的识别,通常就是程序啰;
user_u:代表的是一般使用者账号相关的身份。
角色 (Role): 透过角色字段,我们可以知道这个数据是属于程序、档案资源还是代表使用者。一般的角色有:
object_r:代表的是档案或目录等档案资源,这应该是最常见的啰;
system_r:代表的就是程序啦!不过,一般使用者也会被指定成为 system_r 喔!
类型 (Type): 在预设的 targeted 政策中, Identify 与 Role 字段基本上是不重要的!重要的在于这个类型 (type) 字段! 基本上,一个主体程序能不能读取到这个档案资源,与类型字段有关!而类型字段在档案与程序的定义不太相同,分别是:
type:在档案资源 (Object) 上面称为类型 (Type);
domain:在主体程序 (Subject) 则称为领域 (domain) 了!
domain 需要与 type 搭配,则该程序才能够顺利的读取档案资源啦!
SELinux 的启动、关闭与观察
查看并永久修改selinux的启动和政策
注:如果由 enforcing 或 permissive 改成 disabled ,或由 disabled 改成其他两个,那也必须要重新启动。
SELinux type 的修改
注:单纯的复制文件时,SELinux 的 type 字段是会继承目标目录的(即会变成和所到的目录的一样);如果是移动,那么连同 SELinux 的类型也会被移动过去。
复原成原有的 SELinux type:
默认目录的安全性本文查询与修改
semanage(需要安装:yum install policycoreutils-python):
利用 semanage 设定 /srv/vbird 目录的默认安全性本文为 public_content_t(修改的就是默认值):
政策查询:seinfo(需要安装:yum install setools-console)
政策为targeted时,针对httpd制定的规则为:
如果你想要找到有 httpd 字样的安全性本文类别时, 就可以使用『 seinfo -t | grep httpd 』来查询了!如果查询到相关的类别或者是布尔值后,想要知道详细的规则时, 就得要使用 sesearch 这个指令了!
sesearch:
布尔值的查询与修改:(getsebool,setsebool)
整篇最重要的内容
setroubleshoot --> 错误讯息写入 /var/log/messages
需要软件:setroublshoot 与 setroubleshoot-server
原本的 SELinux 信息本来是以两个服务来记录的,分别是 auditd 与 setroubleshootd。既然是同样的信息, 因此 CentOS 6.x 将两者整合在 auditd 当中啦!所以,并没有 setroubleshootd 的服务存在了喔!因此, 当你安装好了 setroubleshoot-server 之后,请记得要重新启动 auditd,否则 setroubleshootd 的功能不会被启动的。
演示:
让 setroubleshoot 主动的发送产生的信息到我们指定的 email:
SELinux 错误克服的总结:
1、在服务与 rwx 权限都没有问题,却无法成功的使用网络服务时;
2、先使用 setenforce 0 设定为宽容模式;
3、再次使用该网络服务,如果这样就能用,表示 SELinux 出问题,请往下继续处理。如果这样还不能用,那问题就不是在 SELinux 上面!请再找其他解决方法,底下的动作不适合你;
4、分析 /var/log/messages 内的信息,找到 sealert -l 相关的信息并且执行;
5、找到 Allow Access 的关键词,照里面的动作来进行 SELinux 的错误克服;
6、处理完毕重新 setenforce 1 ,再次测试网络服务吧!
相关资料:《鸟哥的私房菜》
分享到:
相关推荐
1,并非所有的 Linux distributions 都支持 SELinux 的,不过CentOS都有对SELinux的支持。? 目前 SELinux 支持三种模式,分别如下: ?enforcing:强制模式,代表 SELinux 运作中,且已经正确的开始限制 domain/type ...
linux selinux development
Selinux的基本配置,SELinux 是 2.6 版本的 Linux 内核中提供的强制访问控制(MAC)系统。对于目前可用的 Linux安全模块来说,SELinux 是功能最全面,而且测试最充分的,它是在 20 年的 MAC 研究基础上建立的。...
selinux-master
SELinux by example is the ... It also contains a comprehensive SELinux policy language reference and covers exciting new features in Fedora Core 5 and the upcoming Red Hat Enterprise Linux version 5.
如何关闭linux下selinux服务 txt 手册
linux SELinux中文
selinux 经典书籍 共四本 SELinux NSA's Open Source Security Enhanced Linux SELinux by Example: Using Security Enhanced Linux SELinux简明学习指南.pdf SELinux System Administration Second Edition
SELinux(Security-Enhanced Linux)的简单配置,涉及SELinux的工作模式、配置文件修改、查看和修改上下文信息,以及恢复文件或目录的上下文信息。这篇文章主要介绍了Linux中selinux基础配置,需要的朋友可以参考下
SELinux 是Security-Enhanced Linux 的简写,意指安全增强的linux。它不是⽤来防⽕墙设置的。但它对Linux系统的安全很有⽤。Linux内核 (Kernel) 从2.6就有了SELinux。 SELinux是内置在许多GNU / Linux 发⾏版中的...
学习linux selinux的同学可以下载。虽然有些枯燥,且是英文的,但看完还是会有收获。
linux让防火墙(selinux)开启端口,开启80 3306 等端口
SELinux NSAs Open Source Security Enhanced Linux.rar
想学习Linux seLinux的同学可以下载下来看看。虽然有些枯燥,但学了后还是有些收获的。
该书详细介绍了linux中关于selinux部分功能的实现流程和关键代码分析
SELinux: NSA's Open Source Security Enhanced Linux By Bill McCarty Publisher: O'Reilly 2004 | 256 Pages | ISBN: 0596007167 | CHM | 1 MB
SELinux:为任何Linux环境带来世界级的安全性! SELinux为Linux/UNIX集成商、管理员和开发人员提供了最先进的平台,用于构建和维护高度安全的解决方案。既然SELinux已经包含在Linux 2.6内核中,并且默认情况下在...
比较新的讲SELinux的入门书籍,包括MLS,是难得得覆盖面很全的书
linux如何关闭selinux? ⾸先我们可以⽤命令来查看selinux的状态 getenforce 这个命令可以查看到selinux的状态,当前可以看到是关闭状态的。 还有⼀个命令也可以查看出selinux的状态。 sestatus -v 还有⼀个...