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 ,再次測试网络服务吧。
相关资料:《鸟哥的私房菜》
版权声明:本文博客原创文章,博客,未经同意,不得转载。
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4653813.html,如需转载请自行联系原作者