zoukankan      html  css  js  c++  java
  • Linux之强大的selinux

    简单点说,SELinux就是用来加强系统安全性的。它给一些特定程序(这些程序也在不断增加)做了一个沙箱,它将文件打上了一个安全标签,这些标签属于不同的类,也只能执行特定的操作,也就是规定了某个应用程序设定了你可以访问那些文件或目录。

    这里比较重要的知识点有:

    • selinux的工作原理
    • 工作模式和工作类型(selinux启用,布尔规则)
    • 安全上下文(上下文修改,安全标签,端口标签)
    • 日志管理

    查看SELinux当前状态:

    一、工作原理

    二、工作模式(运行状态)

    Enforcing、Permissive、Disabled

    1、获取当前SELinux运行状态

    getenforce
    可能返回结果有三种:Enforcing、Permissive 和 Disabled。

    Disabled 代表 SELinux 被禁用,Permissive 代表仅记录安全警告但不阻止可疑行为,Enforcing 代表记录警告且阻止可疑行为。

    2、改变 SELinux 运行状态

    setenforce [ 1 | 0 ]

    切换disabled状态或者从disabled状态切换至别的状态都需要重启且只能修改配置文件。而enforceing(1)和Permissive(0)两种状态间切换不需要重启,重启时会为整个文件系统重新创建安全标签(touch /.autorelabel && reboot)。

    /boot/grub/grub.conf下修改状态优先级比/etc/selinux/config高

    若是想要永久变更系统 SELinux 运行环境,可以通过更改配置文件 /etc/sysconfig/selinux或/etc/selinux/config实现。

    工作类型(或策略):

    默认targeted类型,用来保护常见的网络服务,仅有限进程收到selinux控制,只监控容易被入侵的进程,centos5保护88个服务。

    布尔规则:

    SELinux根据不同的工作类型对这些规则打开或关闭(on|off<布尔值1|0>),然后通过规则的开启与关闭具体地限制不同进程对文件的读取。

    getsebool -a 或者 sestatus -b      # 查看当前工作类型下各个规则的开启与否

    setsebool -P 规则名称 [0|1]    # 修改当前工作类型下指定规则的开启关闭,-P表示同时修改文件使永久生效

    三、安全上下文

    安全上下文存在于进程与文件中,context随进程一起存入内存中,文件的context存放在其对应的inode中,因此进程在访问文件时,要先读取inode,再判断是否能够访问该文件。

    ls -Z   file # 显示文件的安全上下文
    ps -eZ   # 显示所有进程的安全上下文

    semanage来自policycoreutils-python包,centos 6上默认没安装.

    系统中的每个文件都会有context,使用ls -Z查询出来的context就是当前context,系统把每个文件的默认context记录下来并保存,这样系统记录下来的就是期望context。semanage命令可以管理每个文件的期望context,也叫期望标签。

    安全上下文(当前context):

    semanage fcontext -l                     # 查看所有的期望SELinux标签
    semanage fcontext -l                     # 查看所有的期望SELinux标签
    semanage fcontext -a -t type 目标目录     # 添加期望SELinux标签
    
    semanage fcontext -m -t type 目标目录     # 修改期望SELinux标签
    semanage fcontext -d -t type 目标目录     # 删除期望SELinux标签

    修改规范:

    semanage fcontext -a -t type 目录(/.*)?

    安全标签(期望context):标签错误将导致启动异常,文件不可用等故障。

    给文件重新打安全标签: 
     chcon [OPTION]... [-u USER] [-r ROLE] [-t TYPE] FILE... 
           chcon [OPTION]... --reference=RFILE FILE... 
     -R:递归打标; 
    恢复目录或文件默认的安全上下文: 
     restorecon [-R] /path/to/somewhere 

    端口标签:

    虽然听起来是修改端口号的,但是到底还是修改安全上下文的,我们用semanage工具,命令为semanage port

    查询某个服务的context type字段

      语法:semanage port -l |grep 服务名

    添加某个端口为指定服务的访问端口        

       语法:semanage port -a -t type -p 协议 端口号(不要与常用端口重复)

    例如添加ssh服务的端口号,默认为22

    四、SELinux日志管理

    yum install setroublesshoot*(重启生效)
        将错误的信息写入/var/log/message
    grep setroubleshoot/var/log/messages
    sealert-l UUID
        查看安全事件日志说明
    sealert-a /var/log/audit/audit.log
        扫描并分析日志
  • 相关阅读:
    剑指offer——最小的K个数和数组中第K大的元素
    Leetcode刷题指南链接整理
    160. Intersection of Two Linked Lists
    100. Same Tree
    92. Reverse Linked List II
    94. Binary Tree Inorder Traversal
    79. Word Search
    78,90,Subsets,46,47,Permutations,39,40 DFS 大合集
    0x16 Tire之最大的异或对
    0x16 Tire
  • 原文地址:https://www.cnblogs.com/duanxin1/p/9784178.html
Copyright © 2011-2022 走看看