Linux系统之SELinux详解

SELinux(Security-Enhanced Linux)是由美国国家安全局(NSA)发起的一个项目,旨在为Linux操作系统提供一个强制访问控制(MAC, Mandatory Access Control)机制。它通过在内核中实施安全策略来增强系统的安全性,限制进程和用户只能执行那些被明确允许的操作。

SELinux概念

  1. 安全上下文(Security Contexts):在SELinux中,每个对象(如文件、目录、网络端口等)和主体(如进程)都被赋予了一个安全上下文。安全上下文由用户、角色、类型三个部分组成,用于决定哪些操作是允许的。

  2. 策略(Policies):定义了系统中的主体如何与客体进行交互。策略决定了哪个用户或程序可以访问哪些资源,以及它们可以对这些资源执行什么类型的访问。策略可以是针对性的(针对特定的应用程序或服务),也可以是全面性的(覆盖整个系统)。

  3. 模式(Modes)

    • Enforcing(执行模式):在此模式下,SELinux策略被激活并执行。任何违反策略的行为都会被阻止,并且会记录到审计日志中。
    • Permissive(宽容模式):虽然SELinux策略加载,但不强制执行。违规行为会被记录下来,但不会阻止实际操作。这有助于调试和理解SELinux策略的影响。
    • Disabled(禁用模式):SELinux完全不运行。
  4. 标签(Labeling):SELinux依赖于为系统资源分配适当的标签来应用其策略。标签确定了资源的安全上下文。

工作模式

SELinux有三种工作模式:

  • Enforcing:强制执行安全策略,违反策略的操作会被拒绝并记录。
  • Permissive:仅记录违反策略的操作,但不阻止。
  • Disabled:完全禁用SELinux。
配置文件

SELinux的配置文件通常位于/etc/selinux/config,主要内容包括:

  • SELINUX:设置工作模式(enforcing、permissive、disabled)。
  • SELINUXTYPE:指定策略类型(如targeted、mls)。
常用命令
  • sestatus:查看SELinux状态。
  • getenforce:查看当前模式。
  • setenforce:临时切换模式(0为permissive,1为enforcing)。
  • chcon:更改文件或目录的SELinux上下文。
  • restorecon:恢复文件或目录的默认SELinux上下文。
  • semanage:管理SELinux策略(如端口、文件上下文等)。
  • audit2why:分析SELinux日志,解释拒绝原因。
切换模式
  • 查看SELinux状态

    sestatus
    
  • 查看当前模式

    getenforce       # 查看当前模式
    
  • 临时切换模式

    setenforce 0  # 切换到permissive模式
    setenforce 1  # 切换到enforcing模式
    
  • 永久修改SELinux模式

vim /etc/selinux/config
SELINUX=disabled		# SELINUX=值更改为disabled或enforcing、permissive,重启生效
  • 使用sed修改SELinux模式
sed -i 's/^SELINUX=.*$/SELINUX=enforcing/' /etc/selinux/config		# 将SELinux设置为Enforcing模式
sed -i 's/^SELINUX=.*$/SELINUX=permissive/' /etc/selinux/config			# 将SELinux设置为Permissive模式
sed -i 's/^SELINUX=.*$/SELINUX=disabled/' /etc/selinux/config			# 禁用SELinux

安全上下文

SELinux(Security-Enhanced Linux)通过安全上下文来实现对系统资源的细粒度访问控制。安全上下文是SELinux的一个核心概念,它为每个主体(如进程)和客体(如文件、目录、网络端口等)分配一个标签,用于决定哪些操作是被允许的。

安全上下文的作用

安全上下文的主要作用在于通过定义谁(用户)、能做什么(角色)、对什么(类型)执行何种操作来加强系统的安全性。通过这种方式,即使某个应用程序被攻破,攻击者也难以利用该漏洞获得更高的权限或者访问不该访问的数据,因为这些尝试都会被SELinux策略所阻止。

  • 定义访问规则:SELinux 根据主体和对象的安全上下文决定是否允许访问。
  • 隔离资源:通过类型强制(Type Enforcement),确保进程只能访问与其类型匹配的资源。
  • 支持多级安全:通过 MLS/MCS 字段,实现更细粒度的访问控制。

安全上下文的组成

一个典型的SELinux安全上下文由以下四个部分组成,以冒号分隔:

user:role:type:sensitivity
  • User(用户):标识了创建对象或运行进程的用户身份。虽然名字叫“用户”,但它并不直接对应Linux系统中的用户账户,而是SELinux内部的一个概念。

  • Role(角色):定义了可以执行的操作范围。角色决定了用户能够承担的身份以及可进行的操作类型。这与传统的基于角色的访问控制(RBAC)相似,但在SELinux中更为精细。

  • Type(类型):这是安全上下文中最重要的部分,因为它直接影响到访问控制决策。在类型强制(Type Enforcement, TE)中,策略主要根据类型来决定是否允许某个操作。例如,一个特定类型的进程能否读取另一个特定类型的文件。

  • Sensitivity(敏感度):主要用于多级安全(MLS)和多类别安全(MCS)策略中,表示信息的敏感等级。它可以进一步细分数据的安全级别,比如从“公开”到“绝密”。

查看和设置安全上下文

  • 查看安全上下文

    • 对于文件和目录,可以使用ls -Z<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值