📅  最后修改于: 2023-12-03 15:20:04.472000             🧑  作者: Mango
SELinux 是安全增强型 Linux 操作系统的一部分,其主要功能是对 Linux 内核以及应用程序进行访问控制。
在传统 Linux 中,权限控制由文件系统权限控制和用户权限控制两部分完成。毫无疑问这种模型在许多情况下非常成功,但也有其限制。如果应用程序被攻击并尝试以 root 权限运行,文件系统和用户权限控制就会失效。SELinux 这种基于强制访问控制(MAC)技术的系统可以阻止攻击者获得 root 权限,并对文件和进程访问进行更细粒度的控制。
SELinux 主要通过管理 Linux 系统内核的访问控制机制来保护系统的安全。SELinux 是由内核模块、用户空间管理工具和访问控制策略(称为策略源)组成的。
内核模块主要负责拦截并处理用户空间和内核空间的交互。拦截并且处理的方法是 LSM 钩子,这种钩子会在 Linux 内核的一些关键位置上被调用。SELinux LSM 钩子位于内核和用户空间之间。当生成的系统调用请求印到内核时,SELinux 文件系统和安全服务(SELinux Service)会根据其安全策略拦截或允许请求,并返回执行结果。
用户空间管理工具是一个实用程序集和共享库,用于 SELinux 系统管理员管理 SELinux 系统。这将为您提供控制和配置 SELinux 系统所需的所有工具和集成,例如用于纠正目录处于错误的安全上下文中的命令,或检查策略。
访问控制策略是 SELinux 系统中的另一个主要组件。该策略基于访问控制列表(ACL)系统,并分为两个部分:Targeted 模式和 MLS 模式。更常见的是 Targeted 模式。该模式使用前向访问控制(DAC)和基于角色的访问控制(RBAC)来确定哪个进程可以访问系统的哪些对象。
对于系统管理员而言,SELinux 常见的操作包括:
在 Bash 下,可以使用以下命令来执行这些任务:
# 启用 SELinux
$ setenforce 1
# 关闭 SELinux
$ setenforce 0
$ sestatus
# 查看 polruing 环境的配置文件位置
$ sudo sestatus --policy-config-priv
# 查看你的环境的策略模型
$ sudo sestatus --policy-model
# 查看 SELinux 审核日志
$ sudo tail -f /var/log/audit/audit.log
# 切换为 permissive 模式
$ setenforce permissive
# 切换为 enforcing 模式
$ setenforce enforcing
# 更改 SELinux 的类型
$ chcon [-R] [-u user] [-t type] file ...
$ ps -eZ
SELinux 是一种非常重要的安全工具,即使您无法从头开始创建安全增强型 Linux 系统,也应将其引入到现有系统中以保护您的数据和系统。