LInux基础——SELinux

2023-11-20

SELinux是什么?

SELinux 是 Security Enhanced Linux 缩写,采用委任式存取控制,是在进行程序、文件等细节权限设置依据的一个核心模块

存取控制

自主式(DAC)

当程序要操作文件时,系统根据程序的Owner/Group,对比文件的权限,若通过权限检查,则可操作文件,但可能造成问题:

  • root 具有最高权限,若某程序属于root,则该程序可操作系统的任何文件
  • 使用者可利用程序来变更文件的权限

委任式(MAC)

也即是SELinux所采用的方式,可针对特定程序与特定文件来进行权限的控制

  • 即使是root,在使用不同程序时所取到的权限也不一定是root,而是根据该程序的设定
  • 程序也不能任意使用系统文件,因为每个文件也有针对该程序可用的权限设定

SELinux组成

主要组成部分为Subject、Object、Policy和security context

Subject即是要管理的程序,Object即是要操作的文件系统,Policy为基本的存取安全性策略,分别为

  • targeted:针对网络服务限制较多,针对本机限制较少,是默认的政策
  • minimum:由target修改而来,仅针对选择的程序来保护
  • mls:完整的权限限制,限制方面较为严格

Subject与Object的security context要一致才能顺序存取,其分为3个部分

  • Identity:unconfined_u 表示文件来自不受限程序产生,system_u 表示文件由系统产生
  • Role:object_r 表示文件,system_r 表示程序或一般使用者,unconfined_r 表示不受限角色
  • Type:在Subject则称为domain,在Object中称为Type,两者需一致

SELinux安装

Ubuntu不自带SELinux,需要自行安装

systemctl stop apparmor
apt purge apparmor
apt update && sudo apt upgrade -yuf
apt install policycoreutils selinux-utils selinux-basics

SELinux开关及模式

  • enforcing:强制模式,表示SELinux运行中,且正在限制domain/type
  • permissive:宽容模式,表示SELinux运行中,但仅有警告信息并未限制domain/type,多用于debug
  • disabled:关闭

命令 getenforce 可获取SELinux的模式,上面安装完后,默认为disabled

在这里插入图片描述

命令 setenforce设置SELinux模式,0为permissive,1为enforcing,但实际上只能在开机状态下切换enforcing和permissive,而不能从disabled直接切换为enforcing或permissive,反之也不行

在这里插入图片描述

故想要打开SELinux,需通过vi将 /etc/selinux/config 的SELIUNX=disabled改为permissive或enforcing

vi /etc/selinux/config

这里需要注意的是,enforcing模式可能会导致无法开机(根据鸟哥的解决方法,需转回permissive下运行restorecon -Rv / 才能转为enforcing,但实际操作还是不行),若出现这种情况,则要在开机时下狂按esc进入GRUB选择界面,如下

在这里插入图片描述

再按e编辑命令,找到selinux,将其改为0,如果没有自行在该行添加,按Ctrl + x 保存并启动,启动完后还是乖乖改为permissive

在这里插入图片描述

命令 sestatus 可查看SELinux的相关信息,如挂载点和Policy

在这里插入图片描述

SELinux运行原理

在Policy为targeted时,Subject和Object是否具有读写权限,最重要的是security context的Type

在这里插入图片描述

如上,可用命令 ps -eZ 和 ls -Z 查看程序和文件的security context

  • 调用一个二进制文件 /usr/sbin/cron,其Type为crond_exec_t
  • crond_exec_t 会让该文件生成的程序(Subject)具有crond这个domain
  • Policy已针对这个domain制定了许多规则,包括这个domain可读取的Object类型
  • 根据Policy可知,crond 可读取 system_cron_spool_t 这个类型的文件(Object),所以将文件放到/etc/cron.d即可被crond程序读取
  • 但最终能否读到,还得看rwx是否符合linux权限

并非所有程序都会被SELinux限制,Type为unconfined_t的程序可直接判断rwx

在这里插入图片描述

SELinux Policy规则

getsebool

命令 getsebool 可查询SELinux的规则开启与否,-a列出所有

在这里插入图片描述

setsebool

命令 setsebool 可打开/关闭SELinux规则,-P 将设置同时写入文件
在这里插入图片描述

seinfo

命令 seinfo 可查询规则信息,–all列出所有信息,-u仅列出user,-r仅列出role,-t仅列出type,-b仅列出规则布尔值

在这里插入图片描述

如上列出统计信息,如下加上-u和-r 列出所有Identity 和Role

在这里插入图片描述

sesearch

命令 sesearch 可查询domain可存取的Type,-A列出后面资料中允许存取的相关资料,-s指定domain,-t指定Type,-b指定规则

在这里插入图片描述

如上查询crond_t,可查到 system_cron_spool_t 的dir和file

修改security context

chcon

命令 chcon 手动修改security context,-R目录递归修改,-t 指定type,-u指定role,-v显示变更结果,–reference=file 根据某个文件为模板进行修改

在这里插入图片描述

restorecon

命令 restorecon 可让文件恢复正确的type,-R递归修改,-v显示修改过程

在这里插入图片描述

semanage

restorecon 能够恢复文件的type,说明有地方记录着每个文件的默认type,而命令 semanage 就是用于操作默认type,-l查询,-a增加,-m修改,-d删除,fcontext表示用于security context

semanage fcontext -l | grep -E '^/etc | ^/etc/cron'

如上查看 /etc 和 /etc/cron的默认type(命令不知道为什么报错/var/lib/selinux/deault/active/policy.kern未找到)

semanage fcontext -a -t system_cron_spool_t "space(/.*)?"
restorecon -Rv space
ls -Z space

如上将 space目录下文件的type预设为system_cron_spool_t,然后通过restorecon恢复

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

LInux基础——SELinux 的相关文章

随机推荐

  • 回溯法展开状态空间树

    解空间 假设问题的解能用n元组 X1 Xn 表示 其中Xi取自某个有穷集Si 这些n元组构成的集合称为问题的解空间 假设集合Si的大小 Si mi 则解空间的大小m m1 m2 mn 注意这里解空间的大小取决于元组中每个元素的可能取值的数量
  • STM32内部参照电压VREFIN的使用

    一 STM32的内部参照电压VREFINT和ADCx IN17相连接 它的作用是相当于一个标准电压测量点 和MSP430不一样 内部参照电压VREFINT只能出现在主ADC1中使用 内部参照电压VREFINT与参考电压不是一回事 ADC的参
  • 详解git pull和git fetch的区别:

    前言 在我们使用git的时候用的更新代码是git fetch git pull这两条指令 但是有没有小伙伴去思考过这两者的区别呢 有经验的人总是说最好用git fetch git merge 不建议用git pull 也有人说git pul
  • @Slf4j 实现日志输入到外部文件

    1 添加一个配置文件 src main resources logback spring xml
  • 使用html+css+javaScript 完成计算器

    一 先用html与css搭建骨架 思路 将计算器的数字按钮放进一个表格里 再通过css修饰 然后对指定的数字按钮或功能按钮添加事件 将需要计算的式子放进一个字符串里 最后通过全局方法eval 计算出来 html的骨架搭建 这里的用一个 di
  • 西门子300系列基本逻辑编程:手自动选择程序及自定义脉冲模块的使用

    西门子内置脉冲发生器 M0 0 0 1S M0 1 0 2S M0 2 0 4S M0 3 0 5S M0 4 0 8S M0 5 1 0S M0 6 1 6S M0 7 2 0S 案例 手自动选择程序 控制要求 I0 0是手自动选择开关
  • Vmware虚拟机和主机之间复制、粘贴内容、拖拽文件的详细方法

    Vmware正确安装完linux虚拟机之后 这里以Ubuntu为例 其他linux或windows系统也是类似的 如果你使用的默认配置 正常情况下就可以复制 粘贴和拖拽内容的 双方向都是支持的 如果不能复制和拖拽一般是vmware tool
  • mongodb入门(2)

    目录 一 mongodb入门 1基础概念 2连接mongodb 3 数据库 4 集合 5 文档 1 插入文档 2 更新文档 3删除文档 4查询文档 6用户 1 创建用户 2查询用户 3删除用户 4修改用户 5修改密码 一 mongodb入门
  • 10 个牛逼的单行代码编程技巧,你会用吗?

    标题本文列举了十个使用一行代码即可独立完成 不依赖其他代码 的业务逻辑 主要依赖的是Java8中的Lambda和Stream等新特性以及try with resources JAXB等 1 对列表 数组中的每个元素都乘以2 Range是半开
  • Spring 中如何使用SpEL表达式语言呢?

    转自 Spring 中如何使用SpEL表达式语言呢 SpeL简介说明 SpeL Spring Expression Language是一种功能强大的表达式语言 支持运行时查询和操作对象图 使用SpeL可采用最少的代码 完成大量的工作 注意事
  • vim菜鸟学习-中级篇2(经典配置)

    参考资料 http www cnblogs com striveford archive 2011 02 09 1950369 html http blog csdn net xjanker2 article details 5832784
  • linux环境下安装jmeter

    linux压力机安装jmeter 1 在Linux服务器先安装jdk 配置环境变量 2 下载 apache jmeter 5 4 1tgz https jmeter apache org download jmeter cgi 上传到服务器
  • UE4 解决景深效果闪烁问题

    原因 1 模型的垂直竖线 造成抗锯齿算法对竖线的渲染计算 处于一种不稳定的状态 因此闪烁 解决办法 使用LOD 用贴图去替代线条模型 2 材质的法线贴图 当法线贴图含有垂直竖线的纹理效果 也会造成闪烁 比如这种幕墙材质 解决办法 关闭或动态
  • PyTorch:Torchvision的简单介绍与使用

    安装 pip install torchvision torchvision独立于pytorch 专门用来处理图像 通常用于计算机视觉领域 重点介绍torchvision最常用的三个包 models 提供了很多常用的训练好的网络模型 我们可
  • ubuntu双网卡绑定一个IP

    Linux双网卡绑定实现就是使用两块网卡虚拟成为一块网卡 这个聚合起来的设备看起来是一个单独的以太网接口设备 通俗点讲就是两块网卡具有相同的IP 地址而并行链接聚合成一个逻辑链路工作 其实这项 技术在Sun和Cisco中早已存在 被称为Tr
  • Byte位元组单位-KB KiB MB MiB GB GiB区别

    一般而言大部份都只知道KB MB GB TB 等 倒是沒聽過KiB MiB 等 現在搞懂 原來分為以1000位元組或用1024位元組來計算之 這就是為什麼我們平時買硬碟或隨身碟的容量與實際真實的容量不同 像是我了8GB的隨身碟 實際為8 3
  • YOLOV5-6.1报错:OSError: [WinError 1455] 页面文件太小,无法完成操作。

    YOLOV5 6 1报错 OSError WinError 1455 页面文件太小 无法完成操作 注意 成功 解决方案 注意 数据集和之前的 共用一个数据集 使用之前的处理方式
  • vue之mixin理解与使用

    vue之mixin理解与使用 混入 mixin 提供了一种非常灵活的方式 来分发 Vue 组件中的可复用功能 一个混入对象可以包含任意组件选项 当组件使用混入对象时 所有混入对象的选项将被 混合 进入该组件本身的选项 权重 全局mixins
  • 开发之路,穷且益坚,不坠青云之志(入门开发者共勉)

    引言 2023毕业季 距离笔者毕业已过2年有余 互联网从业环境由盛转衰 互联网从业者数量剧增 市场竞争异常激烈 原本的利润空间被不断挤压 以至于很多开发者对互联网已经失去了信心与激情 互联网的市场份额依旧是占据着巨大的比重 为何互联网从业环
  • LInux基础——SELinux

    SELinux SELinux是什么 存取控制 自主式 DAC 委任式 MAC SELinux组成 SELinux安装 SELinux开关及模式 SELinux运行原理 SELinux Policy规则 getsebool setseboo