温馨提示×

Ubuntu SELinux工作模式

小樊
42
2025-11-14 21:03:11
栏目: 智能运维

Ubuntu 中 SELinux 工作模式与切换

一 模式总览

  • Enforcing(强制):违反策略的访问会被拒绝并记录日志,这是生产环境的推荐模式。
  • Permissive(宽容):违反策略的访问仅记录日志不拒绝,用于排错与策略调优。
  • Disabled(禁用)不加载 SELinux 策略,系统以标准 DAC 访问控制运行。
  • 注:Ubuntu 默认不使用 SELinux,而使用 AppArmor;如需 SELinux,需要手动安装与启用。

二 查看与临时切换

  • 查看状态与当前模式
    • 命令:getenforce(返回 Enforcing/Permissive/Disabled
    • 命令:sestatus(查看更详细状态,如策略类型、是否启用等)
  • 在 Enforcing 与 Permissive 之间临时切换(无需重启
    • 设为宽容:sudo setenforce 0
    • 设为强制:sudo setenforce 1
  • 重要提示:从 Disabled 切换到 Enforcing/Permissive 需要修改配置并重启;从 Enforcing/Permissive 切换到 Disabled 也需修改配置并重启

三 持久化配置与启用步骤

  • 安装与激活
    • 安装基础组件:sudo apt update && sudo apt install selinux-basics auditd setools selinux-policy-default
    • 激活 SELinux:sudo selinux-activate(会在启动参数中添加 security=selinux
  • 修改配置文件以持久化模式
    • 编辑:sudo nano /etc/selinux/config
    • 示例:
      • 宽容模式:SELINUX=permissive
      • 强制模式:SELINUX=enforcing
      • 策略类型:SELINUXTYPE=default(常见为 default;部分系统亦可见 targeted/mls 等取值)
  • 首次启用或曾禁用后首次启用
    • 为避免文件上下文不一致,建议创建标记文件并重启:
      • sudo touch /.autorelabel
      • sudo reboot
  • 重启后验证
    • getenforcesestatus 确认已进入期望模式。

四 故障排查与注意事项

  • 查看拒绝日志
    • 主要日志:/var/log/audit/audit.log
    • 快速检索:sudo ausearch -m avc -ts recent
    • 原因解释:sudo ausearch -m avc -ts recent | audit2why
  • 上下文与策略工具
    • 查看上下文:ls -Zps -Z
    • 修改上下文:chcon(示例:sudo chcon -t httpd_sys_content_t /var/www/html/index.html
    • 布尔值管理:sudo setsebool -P httpd_enable_homedirs 1
  • 重要注意事项
    • 切换为 Disabled/从 Disabled 启用必须重启;在 Enforcing/Permissive 间切换可用 setenforce 即时生效。
    • Ubuntu 对 SELinux 的支持有限,某些功能或软件可能不如 RHEL/CentOS 完备;若需完整的 SELinux 生态与工具链,优先考虑这些发行版。

0