第 1 章 SELinux 入门


通过了解 Security Enhanced Linux (SELinux)的核心概念来提高系统的安全性。了解 SELinux 架构、软件包和操作模式有助于有效地管理系统策略。

1.1. SELinux 简介

Security Enhanced Linux (SELinux)是强制访问控制(MAC)的一种实现,它增强了系统安全性。通过强制执行细致的策略来限制进程如何与文件和网络资源交互,SELinux 可缓解受入侵应用程序的影响并防止未经授权的访问。

标准 Discretionary Access Control (DAC)基于用户、组和其他权限的访问策略。此模型可防止系统管理员创建精细的安全策略,例如将特定应用程序限制为仅查看日志文件,同时允许其他应用程序将数据附加到日志文件中。

SELinux 通过强制强制强制访问控制(MAC)策略添加额外保护层: May <subject> do <action> to <object> ?,例如:在用户主目录中的 web 服务器访问文件?每个进程和系统资源都有一个特殊的安全性标签,称为 SELinux 上下文(context)。SELinux 上下文有时被称为 SELinux 标签,它是一个提取系统级详情的标识符,以专注于实体的安全属性。这个标识符为在 SELinux 策略中引用对象提供了一致的方法,并删除在其他识别方法中找到的模糊。例如,一个文件可以在使用绑定挂载的系统中有多个有效的路径名称。

SELinux 策略使用规则中的上下文来定义进程如何与系统资源交互。默认情况下,除非规则明确授予访问权限,否则策略会拒绝所有交互。

如需更多信息,请参阅在系统上安装 selinux-policy-doc 软件包时,请参阅 man -k selinux 命令列出的 selinux (8) 手册页和 man page。

注意

SELinux 策略规则会在 DAC 规则后检查。如果 DAC 规则拒绝访问,则不会评估 SELinux 策略规则,且不会记录 SELinux 拒绝信息。

SELinux 上下文有四个字段:user、role、type 和 security level。type 字段对于 SELinux 策略是最重要的,因为定义进程和系统资源之间的允许交互的最常见的策略规则基于 SELinux 类型而不是完整的 SELinux 上下文。SELinux 类型以 _t 结尾。例如,Web 服务器的类型上下文是 httpd_t/var/www/html/ 中的文件和目录使用 httpd_sys_content_t 类型,而 /tmp/var/tmp/ 中的文件和目录使用 tmp_t。Web 服务器端口的类型是 http_port_t

有一个策略规则允许 Apache(作为 httpd_t运行的 Web 服务器进程)访问通常位于 /var/www/html/ 和其他 Web 服务器目录中上下文的文件和目录(httpd_sys_content_t)。策略中没有允许规则适用于通常位于 /tmp/var/tmp/ 中的文件,因此不允许访问。因此,当使用 SELinux 时,即使 Apache 被破坏,一个恶意的脚本可以访问它,也无法访问 /tmp 目录。

图 1.1. 通过 SELinux 以安全的方式运行 Apache 和 MariaDB 的示例。

SELinux_Apache_MariaDB_example

如前一种方案所示,SELinux 允许以 httpd_t 身份运行的 Apache 进程访问 /var/www/html/ 目录,但拒绝访问 /data/mysql/,因为 httpd_tmysqld_db_t 类型上下文不存在任何规则。相反,作为 mysqld_t 运行的 MariaDB 进程访问 /data/mysql/,但被拒绝访问 /var/www/html/,它被标记为 httpd_sys_content_t

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

关于红帽文档

Legal Notice

Theme

© 2026 Red Hat
返回顶部