如何在 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 内核的安全模块,通过策略实施提供强制访问控制。它是由 NSA 与 Red Hat 合作开发的,作为传统 Unix 风格的自主访问控制之上的附加保护层。通过实施限制进程和用户可以执行的操作的策略,SELinux 有助于降低与恶意软件或未经授权的活动相关的风险。
它是如何工作的?
SELinux 的工作原理是根据分配给文件、目录、套接字、设备等资源的预定义标签,强制执行策略来管理系统上的进程和用户可以执行哪些操作。这些标签用于定义进程运行的上下文,允许对他们可以访问哪些资源以及他们可以执行哪些操作进行细粒度控制。 SELinux 策略定义了这些上下文如何根据其标签相互交互的规则。为了强制执行这些策略,SELinux 将系统调用限制和文件权限检查等内核级控制与 setroubleshootd 或auditd 等用户空间工具结合使用。
使用 SELinux 的好处:
更好的安全性 - 通过在内核级和用户级实施强制访问控制,selinux 与传统的自主访问控制相比提供了更高级别的安全性。
限制进程的能力 - 可以限制进程仅访问系统上的特定资源,从而降低未经授权的访问或恶意软件操纵的风险。
改进的审计和问责制 - Selinux 生成详细的日志条目,可用于识别和跟踪系统上的可疑活动,与传统的自主访问控制相比,提供更好的可见性和问责制。
检查SELinux的当前状态
在系统上启用 SELinux 之前,检查 SELinux 的当前状态是至关重要的一步。此步骤可确保系统不存在任何 SELinux 预先存在的问题,这些问题可能会在启用过程中导致问题。检查 SELinux 当前状态的一种方法是使用 getenforce 命令。
使用 getenforce 命令
getenforce 命令是 CentOS/RHEL 7 中的内置工具,用于显示 SELinux 当前的操作模式。要使用它,请打开终端窗口并输入“getenforce”,然后按 Enter 键。
然后该命令将显示三个可能的输出之一 -
强制 - 这意味着 SELinux 正在强制模式下运行,这可以防止对系统上的文件和进程进行任何未经授权的访问。
宽容 - 这意味着 SELinux 运行在宽容模式下,允许未经授权的访问,但会记录任何违规行为。
已禁用 - 这意味着您的系统当前未启用 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 的值更改为强制执行
要启用 SELinux 并确保它在重新启动后仍保持启用状态,您需要将 SELINUX 的值更改为 enforcing。为此,请将光标移到“enforcing”上,然后按键盘上的“i”(插入)键。
这将使 vi 进入插入模式,允许您编辑文件中的文本。现在删除之前存在的任何值(强制/许可/禁用),然后输入“强制”。
现在保存更改并按“ESC”,然后按“:wq”,然后按 Enter 键退出 vi 编辑器。
验证 SELinux 是否已启用并正在运行
在 CentOS/RHEL 7 系统上成功启用 SELinux 后,您需要验证它是否正常运行。检查 SELinux 状态的一种方法是使用“getenforce”命令。
此命令显示系统上 SELinux 的当前状态 – 无论是强制还是许可。要使用“getenforce”命令,只需打开一个新的终端窗口并输入“getenforce”即可。
输出将是三个可能值之一:强制、许可或禁用。如果您看到“enforcing”,那么 SELinux 正在您的系统上积极执行策略。
如果您看到“permissive”,那么 SELinux 仍在运行,但不会主动执行策略 – 它只会记录违规行为,而不是阻止它们。如果您看到“已禁用”,则表明 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)、进程分离等。