Seliux简介

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:
1
2
3
4
5
6
7
8
一.SELInux简介
二.selinux工作机制
三.安全标签
四.配置selinux
五.测试selinux
六.设定selinux的 bool 标签
七.日志文件记录位置
八.semanage的使用

一.SELinux简介
    secure enhanced linux
    SELinux:工作于Linux内核中
    DAC:自主访问控制 //linux自带的,own,group,other //只有用户 Discretionary Access Control——DAC
        //问题:普通用户之间共享文件,要开放文件的其他人的权限,这样是不安全的
        //假如tmp中放了重要数据,DAC是无法保证安全的。
    MAC:强制访问控制    Mandatory  //强制对资源限制的访问
    
    [进程]安全上下文:
        进程的属主和属组,进程所能够访问的文件的最终权限,取决于:
            file:属主--->属组-->other //逐个匹配
    MAC:每一个进程,假如需要访问10个资源,那他也只能访问者10个资源,及时他对其他资源也有相应的权限
        DAC是自助访问功能,是没有的
        MAC:任何一个进程启动后,类似于放在一个sandbox内{事先准备的最小资源集},而不能以运行者的身份,到处访问其他资源
            这样进程所能够获取的资源,也仅仅是沙箱内部的资源
        但是如何建立沙箱,以及沙箱切换//selinux就是类似于为每一个进程提供了一个沙箱    
    安全沙箱:sandbox
        放到一个隔离访问空间中,类似于MAC
基本概念:
    主体:访问操作的主动发起者,它是系统中信息流的启动者,可以使信息流在实体之间流动。
    客体:信息的载体或从其他主体或客体接收信息的实体。
        主体有时也会成为访问或受控的对象,如一个主体可以向另一个主体授权,
        一个进程可能控制几个子进程等情况,这时受控的主体或子进程也是一种客体。
    访问控制分类:
        客体不受它们所依存的系统的限制,可以包括记录、数据块、存储页、存储段、文件、目录、
        目录树、库表、邮箱、消息、程序等,还可以包括比特位、字节、字、字段、变量、处理器、
        通信信道、时钟、网络结点等。
        
二.Selinux有两种工作级别
    strict:每个进程都收到selinux的控制 //NAS开发,设定较为复杂
    targetted:仅有限个进程受到selinux控制 //它是redhat开发的targeted,它只是对于主要的网络服务进行保护
        比如apache, sendmail, bind, postgresql等,不属于那些domain的就都让他们在unconfined_t里
        可导入性高,可用性好但是不能对整个系统进行保护。
    
    SELinux的工作方式:
        subject operation object
        我      打            你
        
        subject:进程
        object:进程、文件
            文件:open,write,close,chown,chmod
        
        subject:domain 操作者
        object:type 被操作对象
    ls -Z  //selinux为每一个文件和进程提供的安全标签,也为进程提供了安全标签
    ps auxZ //激 活selinux
        //原先是关闭的话,需要重启系统,内核会为每一个文件打标签
    
三.安全标签:
    共5段:后两段对于RHEL和CentOS是没有意义的
    user:role:type
        user:selinux的user
        role:角色,类似于group
        type:类型,作用,user所能够访问的对象范围,domain
    有了selinux自后,一个进程的权限,除了user-group-other之外还要受到
        沙箱的限制
de5b7545fd283d26177788fff10755e1.png    //为文件打好标签以后,进程的属主即使对该文件具有写权限,他也不一定能够访问,取决于沙箱的定义范围
    
    1.对selinux来讲,如果这个进程需要访问某个文件,在沙箱的域外的其他沙箱内,如何突破限制访问
        改变文件的类型:改为该进程所在域范围内,
    注意:任何一个进程到底能够访问哪些文件,并不是严格按照进程所在域和被访问者自己的类型是否匹配决定的
            而是依据selinux规则库决定的
    SELInux规则库
        规则:哪种域能访问哪种或哪些种类型文件
        
进程运行的过程
    进程能否访问一个文件?
        user->group->selinux的规则库
            有记录:授权-->允许
            有记录:拒绝-->拒绝,并记录日志
            没有记录:拒绝
        规则是二进制存放的:速度比较快
        但是每次都要匹配selinux:因此还是比较慢的
四.配置selinux
    selinux是否启用:
    给文件重新打标:
    设定某些布型特性
    1.SELinux状态:enforcing|permissive|disabled
            enforcing:强制,每个受限的进程都必然受限
            permissive:启用,每个受限的进程违规操作不会被禁止,但会被记录于审计日志中
            disabled:关闭
        注:当前系统为disabled,不管转换为何种类型,都需要重启OS才能启用
        getenforce
        setenforce 0|1 //
            仅仅当前有效,重启OS无效
            配置文件:/etc/sysconfig/selinux,/etc/selinux/config
    2.给文件打标签        
        chcon //change context ,修改标签
        chcon [OPTION]... CONTEXT FILE...
        chcon [OPTION]... [-u USER] [-r ROLE] [-l RANGE] [-t TYPE] FILE...
        chcon [OPTION]... --reference=RFILE FILE...        
        通常只会修改type,
        chcon unconfined_u:object_r:user_home_t:s0 aa
        -R :递归打标
        注意:一般文件复制到某目录后,标签会随之改变
        restorecon  FILE //当这个文件在策略里有定义时,可以恢复原来的文件标签。
            -R,-r //递归还原

1
2
3
4
5
6
7
          --reference=参考文件:使用指定参考文件的安全环境,而非指定值。
          -R, --recursive:递归处理所有的文件及子目录。 
          -v, --verbose:为处理的所有文件显示诊断信息。 
          -u, --user=用户:设置指定用户的目标安全环境。 
          -r, --role=角色:设置指定角色的目标安全环境。 
          -t, --type=类型:设置指定类型的目标安全环境。 
          -l, --range=范围:设置指定范围的目标安全环境

        
    3.标签查看:
        ls -Z 
        ls --context a.txt 
    4.复制和查找标签
        cp -Z,--conntext=CONTEXT 在拷贝的时候指定目的文件的security context 
        find /home/fu/ --context fu:fu_r:amule_t -exec ls -Z {} \:  
    5.查看se状态
        sestatus -v 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.USER
     1) user identity:类似Linux系统中的UID,提供身份识别,用来记录身份;安全上下文的一部分;
     2) 三种常见的 user:
            user_u :普通用户登录系统后的预设;
            system_u :开机过程中系统进程的预设;
            root :root 登录后的预设;
     3) 在 targeted policy 中 users 不是很重要;
     4) 在 strict policy 中比较重要,所有预设的 SELinux Users 都是以 “_u” 结尾的,root 除外。
2 ROLE
     1) 文件、目录和设备的role:通常是 object_r;
     2) 程序的role:通常是 system_r;
     3) 用户的role:targeted policy为system_r; strict policy为sysadm_r、staff_r、user_r;
         用户的role,类似系统中的GID,不同角色具备不同的的权限;用户可以具备多个role;但是同一时间内只能使用一个role;        
     4) 使用基于RBAC(Roles Based Access Control) 的strict和mls策略中,用来存储角色信息
3 TYPE
     1) type:用来将主体(subject)和客体( object )划分为不同的组,给每个主体和系统中的客体定义了一个类型;为进程运行提供最低的权限环境;
     2) 当一个类型与执行中的进程相关联时,其type也称为domain;
     3) type是SElinux security context 中最重要的部位,是 SELinux Type Enforcement 的心脏,预设值以_t结尾;
     LEVEL和CATEGORY:定义层次和分类,只用于mls策略中
           LEVEL:代表安全等级,目前已经定义的安全等级为s0-s15,等级越来越高
           CATEGORY:代表分类,目前已经定义的分类为c0-c1023

     
五.测试selinux
    1.yum install httpd//

1
2
3
4
5
6
7
     2.<html>
             <title>Test page</title>
             <body>
                 <h1>Welcome to Test</h1>
                 <p> hello </p>
             </body>
     </html>

    unconfined_u:object_r:httpd_sys_content_t:s0
    ps auxZ |grep httpd
        system_u:system_r:httpd_t:s0
    //httpd_sys_content_t是httpd_t的一个子类型,因此httpd_t该进程能够访问index.html    
    3.vim /etc/httpd/conf/httpd.conf

1
2
3
4
5
6
7
         DocumentRoot  "/www/html"
         <Directory  "/www/html" >
         ...
         </Directory>
       mkdir -pv /www/html
       systemctl restart httpd
       cp / var /www/html/index.html /www/html

      ls -Z
        unconfined_u:object_r:default_t //类型已经修改
    4.再次访问
        forbidden
        一:setenforce 0//可以再次访问
        二:chcon -t httpd_sys_content_t a.html
      
    注意:/var/www/html目录中,修改type是没有效果的,selinux不会禁止,除非,改变原有的目录
六.设定selinux的bool标签
    setsebool 是用来切换由布尔值控制的 SELinux 策略的,
    getsebool 获取bool值
    
    getsebool -a //查看所有的
    getsebool ftp_home_dir
    
    setsebool
        -P //保存到策略文件中,永久有效
    setsebool [ -PNV ] boolean value | bool1=val1 bool2=val2 ...
    setsebool ftp_home_dir on
                    on/off  1/0 :1表示开启 //下次开机失效
            -P:保存到策略文件,更新二进制文件
    什么是SElinux布尔值呢?SEliux布尔值就相当于一个开关,精确控制SElinux对某个服务的某个选项的保护
    setsebool ftp_home_dir on //开始保护,但是临时生效
七.日志文件记录位置
    /var/log/audit/audit.log
    tail audit.log
    selinux的管理工具:
        semanage
    
八.semanage的使用
    相关命令:setsebool,getsebool,seinfo,sesearch
    semanage {login|user|port|interface|fcontext|translation} -l
    semanage fcontext -{a|d|m} [-frst] file_spec
        -l:查询。
        fcontext:主要用在安全上下文方面。 
        -a:增加,你可以增加一些目录的默认安全上下文类型设置。
        -m:修改。
        -d:删除。
    这是一个功能强大的策略管理工具,有了它即使没有策略的源代码,也是可以管理安全策略的。











本文转自MT_IT51CTO博客,原文链接:http://blog.51cto.com/hmtk520/1981448,如需转载请自行联系原作者

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
XML 数据格式
XLink 和 XPointer 简介
XLink 和 XPointer 简介
32 5
|
7月前
|
编译器 程序员 C语言
C++系列一: C++简介
C++系列一: C++简介
|
7月前
|
编译器 C语言 C++
PCLINT 简介
PCLINT 简介
135 0
|
存储 算法 内存技术
多媒体系统简介
一、多媒体系统简介 多媒体系统是指能够处理和展示多种媒体信息的计算机系统。它可以处理和播放音频、视频、图像等多种形式的媒体数据,并提供交互式的操作和用户界面。多媒体系统广泛应用于娱乐、教育、广告、通信等领域。 多媒体系统通常由以下几个组成部分构成: 1. 媒体输入设备:用于将外部的媒体数据输入到计算机系统中,如麦克风、摄像头、扫描仪等。 2. 媒体处理软件:用于对媒体数据进行处理和编辑的软件,如音频编辑软件、视频编辑软件、图像处理软件等。 3. 媒体存储设备:用于存储媒体数据的设备,如硬盘、光盘、闪存等。 4. 媒体输出设备:用于将处理后的媒体数据输出到外部设备或显示器上,如音箱、显示器、投影
330 0
|
Android开发 API 测试技术
[译] WorkManager 简介
这篇文章是 WorkManager 系列中的第一篇。我们将探讨 WorkManager 的基础知识,如何以及何时使用它,以及幕后发生了什么。然后我们将深入研究更复杂的用例。
745 0
|
JavaScript 前端开发 C++
cheerp 简介
这个文章主要介绍了为什么要用cheerp技术以及和其他对标的技术对比,他的闪光点在哪里。 WebAssembly 是一种中间码用于加速浏览器端应用,目前有多种语言可以编译或者交叉到这种格式。当然这个不是本文的内容,详细了解请移步 wasm官网 目前支持: cc++是官方推荐的方式,详细使用见文档;其他语言 AssemblyScript:语法和 TypeScript 一致,对前端来说学习成本低,为前端编写 WebAssembly 最佳选择; Rust:语法复杂、学习成本高,对前端来说可能会不适应。
2715 0
hcatalog简介和使用
转自:http://blog.csdn.net/lalaguozhe/article/details/9083905 转自:https://yq.aliyun.com/articles/37442
988 0
|
Shell 网络协议 安全
|
关系型数据库 数据安全/隐私保护 监控
|
Java Android开发 C++
下一篇
DataWorks