zoukankan      html  css  js  c++  java
  • 深入理解SELinux

     

      

    深入理解SELinux

    Security-Enhanced Linux (SELinux)是强制访问控制MAC在Linux内核中的一种实现——在自主访问控制(DAC)检查之后,再次检查允许的操作。SELinux通过定义的策略,强制限定Linux系统中对文件的操作、进程的权限。

    MAC:mandatory access control

    DAC:discretionary access controls

     

    优点

    1. 所有文件和进程都加上一个特定类型标签,一个类型标签为进程定义了一个域,而为文件定义了一种类型。SELinux策略中指定,进程访问文件的规则以及进程间通信规则。
    2. 细化访问控制。SELinux中访问能力取决相关信息,例如用户、角色、类型和等级(可选选项)。
    3. 策略由管理员设置,全系统范围有效。
    4. 防止权限升级,如果有进程被挟持了(compromised),攻击者只能访问有限的资源(该进程所能访问的资源)。
    5. 加强数据的安全性和完整性

    注意:

    SELinux不是杀毒软件

    SELinux不是口令密码、防火墙或者其他安全系统的替代物

    SELinux不是一体化的安全解决方案

     

    SELinux是在已有的安全解决方案基础之上,增强安全性,而不是替代原有的安全解决方案。

     

    工作状态

    Enforcing(启用状态):SELinux策略是强制使用。SELinux会根据策略拒绝访问

    Permissive(自由状态):SELinux策略不是被强制使用的,仅会根据策略提醒用户

    Disabled(禁用状态):SELinux不启用

    ~]# getenforce  # 查看启用状态
    Enforcing

     ~]# setenforce 0   # 关闭SELinux
      ~]# getenforce 
      Permissive  

    工作模式

    strict(严格模式):每个进程都会受到Selinux的控制

    targeted (宽松模式):仅对部分进程启用selinux的控制

     

    安全标签

    格式:

    user, role, type, level

    user, 用户

    role, 角色

    type, 类型

    level, 等级,可选项

    使用 ls -Z  可查看文件的标签

    [root@node1 tmp]$ls -Z mbr.bak 
    -rw-r--r--. root root system_u:object_r:tmp_t:s0       mbr.bak

    第四个字段即为安全标签——“system_u:object_r:tmp_t:s0”

    查看进程的安全标签——ps  -Z

    [root@node1 tmp]$ps aux -Z
    LABEL                           USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    system_u:system_r:init_t:s0     root          1  0.0  0.1  17128  1312 ?        Ss   03:06   0:01 /sbin/in
    system_u:system_r:kernel_t:s0   root          2  0.0  0.0      0     0 ?        S    03:06   0:00 [kthrea]
    system_u:system_r:kernel_t:s0   root          3  0.0  0.0      0     0 ?        S    03:06   0:00 [migrat]
    system_u:system_r:kernel_t:s0   root          4  0.0  0.0      0     0 ?        S    03:06   0:00 [ksofti]
    ...

    修改安全标签

     chcon命令

    修改文件的SELinux安全上下文

    常用选项

    -u  指定用户

    -r   指定角色

    -t   指定类型或域

    -R    递归修改文件或文件夹

     

    修改文件安全上下文类型

    [root@node1 tmp]$ls -Z mbr.bak   
    -rw-r--r--. root root system_u:object_r:tmp_t:s0       mbr.bak
    [root@node1 tmp]$chcon -t tmp_tt_t mbr.bak                               # 修改文件的安全上下文类型
    [root@node1 tmp]$ls -Z mbr.bak                          
    -rw-r--r--. root root system_u:object_r:tmp_tt_t:s0    mbr.bak

    restorecon命令

    还原文件安全上下文

    常用选项

      -R  递归还原文件或文件夹

    getsebool

    查看进程或服务本身开启或关闭的功能模块

    -a  查看所有布尔值

    setsebool

      修改指定模块是否使用SELinux

      -P  将修改结果保存本地磁盘

    相关文件

    /etc/selinux/config | /etc/sysconfig/selinux  配置SELinux启用状态和工作模式的文件

    /var/log/audit/audit.log       SELinux变动日志

  • 相关阅读:
    leetcode701. Insert into a Binary Search Tree
    leetcode 958. Check Completeness of a Binary Tree 判断是否是完全二叉树 、222. Count Complete Tree Nodes
    leetcode 110. Balanced Binary Tree
    leetcode 104. Maximum Depth of Binary Tree 111. Minimum Depth of Binary Tree
    二叉树
    leetcode 124. Binary Tree Maximum Path Sum 、543. Diameter of Binary Tree(直径)
    5. Longest Palindromic Substring
    128. Longest Consecutive Sequence
    Mac OS下Android Studio的Java not found问题,androidfound
    安卓 AsyncHttpClient
  • 原文地址:https://www.cnblogs.com/vathe/p/6866649.html
Copyright © 2011-2022 走看看