首页主机资讯Ubuntu SELinux策略配置指南

Ubuntu SELinux策略配置指南

时间2025-12-03 02:29:04发布访客分类主机资讯浏览819
导读:Ubuntu SELinux策略配置指南 一 前置说明与准备 Ubuntu 默认启用的是 AppArmor,并非 SELinux。若你确有合规或统一安全基线需求,可在 Ubuntu 上安装并启用 SELinux;否则建议优先使用 AppA...

Ubuntu SELinux策略配置指南

一 前置说明与准备

  • Ubuntu 默认启用的是 AppArmor,并非 SELinux。若你确有合规或统一安全基线需求,可在 Ubuntu 上安装并启用 SELinux;否则建议优先使用 AppArmor。启用 SELinux 前请先备份数据与配置,并在测试环境验证。为获得完整的策略与审计能力,建议安装:selinux-basics、selinux-policy-default、selinux-utils、auditd、policycoreutils、audit2allow。这些包提供启用、策略管理、审计日志与模块加载等基础能力。

二 安装与启用 SELinux

  • 安装组件
    • 执行:sudo apt update
    • 安装:sudo apt install selinux-basics selinux-policy-default selinux-utils auditd policycoreutils audit2allow
  • 初次启用与重启
    • 检查状态:getenforce(应返回 Disabled
    • 启用检查:sudo selinux-activate(由 selinux-basics 提供,完成策略与文件标签初始化)
    • 设置模式:sudo setenforce 1(临时为 Enforcing;如失败可先用 sudo setenforce 0 切到 Permissive 排查)
    • 永久生效:编辑 /etc/selinux/config,设置 SELINUX=enforcing(或先用 SELINUX=permissive 观察),保存后重启:sudo reboot
  • 验证
    • sestatus 应显示 SELinux status: enabledCurrent mode: enforcing/permissive
    • 如从 Disabled 切换到 Enforcing,首次启动会进行文件系统重标记,耗时与磁盘大小相关。

三 常用策略配置与管理

  • 状态与模式
    • 查看:getenforcesestatus
    • 切换:sudo setenforce 0|1(临时);永久通过 /etc/selinux/config 配置并重启
  • 端口标签(semanage)
    • 示例:允许 Nginx/Apache 使用 TCP 8080
      • sudo semanage port -a -t http_port_t -p tcp 8080
  • 布尔值(setsebool)
    • 示例:允许 httpd 访问用户主目录
      • sudo setsebool -P httpd_enable_homedirs 1
  • 自定义策略模块(最小权限示例)
    • 创建文件 myapp.te
      policy_module(myapp, 1.0)
      require {
          
        type myapp_t;
          
        type myapp_exec_t;
      
        class file {
       read write open }
          ;
      
      }
      
      init_daemon_domain(myapp_t, myapp_exec_t)
      allow myapp_t myapp_exec_t:file {
       read write open execute }
          ;
          
      
    • 编译与加载:
      • 方式A(推荐):make -f /usr/share/selinux/devel/Makefile myapp.pp
      • 方式B(等价):checkmodule -M -m -o myapp.mod myapp.te & & semodule_package -o myapp.pp -m myapp.mod
      • 加载:sudo semodule -i myapp.pp
  • 文件上下文与重标记
    • 设置默认上下文:sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?"
    • 应用:sudo restorecon -Rv /var/www/myapp
  • 模块管理
    • 列出模块:semodule -l
    • 卸载模块:sudo semodule -r myapp

四 审计与问题排查

  • 查看拒绝事件
    • 最近 AVC:sudo ausearch -m avc -ts recent
    • 统计:sudo aureport -m avc
  • 分析并生成策略
    • 解释原因:sudo ausearch -m avc -ts recent | audit2why
    • 生成模块:grep avc /var/log/audit/audit.log | audit2allow -M myfix
    • 加载修复:sudo semodule -i myfix.pp
  • 排错建议
    • 先将系统切到 Permissive 验证是否为 SELinux 导致,再回到 Enforcing 并细化策略
    • 对新增目录/文件使用 restorecon 恢复正确上下文
    • 对端口、布尔值与文件类型务必使用对应的管理工具(semanage/setsebool/restorecon),避免直接修改文件标签。

五 生产部署建议与注意事项

  • 采用渐进式启用:先 Permissive 收集 AVC 日志并生成最小必要策略,再切回 Enforcing;变更前在测试环境验证。
  • 变更风险控制:重要变更前备份策略与关键配置;对业务影响面进行灰度与回滚预案。
  • 默认安全基线:Ubuntu 默认使用 AppArmor,如无强制要求,优先评估 AppArmor 是否满足需求;确需 SELinux 时再启用。
  • 审计与合规:保持 auditd 运行,集中采集与分析 /var/log/audit/audit.log,定期审计策略命中与拒绝事件。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu SELinux策略配置指南
本文地址: https://pptw.com/jishu/761992.html
debian readdir如何兼容不同版本 debian readdir如何与文件系统交互

游客 回复需填写必要信息