首页 > 系统相关 >selinux

selinux

时间:2024-12-25 13:45:03浏览次数:4  
标签:selinux SContext scontext 类型 进程 上下文 SELinux

 

 

ps -eZ | grep pidname 

 

 

一个服务通过grpc 访问 一个 服务 报错 avc : denied scontext=system_u:system_r:init_t:s0 tcontext=system_u;object_r:http_port_t:s0 应该如何解决

ps -eZ | grep <process_name>

 

ausearch -m avc 

 

 

selinux scontext 与 tcontext 什么区别:

在SELinux(Security-Enhanced Linux)中,SContext(Security Context)是安全上下文的概念,它用于确定进程和文件等系统对象的访问权限。SContext由几个部分组成,通常包括用户(User)、角色(Role)、类型(Type)等。在SELinux的访问控制决策中,有两个关键的SContext需要特别关注:进程SContext(通常简称为SContext)和目标SContext(通常称为TContext,即目标的安全上下文)。

SContext(进程安全上下文)

  • 定义:进程SContext是指运行在系统上的进程所具有的安全上下文。
  • 作用:它决定了进程能够访问哪些文件和资源。
  • 组成:通常包括用户、角色和类型等字段。例如,system_u:object_r:httpd_t:s0,其中system_u表示用户上下文,object_r是角色上下文的一部分(尽管在普通情况下,用户可能不需要特别关注角色上下文),httpd_t是类型上下文,s0是安全级别(在某些策略中可能不使用)。

TContext(目标安全上下文)

  • 定义:TContext是指被进程访问的目标对象(如文件、目录等)所具有的安全上下文。
  • 作用:它决定了哪些进程可以访问该对象。
  • 组成:与进程SContext类似,目标SContext也包括用户、角色和类型等字段。例如,unconfined_u:object_r:var_t:s0

区别与联系

  • 区别:

    • SContext是进程的安全上下文,而TContext是被访问对象的安全上下文。
    • 在SELinux的访问控制决策中,SContext和TContext需要匹配(根据SELinux策略中的规则)才能允许访问。
  • 联系:

    • 它们都是SELinux安全策略的重要组成部分。
    • 通过设置和修改SContext和TContext,管理员可以精细地控制进程对系统资源的访问权限。

实践应用

在实际应用中,管理员可能需要查看或修改文件或进程的SContext。例如,使用ls -Z(在某些系统上可能是ls -z)命令可以查看文件的SContext。如果需要修改文件的SContext,可以使用chcon命令。对于进程的SContext,它通常是由启动进程的用户和SELinux策略决定的,但管理员可以通过调整SELinux策略或使用特定的工具来影响它。

总之,SContext和TContext是SELinux中用于实现强制访问控制的关键概念。通过理解和应用这些概念,管理员可以确保系统资源的安全访问。

 

 

 

scontext 有哪些  
ChatGPT 说:
ChatGPT

在 SELinux 中,scontext(源上下文)是指被访问对象的 SELinux 安全上下文,它描述了发起操作的进程或对象的安全标签。每个进程、文件、端口、目录等对象都有一个 SELinux 安全上下文,包含了该对象的安全信息。

SELinux 安全上下文的组成:

一个典型的 SELinux 上下文由三部分组成:

  1. 用户(user) - 描述该进程或对象所属的 SELinux 用户。通常是 system_uuser_u 等。
  2. 角色(role) - 该进程或对象的角色,例如 system_ruser_r 等。角色用来指定进程可以执行的操作范围。
  3. 类型(type) - 描述该对象的类型或类别,例如 init_thttpd_tuser_home_t 等。类型用于控制访问权限。
  4. 级别(level) - 这是一个安全级别,用来在多级安全(MLS)环境中进一步细分对象的安全级别。一般来说,级别是 s0s1 等。

因此,scontext 的完整格式通常是:

arduino user_u:role_r:type_t:level

常见的 scontext 类型(Type)

在 SELinux 中,scontext 中的 typetype_t 是用于控制访问权限的关键部分。不同的系统进程、服务、文件或端口会有不同的类型标签。以下是一些常见的 scontext 类型(type)示例:

1. 进程类型(Process Types)

  • init_t:系统的初始化进程(initsystemd)的类型。
  • httpd_t:Apache HTTP 服务器进程的类型。
  • sshd_t:SSH 守护进程的类型。
  • dbus_t:DBus 系统总线守护进程的类型。
  • postgresql_t:PostgreSQL 数据库进程的类型。

2. 文件类型(File Types)

  • var_log_t/var/log 目录中的文件。
  • httpd_sys_content_t:Apache Web 服务器使用的内容文件。
  • user_home_t:用户的家目录文件。
  • semanage_etc_t:用于 SELinux 配置文件的文件类型。
  • etc_t:用于系统配置文件的文件类型。

3. 端口类型(Port Types)

  • http_port_t:HTTP 服务使用的端口类型(如 80、443)。
  • ssh_port_t:SSH 服务使用的端口类型。
  • mysql_port_t:MySQL 数据库使用的端口类型。
  • smtp_port_t:SMTP 邮件服务使用的端口类型。

4. 网络类型(Network Types)

  • dns_port_t:DNS 服务使用的端口类型。
  • ftp_port_t:FTP 服务使用的端口类型。

5. 设备类型(Device Types)

  • block_device_t:块设备(如磁盘、分区)的类型。
  • char_device_t:字符设备(如串口、终端设备)的类型。
  • usb_device_t:USB 设备的类型。

6. 特殊类型(Special Types)

  • sysctl_kernel_t:与内核参数相关的类型。
  • unlabeled_t:未标记的对象类型,通常表示没有明确的 SELinux 标签。

例子:

  • 进程 initscontextsystem_u:system_r:init_t:s0

    • system_u:用户部分,表示系统进程。
    • system_r:角色部分,表示系统角色。
    • init_t:类型部分,表示进程 initsystemd
    • s0:级别部分,表示最低安全级别。
  • HTTP 服务进程的 scontextsystem_u:system_r:httpd_t:s0

    • httpd_t:类型部分,表示 Apache HTTP 服务进程。
  • 文件 /var/log/messagesscontextsystem_u:object_r:var_log_t:s0

    • var_log_t:类型部分,表示 /var/log 目录中的文件。
  • 端口 80 的 scontextsystem_u:object_r:http_port_t:s0

    • http_port_t:类型部分,表示 HTTP 服务使用的端口。

角色(Role)部分

role_rscontext 中用于定义权限范围的角色标签。不同的角色有不同的权限集,例如:

  • system_r:系统级角色,通常具有广泛的权限(例如,init_thttpd_tsshd_t 等进程通常属于该角色)。
  • user_r:用户级角色,权限较为受限。
  • unconfined_r:表示没有严格的访问控制(通常是一些低风险或信任进程)。

查看和修改 scontext

  1. 查看当前进程的 scontext 使用 ps 命令查看当前进程的 SELinux 上下文:

    bash ps -eZ
  2. 查看文件的 scontext 使用 ls -Z 来查看文件或目录的 SELinux 上下文:

    bash ls -Z /path/to/file
  3. 更改文件的 SELinux 类型(需要管理员权限): 使用 chcon 命令来修改文件的 SELinux 上下文类型:

    bash chcon -t httpd_sys_content_t /var/www/html/index.html
  4. 查看和管理 SELinux 上下文策略: 使用 semanage 命令来管理 SELinux 上下文和策略:

    bash semanage fcontext -l # 查看文件上下文 semanage port -l # 查看端口上下文

总结:

  • scontext 是 SELinux 中的源上下文,描述了进程、文件、端口等对象的安全标签。
  • scontext 的格式为 user:role:type:level,其中最关键的是 type,它用于控制访问权限。
  • 常见的 scontext 类型包括 init_t(系统进程),httpd_t(Web 服务进程),http_port_t(HTTP 端口)等。

标签:selinux,SContext,scontext,类型,进程,上下文,SELinux
From: https://www.cnblogs.com/rebrobot/p/18630185

相关文章

  • SELinux的安全上下文
    一、SELinux介绍传统Linux,一切接文件,由用户,组,权限控制访问在Selinux中,一切皆对象(object),由存放在inode的扩展属性域的安全元素所控制其访问。DAC:自由访问控制MAC:强制访问控制DAC环境下进程是无束缚的MAC环境下策略的规则决定控制的严格程度MAC环境下进程可以被限制策略......
  • Android SELinux——allow语句参数(五)
           通过上一篇文章我们知道,TE(TypeEnforcement,类型强制)的allow语句中主要包括主体(source)、对象(target)、类别(class)和权限(permissions),这里我们就来看一下其中的参数信息。一、参数详解1、主体        在SELinux的上下文中,主体类型source是指发起访......
  • CentOS7永久关闭防火墙和SELinux
    目录一.查看防火墙的状态命令(1)systemctlstatusfirewalld      查看当前的防火墙状态 二.暂时/永久关闭防火墙命令(1)systemctl stopfirewalld        暂时关闭防火墙(2)systemctl disable firewalld        永久关闭防火墙 (需要重......
  • Linux Selinux详解
    介绍LinuxSELinux是一种安全增强的Linux,它可以让用户和管理员对访问控制有更多的控制。它是一种标签机制,可以对文件和其他对象提供高级别的安全保护,防止未授权的进程或者没有必要访问的授权进程进行滥用。SELinux最初是由美国国家安全局(NSA)开发的,作为一系列使用Linux安全......
  • android12编译三方提供的bin文件,通过selinux配置并实现rc开机启动
    为三方bin建立工程在vendor/自己公司目录下建立工程文件夹,我这里以CarpalyMonter工程,新建如下文件CarplayMonitor为三方bin文件Android.mk模块编译配置如下:LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE:=carplaymonitor #模块名字LOCAL_SRC......
  • selinux对linux服务的影响
    实验一:使用web服务演示安全上下文值的设定[root@localhost~]#systemctlrestartnginx通过客户端测试,出现403状态码#修改自定义目录的安全上下文的值:[root@localhost~]#chcon-thttpd_sys_content_t/www/-R也可以将自定义目录的......
  • SElinux内核态的实现-avc、avd的设计篇
    文章目录avc_has_perm的处理逻辑[部分]av_decision访问向量决策的设计allowed、auditallow、auditdenyseqnoflagsavc_has_perm_noaudit检查点函数函数原型参数解释函数逻辑selinux检查结果缓存AVC的设计与实现structselinux_avcstructavc_cacheavc的初始化avc_s......
  • SELinux 安全模型——MLS
    首发公号:Rand_csSELinux安全模型——MLSBLP模型:于1973年被提出,是一种模拟军事安全策略的计算机访问控制模型,它是最早也是最常用的一种多级访问控制模型,主要用于保证系统信息的机密性,是第一个严格形式化的安全模型暂时无法在飞书文档外展示此内容多层安全的核心:“数据流向......
  • SELinux策略语法以及示例策略
    首发公号:Rand_csSELinux策略语法以及示例策略本文来讲述SELinux策略常用的语法,然后解读一下SELinux这个项目中给出的示例策略安全上下文首先来看一下安全上下文的格式:user:role:type:level每一个主体和客体都有一个安全上下文,通常也称安全标签、标签,由4部分......
  • SELinux 安全模型——TE
    首发公号:Rand_csSELinux安全模型——TE通过前面的示例策略,大家对SELinux应该有那么点感觉认识了,从这篇开始的三篇文章讲述SELinux的三种安全模型,会涉及一些代码,旨在叙述SELinux内部的原理SELinux提供了3种安全模型:RBAC:RoleBasedAccessControl<基于角色的权限访......