SELinux:给文件单独打标签

需求:针对某个设备文件,阻止除特定进程以外的进程写入。 拿 /dev/tty20 做试验。实验环境:Fedora 38,x64 虚拟机。 给设备打标签,阻止普通写 创建 .te 策略文件之最最基础版: 1policy_module(tty20, 1.0.0) 2 3type tty20_t; 构建并加载策略模块: 1make -f /usr/share/selinux/devel/Makefile 2semodule -i tty20.pp 这里参考了这篇问答 。 尝试变更 /dev/tty20 的标签: 1chcon -t tty20_t /dev/tty20 大概率会因为缺少必要的权限而报错。 查看最近 AVC 类型的审计日志: …

关于 SELinux 策略的点滴

具体规则的查询 关于 SELinux 策略,我们时常要去了解:关于系统中的一个操作,为什么 SELinux 会允许/拒绝;其背后具体的规则是怎样的。此时我们可以使用 sesearch 来查询策略中具体的规则: 1# 探究【主体 A】对【客体 B】是否有【类型 C】的【权限 D】: 2# sesearch -A -s A -t B -c C -p D 3sesearch -A -s kernel_t -t unconfined_t -p setsched 4sesearch -A -s kernel_t -t unconfined_t -c key -p view 在查出对应的规则后,可以配合 seinfo 进一步了解规则中主、客体的 …

SELinux:系统启动时通过用户态配置动态关闭的流程

要在系统启动时彻底关闭 SELinux(即设为 Disabled 状态),已知有几种办法: 内核启动参数 selinux=0 配置 /etc/selinux/config 关于 /etc/selinux/config,我们知道可以通过它来对 SELinux 进行初始设置,包括运行状态以及要加载的策略文件。那么,这是怎么做到的呢?又是谁实际执行了这些操作?在开闭 SELinux 上,通过它与通过内核启动参数有何不同? 首先,内核对该文件完全是不感知的:查遍 security/selinux 下的所有代码,都没有关于该文件的内容。随后在 Fedora 的 Wiki 上查到: When booting up the machine, …

CVE-2021-43057 分析

0x00 基本信息 信息总览:NVD 链接 漏洞披露:bugs.chromium.org 漏洞评估:CVSS 7.8 上游补丁:链接 0x01 详细描述 在 selinux_ptrace_traceme 函数(即 SELinux 对 PTRACE_TRACEME 的 LSM 接口的实现)中发现一个 Use-After-Free 问题,该问题是由于错误地尝试获取其他内核任务的*主体凭证(Subjective Credential)*而导致的。具体情况如下: 原先在 SELinux 中,有个函数 task_sid() 可以获取一个内核任务的*客体凭证(Objective Credential)*所对应的 SID,但却被用在了一些应该使用 …

关于 SELinux 的宽泛介绍

尚未完工。但鉴于总是要查 SELinux 的笔记,所以决定先行放出。 访问控制 Linux 操作系统上有两种访问控制:自主访问控制(Discretionary Access Control,DAC)和强制访问控制(Mandatory Access Control,MAC)。讨论两者的异同之前,需要明确几个概念: 用户(user):人(碳基高等灵长类生物) 主体(subject):OS 中以某用户身份执行的进程 客体(object):OS 中的各种资源(如文件、sockets、设备等) DAC 的策略是由资源的所有者来决定他人对该资源的访问权限。标准 Linux 安全是一种 DAC:文件的所有者可以对文件的读、写、执行权限进行设定;其 …