📜  selinux - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:20:04.472000             🧑  作者: Mango

SELinux - Shell-Bash

什么是SELinux

SELinux 是安全增强型 Linux 操作系统的一部分,其主要功能是对 Linux 内核以及应用程序进行访问控制。

在传统 Linux 中,权限控制由文件系统权限控制和用户权限控制两部分完成。毫无疑问这种模型在许多情况下非常成功,但也有其限制。如果应用程序被攻击并尝试以 root 权限运行,文件系统和用户权限控制就会失效。SELinux 这种基于强制访问控制(MAC)技术的系统可以阻止攻击者获得 root 权限,并对文件和进程访问进行更细粒度的控制。

SELinux 如何工作

SELinux 主要通过管理 Linux 系统内核的访问控制机制来保护系统的安全。SELinux 是由内核模块、用户空间管理工具和访问控制策略(称为策略源)组成的。

内核模块

内核模块主要负责拦截并处理用户空间和内核空间的交互。拦截并且处理的方法是 LSM 钩子,这种钩子会在 Linux 内核的一些关键位置上被调用。SELinux LSM 钩子位于内核和用户空间之间。当生成的系统调用请求印到内核时,SELinux 文件系统和安全服务(SELinux Service)会根据其安全策略拦截或允许请求,并返回执行结果。

用户空间管理工具

用户空间管理工具是一个实用程序集和共享库,用于 SELinux 系统管理员管理 SELinux 系统。这将为您提供控制和配置 SELinux 系统所需的所有工具和集成,例如用于纠正目录处于错误的安全上下文中的命令,或检查策略。

访问控制策略

访问控制策略是 SELinux 系统中的另一个主要组件。该策略基于访问控制列表(ACL)系统,并分为两个部分:Targeted 模式和 MLS 模式。更常见的是 Targeted 模式。该模式使用前向访问控制(DAC)和基于角色的访问控制(RBAC)来确定哪个进程可以访问系统的哪些对象。

SELinux 如何操作

对于系统管理员而言,SELinux 常见的操作包括:

  • 启用 / 关闭 SELinux
  • 检查 SELinux 的状态
  • 检查 SELinux 配置文件和审核日志
  • 更改 SELinux 政策的模式和类型
  • 更改 SELinux 文件上下文
  • 确定进程是否受 SELinux 限制

在 Bash 下,可以使用以下命令来执行这些任务:

  • 启用 / 关闭 SELinux
# 启用 SELinux
$ setenforce 1
# 关闭 SELinux
$ setenforce 0
  • 检查 SELinux 的状态
$ sestatus
  • 检查 SELinux 配置文件和审核日志
# 查看 polruing 环境的配置文件位置
$ sudo sestatus --policy-config-priv
# 查看你的环境的策略模型
$ sudo sestatus --policy-model
# 查看 SELinux 审核日志
$ sudo tail -f /var/log/audit/audit.log
  • 更改 SELinux 政策的模式和类型
# 切换为 permissive 模式
$ setenforce permissive
# 切换为 enforcing 模式
$ setenforce enforcing
# 更改 SELinux 的类型
$ chcon [-R] [-u user] [-t type] file ...
  • 确定进程是否受 SELinux 限制
$ ps -eZ
结论

SELinux 是一种非常重要的安全工具,即使您无法从头开始创建安全增强型 Linux 系统,也应将其引入到现有系统中以保护您的数据和系统。