温馨提示×

如何启用Linux的SELinux功能

小樊
35
2025-12-20 05:00:00
栏目: 智能运维

启用 Linux 的 SELinux 功能

一 前置检查与准备

  • 查看当前状态与模式:运行命令查看是否已启用及处于何种模式。示例输出含义:SELinux status 为 enabled 表示内核已加载 SELinux;Current mode 为 enforcing/permissive 表示当前运行模式;getenforce 直接返回当前模式。命令:getenforcesestatus。若看到 SELinux status: disabled,说明当前未启用。对于 Ubuntu/Debian 等默认可能未启用或采用 AppArmor 的发行版,需先确认是否安装并启用 SELinux 组件。必要时安装工具包(如 policycoreutils、selinux-utils、selinux-basics),并使用 sudo selinux-activate 激活后再重启。注意:从 disabled 切换到 enforcing 通常需要重启系统以加载策略。

二 启用步骤

  • 编辑配置文件:将 /etc/selinux/config 中的 SELINUX= 设置为所需模式。常用取值:
    • enforcing:策略强制执行,违规将被拒绝。
    • permissive:仅记录违规,不阻断,便于排障与过渡。
    • disabled:完全不加载 SELinux(不建议)。示例:sudo vi /etc/selinux/config,将行改为 SELINUX=enforcing(或先用 permissive 验证)。
  • 处理文件上下文(从 disabled 切到 enforcing 时强烈建议):为避免因文件安全上下文缺失导致服务异常,创建自动重标记标记文件并重启。命令:sudo touch /.autorelabel,随后 sudo reboot。重启后系统会自动对文件进行重新标记,耗时与数据量相关。
  • 不重启的临时切换(仅限 enforcing/permissive 之间):命令:sudo setenforce 0(切到宽容模式)、sudo setenforce 1(切回强制模式)。此方式用于验证与临时排障,不会持久化;持久化仍需修改配置文件并重启。

三 验证与常见问题

  • 验证启用结果:重启后执行 sestatusgetenforce,应看到 SELinux status: enabled,且 Current mode 为 enforcing(或你设置的模式)。
  • 排障要点:
    • 若服务启动失败或访问被拒,先将模式临时切到 permissive 验证是否为 SELinux 引起:sudo setenforce 0,观察问题是否消失;定位后再回到 enforcing 并完善策略。
    • 查看拒绝日志以定位问题:使用 sudo ausearch -m avc -ts recent 查看最近的 AVC 拒绝事件,或用 sudo aureport -m avc 生成 AVC 报表;根据日志调整文件上下文或布尔值策略。
    • 在云环境或特殊平台(如部分云服务器镜像)从 disabled 首次启用时,务必执行 /.autorelabel 并预留重标记时间,避免系统或关键服务因上下文不一致而异常。

0