如何在 CentOS/RHEL 7 中启用 SELinux?

linuxoperating systemopen source

简介

安全是任何系统管理员的首要关注点。SELinux(安全增强型 Linux)是一种强制访问控制 (MAC) 安全机制,可为 Linux 内核提供额外的安全保障。

默认情况下,CentOS/RHEL 7 中启用了 SELinux,但它以宽容模式运行,这意味着它不会阻止系统活动,而只会记录这些活动。在本文中,我们将学习如何在 CentOS/RHEL 7 中启用 SELinux。

在 CentOS/RHEL 7 中启用 SELinux 的重要性

启用 SELinux 可以更好地保护您的服务器免受攻击和未经授权的访问。它可以为不同类型的恶意活动(例如拒绝服务 (DoS) 攻击或权限提升尝试)增加额外的防御层。禁用 SELinux 可能会使某些应用程序运行更顺畅,因为它们无需遵守 SELinux 策略和规则施加的额外限制。

什么是 SELinux?

SELinux 是 Linux 内核的一个安全模块,它通过策略执行提供强制访问控制。它由 NSA 与 Red Hat 合作开发,作为传统 Unix 式自主访问控制之上的额外保护层。通过执行限制进程和用户可以执行的操作的策略,SELinux 有助于降低与恶意软件或未经授权的活动相关的风险。

它是如何工作的?

SELinux 的工作原理是执行策略,这些策略基于分配给资源(例如文件、目录、套接字、设备等)的预定义标签来控制系统上进程和用户可以执行的操作。这些标签用于定义进程运行的上下文,从而可以对它们可以访问的资源和可以执行的操作进行细粒度的控制。 SELinux 策略根据上下文的标签定义了这些上下文如何相互交互的规则。为了执行这些策略,SELinux 结合使用了内核级控制(例如系统调用限制和文件权限检查)以及用户空间工具(例如 setroubleshootd 或 auditd)。

使用 SELinux 的优势:

  • 更佳的安全性 − 通过在内核级和用户级实施强制访问控制,selinux 提供了比传统自主访问控制更高的安全性。

  • 限制进程的能力 − 可以限制进程仅访问系统上的特定资源,从而降低未经授权的访问或恶意软件操纵的风险。

  • 改进的审计和问责制 − Selinux 会生成详细的日志条目,可用于识别和跟踪系统上的可疑活动,与传统自主访问控制相比,提供更好的可见性和问责制。

检查 SELinux 的当前状态

在系统上启用 SELinux 之前,检查其当前状态至关重要。此步骤可确保系统不存在任何与 SELinux 相关的预先存在的问题,这些问题可能会在启用过程中导致问题。检查 SELinux 当前状态的一种方法是使用 getenforce 命令。

使用 getenforce 命令

getenforce 命令是 CentOS/RHEL 7 中的内置工具,用于显示 SELinux 的当前运行模式。要使用它,请打开终端窗口并输入"getenforce",然后按 Enter。

该命令将显示以下三种可能的输出之一 -

  • Enforcing - 这意味着 SELinux 正在以强制模式运行,这将阻止任何未经授权访问系统上的文件和进程。

  • Permissive - 这意味着 SELinux 正在以宽容模式运行,这将允许未经授权的访问,但会记录任何违规行为。

  • Disabled - 这意味着您的系统当前未启用 SELinux。

在 CentOS/RHEL 7 中启用 SELinux

编辑 /etc/selinux/config 文件

要在 CentOS/RHEL 7 中启用 SELinux,您需要编辑 /etc/selinux/config 文件。为此,您可以使用任何文本编辑器。

在本例中,我们将使用 vi 编辑器。打开终端并输入以下命令: sudo vi /etc/selinux/config

这将在 vi 编辑器中打开配置文件。

您将看到类似以下内容 −

# 此文件控制系统上 SELinux 的状态。
# SELINUX= 可以采用以下三个值之一:# enforcing - 强制执行 SELinux 安全策略。
# permissive - SELinux 打印警告而不是强制执行。# disabled - 未加载任何 SELinux 策略。
SELINUX=enforcing

如您所见,SELINUX 可以采用三个可能的值:enforcing、permissive 或 disabled。

当前值设置为 enforcing,这意味着 SELinux 已启用。但是,如果您的系统未启用此功能,则需要更改此值。

将 SELINUX 的值更改为 enforcing

要启用 SELinux 并确保其在重启后仍保持启用状态,您需要将 SELINUX 的值更改为 enforcing。为此,请将光标移到"enforcing"上,然后按下键盘上的"i"(插入)键。

这将使 vi 进入插入模式,允许您编辑文件中的文本。现在删除之前的值 (enforcing/permissive/disabled),然后输入"enforcing"。

现在按"ESC"键,然后按":wq"键,最后按 Enter 键,保存更改并退出 vi 编辑器。

验证 SELinux 是否已启用并正在运行

在 CentOS/RHEL 7 系统上成功启用 SELinux 后,您需要验证它是否正常运行。检查 SELinux 状态的一种方法是使用"getenforce"命令。

此命令显示系统上 SELinux 的当前状态——无论是强制执行还是宽容执行。要使用"getenforce"命令,只需打开一个新的终端窗口并输入"getenforce"即可。

输出将是以下三个可能的值之一:强制执行、宽容执行或禁用。如果您看到"enforcing",则表示 SELinux 正在您的系统上主动执行策略。

如果您看到"permissive",则表示 SELinux 仍在运行,但并未主动执行策略——它只会记录违规行为,而不会阻止它们。如果您看到"disabled",则表示 SELinux 根本没有运行。

再次使用 getenforce 命令检查状态变化

需要注意的是,更改 /etc/selinux/config 文件中 SELINUX 的值需要重启才能生效。重启服务器并重新登录后,请再次运行 getenforce 命令以确保更改已正确应用。如果您在按照上述步骤 4 更改配置并重启后仍然看到"permissive"的输出,则可能表示您的 CentOS/RHEL 7 服务器上的一个或多个服务存在问题,未正确配置 SElinux 策略。

验证所有服务是否正常运行

验证 SELinux 已设置为"强制"后,请通过检查日志或使用 systemctl 等命令行工具,确保所有服务正常运行。请留意与 SELinux 策略相关的任何警报或错误消息,这些消息可能表明每个特定服务需要执行额外步骤。务必确保 CentOS/RHEL 7 系统上的所有服务都已配置 SELinux 策略。

如果任何服务配置不正确,它可能无法正常运行,甚至可能导致系统出现安全漏洞。因此,有必要检查每个服务是否运行顺畅,以及其配置文件是否已使用 SELinux 策略更新。

结论

Selinux 默认安装在 CentOS/RHEL 7 中,但可能并非开箱即用。它增加了一层额外的保护,以抵御当今普遍存在的各种攻击。

启用 SELinux 可确保服务器上运行的应用程序和服务之间实现强隔离。SELinux 提供了多种便利功能,例如基于角色的访问控制 (RBAC)、强制访问控制 (MAC)、进程分离等。


相关文章


有用资源