首页主机资讯SELinux策略如何在Ubuntu应用

SELinux策略如何在Ubuntu应用

时间2025-11-17 17:05:03发布访客分类主机资讯浏览301
导读:在 Ubuntu 上启用 SELinux 并应用到应用 一 前置说明与准备 Ubuntu 默认使用 AppArmor,并非 SELinux。在生产环境启用 SELinux 前务必充分评估与测试,必要时先在测试环境验证。为便于排错,建议安装...

在 Ubuntu 上启用 SELinux 并应用到应用

一 前置说明与准备

  • Ubuntu 默认使用 AppArmor,并非 SELinux。在生产环境启用 SELinux 前务必充分评估与测试,必要时先在测试环境验证。为便于排错,建议安装审计服务:sudo apt-get install auditd audispd-plugins。启用后可用 sestatus、getenforce 查看状态;配置文件为 /etc/selinux/config

二 安装与启用 SELinux

  • 安装组件(不同版本仓库包名略有差异,以下为常见组合):
    • 基础与策略:sudo apt-get install selinux-basics selinux-policy-default selinux-utils
    • 可选管理工具:sudo apt-get install policycoreutils selinux-utils
  • 启用步骤:
    • 临时切换为宽松模式以便排错:sudo setenforce 0
    • 持久化配置:编辑 /etc/selinux/config,设置 SELINUX=permissive(先宽松、验证无误再改为 enforcing),保存后重启:sudo reboot
    • 验证:sestatus、getenforce
  • 提示:某些系统可能默认没有 SELinux 策略包或工具,需确认仓库可用或选择支持的版本。

三 为应用应用与定制策略

  • 方式一 使用布尔值与端口标签快速适配
    • 调整布尔值(示例:允许 httpd 访问用户主目录):sudo setsebool -P httpd_enable_homedirs 1
    • 管理端口标签(示例:将 8080/tcp 标记为 http_port_t):sudo semanage port -a -t http_port_t -p tcp 8080
  • 方式二 从拒绝日志自动生成模块
    • 查看最近拒绝:ausearch -m avc -ts recent
    • 生成并加载模块:grep avc /var/log/audit/audit.log | audit2allow -M mypol & & sudo semodule -i mypol.pp
  • 方式三 编写自定义策略模块(.te)
    • 示例(允许某域对目录具备读写):
      • 文件:myapp.te
        policy_module(myapp, 1.0)
        require {
            
            type myapp_t;
            
            type httpd_sys_rw_content_t;
        
            class dir {
         read write }
            ;
        
        }
        
        allow myapp_t httpd_sys_rw_content_t:dir {
         read write }
            ;
            
        
    • 编译与加载:
      • 使用开发 Makefile:make -f /usr/share/selinux/devel/Makefile
      • 或分步:checkmodule -M -m -o myapp.mod myapp.te & & semodule_package -o myapp.pp -m myapp.mod
      • 加载:sudo semodule -i myapp.pp
  • 方式四 设置文件安全上下文并恢复
    • 查看上下文:ls -Z /path
    • 恢复默认标签:sudo restorecon -Rv /path
  • 说明:若需要更细粒度控制,可配合编写 .fc(文件上下文)与接口文件,再用上述流程编译加载。

四 验证与排错

  • 状态与模式:sestatus、getenforce
  • 拒绝事件定位:ausearch -m avc -ts recent
  • 人性化解释:audit2why < /var/log/audit/audit.log(或配合 grep/ausearch 定向分析)
  • 策略生效验证:复现业务操作,确认不再出现 AVC denied,并检查关键目录/端口的标签与布尔值是否符合预期。

五 生产部署建议

  • 采用“先 Permissive、后 Enforcing”的灰度策略,逐步收敛策略范围;变更前备份关键数据与现有策略模块。
  • 对关键应用建立“最小权限”策略,优先用布尔值与端口标签解决通用问题,再用自定义模块精确放行。
  • 持续审计与回归测试:保留 auditd 日志,定期用 ausearch/audit2why 复盘,确保策略与业务演进同步。

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


若转载请注明出处: SELinux策略如何在Ubuntu应用
本文地址: https://pptw.com/jishu/749097.html
SELinux误报如何在Ubuntu解决 SELinux日志在Ubuntu哪查看

游客 回复需填写必要信息