温馨提示×

Linux SELinux更新后如何验证

小樊
34
2025-12-20 05:04:04
栏目: 智能运维

Linux SELinux更新后的验证清单

一 快速状态与版本核验

  • 查看运行模式与内核策略加载情况:
    • 命令:getenforce(返回 Enforcing/Permissive/Disabled
    • 命令:sestatus(关注输出中的 SELinux status、Current mode、Loaded policy name、Policy version、Loaded module list
  • 核对配置文件是否生效:
    • 命令:cat /etc/selinux/config(确认 SELINUX=enforcing|permissive|disabled 与期望一致)
  • 说明:
    • getenforce/ sestatus 显示 Disabled,通常意味着未启用或未加载策略,需要检查配置与是否重启。
    • RHEL/CentOS 上,SELinux 与系统版本/内核关联紧密,更新后通过系统更新完成;在 Ubuntu 上默认使用 AppArmor,若手动启用 SELinux,需确认已安装并加载策略。

二 策略与模块完整性检查

  • 列出已加载策略模块并核对版本:
    • 命令:semodule -l(确认关键模块如 targeted 存在且版本符合预期)
  • 查看整体策略与内核策略版本:
    • 命令:sestatus(关注 Policy versionLoaded policy name
  • 如更新了自定义模块,确认已正确编译并加载:
    • 示例流程:checkmodule -M -m -o my_policy.mod my_policy.tesemodule_package -o my_policy.pp -m my_policy.modsemodule -i my_policy.pp
  • 说明:模块加载异常会导致服务启动失败或权限异常,需结合日志进一步排查。

三 审计日志与拒绝分析

  • 检索最近的拒绝事件并解释原因:
    • 命令:ausearch -m avc -ts recent | audit2why
  • 观察是否有新产生的 AVC denied 日志,判断更新是否引入访问冲突:
    • 命令:ausearch -m avc -ts recent
  • 处置思路:
    • 若仅为兼容性提示,可先在 Permissive 模式验证业务,再按建议生成或调整策略模块,最后回到 Enforcing
    • 使用 audit2allow 生成策略模块并加载(示例:ausearch -m avc -ts recent | audit2allow -M my_policy && semodule -i my_policy.pp)。

四 服务与端口上下文回归测试

  • 重启关键服务并观察是否因策略导致启动失败或功能异常:
    • 示例:systemctl restart sshd / nginx / httpd(按实际环境选择)
  • 校验文件与目录上下文是否正确:
    • 查看/修正上下文:semanage fcontext -l | grep ;必要时 semanage fcontext -a -t (/.*)?”
    • 应用上下文:restorecon -Rv
  • 校验端口标签是否正确(以 http_port_t 为例):
    • 查看/添加端口:semanage port -l | grep http_port_t;必要时 semanage port -a -t http_port_t -p tcp
  • 说明:更新策略或系统后,文件/端口的默认上下文可能变化,回归测试可提前发现访问被拒问题。

五 常见问题与临时处置

  • Disabled 切换到 Enforcing/Permissive 需要重启系统后才能生效;仅修改 /etc/selinux/config 而不重启不会生效。
  • 临时切换运行模式用于排障(无需重启):
    • 命令:setenforce 0(切换为 Permissive
    • 命令:setenforce 1(切换为 Enforcing
  • 若更新后业务异常且需快速恢复,可短时切到 Permissive 定位问题,再回到 Enforcing 并完善策略。

0