zoukankan      html  css  js  c++  java
  • Linux的selinux

    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 ,再次測试网络服务吧。


        相关资料:《鸟哥的私房菜》





    版权声明:本文博客原创文章,博客,未经同意,不得转载。

  • 相关阅读:
    使用flaskcode创建网页代码编辑器
    jsp资料参考
    商城类需求确认单
    “酒香也怕巷子深” Smartflow-Sharp 工作流
    sql server distribution 库数据文件过大
    大数据平台HADOOP、HIVE、HDSF等介绍和使用看这一篇就够了
    vue 虚拟列表滚动
    关于js逗号运算符与reduce只有1个元素
    css 2行省略 多行省略
    【神经网络搜索】NasBench301 使用代理模型构建Benchmark
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4653813.html
Copyright © 2011-2022 走看看