首页主机资讯SELinux在Ubuntu中如何定制

SELinux在Ubuntu中如何定制

时间2025-12-08 23:37:04发布访客分类主机资讯浏览501
导读:Ubuntu 中定制 SELinux 的可操作步骤 一 前置说明与准备 Ubuntu 默认启用的是 AppArmor,如确需使用 SELinux,需先安装并启用相关组件,再按需定制策略。启用前建议备份关键数据与现有安全配置。生产环境不建议...

Ubuntu 中定制 SELinux 的可操作步骤

一 前置说明与准备

  • Ubuntu 默认启用的是 AppArmor,如确需使用 SELinux,需先安装并启用相关组件,再按需定制策略。启用前建议备份关键数据与现有安全配置。生产环境不建议长期停留在宽容模式。为获得完整工具链与审计支持,建议安装:selinux-basics、selinux-policy-default、selinux-utils、auditd、audispd-plugins、policycoreutils。启用后可用 sestatus、getenforce 查看状态。

二 启用与基础配置

  • 安装组件
    • 执行:sudo apt update & & sudo apt install selinux-basics selinux-policy-default selinux-utils auditd audispd-plugins policycoreutils
  • 切换为宽容模式并重启
    • 编辑 /etc/selinux/config,将 SELINUX=permissive(首次定制建议宽容以收集拒绝日志,再切回强制)。
    • 执行:sudo reboot
  • 验证与临时切换
    • 查看:getenforcesestatus
    • 临时切换:sudo setenforce 1(强制)或 sudo setenforce 0(宽容)
  • 原则:定制阶段先用宽容模式收集 AVC 拒绝日志,规则验证无误后再切回强制模式

三 定制策略的三种常用方式

  • 方式 A 使用 audit2allow 从拒绝日志快速生成模块
    • 收集并生成模块:sudo ausearch -m avc -ts recent | audit2allow -M mypol
    • 加载模块:sudo semodule -i mypol.pp
    • 适用:快速修复常见权限不足,作为最小可行补丁。
  • 方式 B 使用 Makefile 构建自定义模块(.te 源文件)
    • 创建目录与源文件:mkdir -p ~/selinux-custom & & cd ~/selinux-custom & & nano custom_policy.te
    • 示例(演示用,按需改写):
      policy_module(custom_policy, 1.0)
      require {
          
        type httpd_t;
      
        class file {
       read write open }
          ;
      
      }
      
      allow httpd_t httpd_sys_content_t:file {
       read write open }
          ;
          
      
    • 编译并安装:make -f /usr/share/selinux/devel/Makefile 生成 custom_policy.pp,然后 sudo semodule -i custom_policy.pp
    • 适用:需要更可控、可维护的策略模块。
  • 方式 C 调整文件上下文与端口标签(需 semanage)
    • 文件上下文:sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?" & & sudo restorecon -Rv /var/www/myapp
    • 端口标签:sudo semanage port -a -t http_port_t -p tcp 8080
    • 适用:目录/文件类型或端口类型不匹配导致的访问问题。

四 验证与排错

  • 实时监控拒绝事件:sudo ausearch -m avc -ts recent
  • 解释拒绝原因:sudo ausearch -m avc -ts recent | audit2why
  • 查看整体状态:sestatusgetenforce
  • 策略生效验证:确认目标进程不再产生同类 AVC 拒绝,且功能按预期运行;必要时回到宽容模式复核日志与规则。

五 维护与最佳实践

  • 模式管理:定制与回归测试期间使用 permissive,验证通过后改为 enforcing;避免直接长期禁用。
  • 策略演进:新增服务或变更路径时,优先用 audit2allow 生成草案,再人工审阅并收敛为最小权限的 .te 模块,用 semodule -i 加载。
  • 上下文与端口:对新增目录/文件使用 semanage fcontextrestorecon;对自定义服务端口使用 semanage port 打上正确类型。
  • 变更控制:为策略模块与关键配置建立变更记录与回滚方案(如保存 .te/.pp 与变更说明),在测试环境充分验证后再上线。

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


若转载请注明出处: SELinux在Ubuntu中如何定制
本文地址: https://pptw.com/jishu/766487.html
Ubuntu下Golang环境配置方法 Ubuntu中SELinux如何监控

游客 回复需填写必要信息