如何在 CentOS/RHEL 7 中启用 SELinux?
简介
安全是任何系统管理员的首要关注事项。SELinux(安全增强型 Linux)是一种强制访问控制 (MAC) 安全机制,它为 Linux 内核提供了额外的安全层。
默认情况下,SELinux 在 CentOS/RHEL 7 中已启用,但它以许可模式运行,这意味着它不会阻止系统活动,而只是记录它们。在本文中,我们将学习如何在 CentOS/RHEL 7 中启用 SELinux。
在 CentOS/RHEL 7 中启用 SELinux 的重要性
启用 SELinux 可以更好地保护您的服务器免受攻击和未经授权的访问。它增加了针对不同类型的恶意活动的额外防御层,例如拒绝服务 (DoS) 攻击或特权提升尝试。禁用 SElinux 可能会使某些应用程序运行更流畅,因为它们不必处理 SELinux 策略和规则施加的额外限制。
什么是 SELinux?
SELinux 是 Linux 内核的安全模块,通过策略执行提供强制访问控制。它由美国国家安全局与 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 编辑器中打开配置文件。
您将看到类似以下内容 −
# 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
如您所见,SELINUX 可以采用三种可能的值:enforcing、permissive 或 disabled。
当前值设置为 enforcing,这意味着 SELinux 已经启用。但是,如果它未在您的系统上启用,则需要更改此值。
将 SELINUX 的值更改为 enforcing
要启用 SELinux 并确保它即使在重新引导后仍保持启用状态,您需要将 SELINUX 的值更改为 enforcing。为此,将光标移到 `enforcing` 上,然后在键盘上按 `i`(插入)键。
这将使 vi 进入插入模式,允许您编辑文件中的文本。现在删除之前存在的任何值(enforcing/permissive/disabled),然后键入 `enforcing`。
现在保存您的更改并通过按 `ESC` 后跟 `:wq` 退出 vi 编辑器,然后按 Enter 键。
验证 SELinux 是否已启用并正在运行
在 CentOS/RHEL 7 系统上成功启用 SELinux 后,您需要验证它是否正常运行。检查 SELinux 状态的一种方法是使用“getenforce”命令。
此命令显示系统上 SELinux 的当前状态 - 无论是强制还是许可。要使用“getenforce”命令,只需打开一个新的终端窗口并键入“getenforce”。
输出将是三种可能的值之一:enforcing、permissive 或 disabled。如果看到“enforcing”,则 SELinux 正在系统上积极执行策略。
如果看到“permissive”,则 SELinux 仍在运行,但没有积极执行策略 - 它只会记录违规行为,而不是阻止它们。如果看到“disabled”,则 SELinux 完全没有运行。
再次使用 getenforce 命令检查状态更改
请注意,更改 /etc/selinux/config 文件中 SELINUX 的值需要重新引导才能使更改生效。重新引导服务器并重新登录后,再次运行 getenforce 命令以确保更改已正确应用。如果您在按照步骤 4 中的说明进行配置更改并重新引导后仍然看到“permissive”作为输出,这可能表示 CentOS/RHEL 7 服务器上的一项或多项服务配置不正确,没有使用 SElinux 策略。
验证所有服务是否正常运行
在验证 SELinux 是否设置为“enforcing”后,请确保所有服务都正常运行,方法是检查日志或使用 systemctl 等命令行工具。注意与 SElinux 策略相关的任何警报或错误消息,这些消息可能表明每项特定服务都需要采取其他步骤。重要的是,CentOS/RHEL 7 系统上的所有服务都配置了 SElinux 策略。
如果任何服务未正确配置,则它可能无法正常运行,甚至可能导致系统上的安全漏洞。因此,有必要检查每项服务是否都能顺利运行,以及其配置文件是否已更新为包含 SELinux 策略。
结论
Selinux 默认情况下随 CentOS/RHEL 7 一起安装,但可能不会开箱即用地启用。它增加了一层额外的保护,以防御当今普遍存在的各种类型的攻击。
启用 selinux 可确保在服务器上运行的应用程序和服务之间进行强大的隔离。selinux 提供了多种便利,例如基于角色的访问控制 (RBAC)、强制访问控制 (MAC)、进程分离等。