• SElinux管理


    SElinux: 是Linux的一个强制访问控制的安全模块

    SElinux的相关概念:

    对象:文件、目录、进程、端口等
    主体:进程称为主体
    SElinux将所有的文件都赋予一个type类型的标签,所有的进程也赋予一个domain类型的标签。domain标签能够执行的操作由安全策略里定义
    
    #ubuntu没有使用selinux
    
    安全策略:定义主体读取对象的规则数据库,定义那些行为是允许的,那些行为是拒绝的。

    SElinux的四种工作类型

    • Strict:CentOS 5,每个进程都受到selinux的控制

    • targeted:用来保护常见的网络服务,仅有限进程受到selinux控制,只监控容易被入侵的进程

    • minimum:CentOS 7,修改的targeted,只对选择的网络服务

    • mls:提供MLS(多级安全)机制的安全性

    targeted为默认类型,其他三种都不再使用了
    

    SElinux的安全上下文

    安全上下文:就是一个标签。规定只有特定标志的进程才能访问特定标识的文件或目录

    在linux中,一切皆文件
    在selinux中,一切皆对象。
    

    安全上下文有五个元素组成:

    user:role:type:sensitivity:category
    
    (1)User:指示登录系统的用户类型,进程:如system_u为系统服务进程,是受到管制的,unconfined_u为不管制的进程,用户自己开启的,如 bash,文件:system_u系统进程创建的文件, unconfined_u为用户自已创建的文件
    
    (2)Role:定义文件,进程和用户的用途:进程:system_r为系统服务进程,受到管制。unconfined_r 为不管制进程,通常都是用户自己开启的,如 bash,文件:object_r
    3)Type:指定数据类型,规则中定义何种进程类型访问何种文件Target策略基于type实现,多服务共用:public_content_t
    
    (4)Sensitivity:限制访问的需要,由组织定义的分层安全级别,如unclassified,secret,top,secret, 一个对象有且只有一个sensitivity,分0-15级,s0最低,Target策略默认使用s05)Category:对于特定组织划分不分层的分类,如FBI Secret,NSA secret, 一个对象可以有多个categroy, c0-c1023共1024个分类, Target 策略不使用category
    
    启用和禁用selinux
    selinux的状态
    enforcing:启用selinux,强制,每个受限的进程都必然受限
    
    permissive:启用selinux,但是违反了策略只会报警,不会阻止
    
    disabled:不启用selinux
    
    相关命令

    getenforce: 获取selinux当前状态

    sestatus :查看selinux状态

    setenforce 0|1 0: 设置为permissive 1: 设置为enforcing

    通过配置文件启用或禁用
    /boot/grub/grub.conf 在kernel行使用selinux=0禁用SELinux
    
    /boot/grub2/grub.cfg 在linux16行使用selinux=0禁用SELinux
    
    /etc/selinux/config 或 /etc/sysconfig/selinux 中 SELINUX=
    {disabled|enforcing|permissive}
    

    文件安全标签的管理

    给文件重新打标签:chcon工具

    chcon -R -t 上下文 目录或者文件
    
    #-R, --recursive:递归处理所有的文件及子目录
    

    恢复文件的默认标签:restorecon

    restorecon [-R] /path/to/somewhere  #目录文件就加R参数
    

    修改默认的标签:semanage工具

    #查看默认的安全上下文
    semanage fcontext -l
    
    #添加安全上下文
    semanage fcontext  -a -t httpd_sys_content_t   ‘/testdir(/.*)?’ #-a表示添加
    restorecon -Rv /testdir
    
    #删除安全上下文
    semanage fcontext  -d -t httpd_sys_content_t   ‘/testdir(/.*)?’
    

    管理端口标签

    #查看端口标签
    semanage port -l
    
    #添加端口
    semanage port -a -t port_label -p tcp|udp PORT
    semanage port -a -t http_port_t  -p tcp 9527
    
    #删除端口
    semanage port -d -t port_label -p tcp|udp PORT
    semanage port -d -t http_port_t  -p tcp 9527
    
    #修改现有端口为新标签
    semanage port -m -t port_label -p tcp|udp PORT
    semanage port -m -t http_port_t -p tcp 9527
    

    管理SELinux布尔值

    对指定服务的功能进行设置,服务能否正常启用和服务是否正常启动和selinux对应的bool值是否开启共同决定。

    #布尔型规则:
    getsebool
    setsebool
    #临时生效,重启就不生效了  永久生效: 加上一个大写的P
    
    #查看指定的服务是否开启了
    getsebool -a | grep 服务名
    
    #查看bool命令:
    getsebool [-a] [boolean]
    semanage boolean -l
    semanage boolean -l -C 查看修改过的布尔值
    
    #设置bool值命令:
    setsebool [-P] boolean value(on,off)
    setsebool [-P] Boolean=value(10
  • 相关阅读:
    双vip的MySQL高可用集群
    san.js源码解读之工具(util)篇——extend函数
    Arcgis如何制作专题地图中漂亮的饼图
    ES6知识总结
    SpringMVC之对JSON的支持以及全局异常处理
    力扣经典题目解析--旋转图像(字节二面)
    大数据ClickHouse进阶(六):Distributed引擎深入了解
    【科学文献计量】利用python将中国知网文献导出的文件整理为文献引用格式+摘要正文,并写入到Word中
    多任务多场景
    工厂模式——工厂方法模式+注册表
  • 原文地址:https://www.cnblogs.com/heyongshen/p/16551006.html