面向使用 CentOS 的初学者的 SELinux面向使用 CentOS 的初学者的 SELinux面向使用 CentOS 的初学者的 SELinux面向使用 CentOS 的初学者的 SELinux
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

面向使用 CentOS 的初学者的 SELinux

发表 admin at 2025年2月28日
类别
  • 未分类
标签
コアサーバーV2プランご契約でドメイン更新費用が永久無料

安全增强型 Linux 或 SELinux 由 NSA 开发,旨在防止恶意访问和入侵,是大多数现代 Linux 发行版附带的高级访问控制功能。 SELinux 被定义为强制访问控制 (MAC) 系统,作为自主访问控制系统 (DAC) 的替代品而开发。

在大多数现代系统中,SELinux 看起来令人畏惧并且很难实现。然而,配置 SELinux 在增强安全性和故障排除方面都有巨大的好处。

本教程将讨论 SELinux 实现的各种概念,并探索实现 SELinux 的各种实用方法。

注意:在开始之前,最好以 root 用户或 sudoers 组中的用户身份使用本教程中的命令。

安装 SELinux 软件包

让我们安装各种 SELinux 软件包,这将有助于使用 SELinux 策略。

在继续安装 SELinux 软件包之前,最好先验证当前系统上安装了哪些软件包。

在大多数 REHL 发行版的安装中,默认情况下会安装一些软件包。这些套餐包括:

  1. setools – 该包用于监视日志、查询策略和上下文文件管理。

  2. policycoreutils-python – 提供用于管理 SELinux 的 python 核心实用程序

  3. policycoreutils – 该软件包还提供了用于管理 SELinux 的实用程序。

  4. mcstrans – mcstrans 提供 SELinux 翻译守护进程,它将各种级别翻译成易于理解的简单格式。

  5. setools-console – 与 setools 类似。

  6. Selinux-policy – 提供配置SELinux策略的参考

  7. Selinux-policy-targeted – 类似于 SELinux-policy

  8. Libselinux-utils – SELinux libselinux 实用程序,有助于管理 SELinux

  9. Setroubleshoot-server – SELinux 故障排除工具

要验证系统上已安装哪些软件包,您可以使用 rpm –qa 命令并将结果通过管道传输到 SELinux 的 grep,如下所示:

rpm –qa | grep selinux
libselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-targeted-3.14.3-54.el8_3.2.noarch
python3-libselinux-2.9-4.el8_3.x86_64
selinux-policy-3.14.3-54.el8_3.2.noarch
libselinux-2.9-4.el8_3.x86_64

这将为您提供为 SELinux 支持而安装的所有软件包的输出

如果您的系统上未安装所有 SELinux 软件包,请使用 yum 安装它们,如以下命令所示:

yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-targeted libselinux-utils setroubleshoot-server setools setools-console mcstrans

SELinux 模式和状态

现在让我们开始使用 SELinux,特别是 SELinux 模式。

SELinux 模式

启用后,SELinux 可以是三种可能的模式:

  • 执行

  • 宽容的

  • 残疾人

强制模式

如果SELinux模式强制执行,它将确保任何用户或进程对系统的未经授权的访问不会被拒绝。强制模式还保留任何未经授权的访问尝试的日志。

宽容模式

宽容模式的作用类似于部分启用的 SELinux 状态。在此模式下,不会拒绝任何访问,因为 SELinux 不会在此模式下强制执行其策略。但是,宽容模式确实会保留任何策略违规尝试的日志。这种模式对于在完全启用之前进行测试非常有效,因为用户和组件仍然可以与系统交互,但仍然收集日志。这允许您以您认为合适的方式微调系统。

禁用模式

禁用模式也可以被视为禁用状态,其中 SELinux 被禁用并且不提供任何安全性。

SELinux 状态

一旦 SELinux 安装在系统上。它可以有二进制状态:启用和禁用。要查看 SELinux 的状态,请使用以下命令:

getenforce
Disabled

上面的输出表明 SELinux 当前已禁用。

您还可以使用 sestatus 命令,如下所示:

sestatus
SELinux status:                 disabled

启用和禁用 SELinux

SELinux 的状态和配置由位于 /etc/selinux/config 中的配置文件处理。可以使用cat命令查看其内容。

cat /etc/selinux/config
#This file controls the state of SELinux on the system.
#SELINUX= can take one of these three values:
#enforcing - SELinux security policy is enforced.
#permissive - SELinux prints warnings instead of enforcing.
#disabled - No SELinux policy is loaded.
SELINUX=enforcing
#SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected.
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

从上面的输出中,我们启用了两个主要指令。 SELINUX 指令指定了 SELinux 的配置模式。 SELINUXTYPE 指令指定 SELinux 策略集。默认情况下,SELinux 使用有针对性的策略,允许您自定义访问控制权限。另一种策略是多级安全性或 MLS。

您可能会发现某些版本中存在最低政策。

cd /etc/selinux/
[ls -l
total 4
-rw-r--r-- 1 root root  548 Feb 16 22:40 config
drwxr-xr-x 1 root root 4096 Feb 16 22:43 mls
-rw-r--r-- 1 root root 2425 Jul 21  2020 semanage.conf
drwxr-xr-x 1 root root 4096 Feb 16 22:40 targeted

现在让我们看看如何在系统上启用 SELinux。我们建议首先将 SELINUX 模式设置为宽容而非强制。

nano /etc/selinux/config

现在将 SELINUX 指令编辑为:

SELINUX=permissive

保存文件后,重新启动系统。

reboot

注意:我们强烈建议在强制执行 SELinux 之前将 SELINUX 指令设置为 permissive。

重新引导系统后,检查 /var/log/messages 中 SELinux 报告的任何日志。

接下来,确保没有错误并通过在 /etc/selinux/config 中设置要强制执行的指令来强制执行 SELinux

最后,您可以使用 sestatus 命令查看 SELinux 状态:

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          error (Success)
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual(secure)
Max kernel policy version:      31

您还可以使用 setenforce 命令在各种 SELinux 模式之间切换。例如,要将模式设置为宽容,请使用以下命令:

setenforce permissive

此模式是临时的,重启后将恢复为配置文件中的模式。

sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual(secure)
Max kernel policy version:      31

SELinux 政策和背景

为了避免 SELinux 初学者感到困惑,我们不会深入探讨 SELinux 策略是如何实施的,而只是简单地介绍一下,让您有一个概念。

SELinux 通过实施安全策略来工作。 SELinux 策略是指用于定义系统中每个对象的访问权限的规则。对象是指用户、进程、文件和角色。

每个上下文都以用户:角色:类型:级别的形式定义。

例如,在主目录中创建一个目录并查看其 SELinux 安全上下文,如以下命令所示:

mkdir ~/linux_dir
ls –Z ~/ | grep linux

这将显示输出,如下所示:

unconfined_u:object_r:user_home_t:s0 linux_dir

您还可以找到安全上下文如下的其他目录:

system:_u:object_r:user_home_t:s0

您可能会意识到上面的输出遵循 user:role:type:level 的语法。

结论

这是使用 CentOS 8 的 SELinux 初学者教程。虽然该教程是为初学者设计的,但它足以让您在 SELinux 中上手并消除 SELinux 的令人生畏的本质。

感谢您的阅读。

©2015-2025 Norria support@alaica.com