首页主机资讯Ubuntu SELinux如何隔离进程

Ubuntu SELinux如何隔离进程

时间2025-11-21 17:37:03发布访客分类主机资讯浏览986
导读:Ubuntu 下使用 SELinux 隔离进程 前置说明与准备 Ubuntu 默认使用 AppArmor,如要使用 SELinux 需先安装并启用相关组件。安装命令示例:sudo apt-get update && sud...

Ubuntu 下使用 SELinux 隔离进程

前置说明与准备

  • Ubuntu 默认使用 AppArmor,如要使用 SELinux 需先安装并启用相关组件。安装命令示例:sudo apt-get update & & sudo apt-get install selinux-basics selinux-policy-default。完成后使用 selinux-activate 启用,并重启系统。为便于排错,建议安装 setroubleshoot-server 以将 AVC 拒绝转换为可读提示。注意:切换 SELinux 模式或策略不当可能导致服务异常,务必在测试环境验证。

启用与验证 SELinux

  • 检查状态:使用 sestatusgetenforce 查看当前模式(Enforcing/Permissive/Disabled)。
  • 临时切换模式:sudo setenforce 0(Permissive,仅记录不阻断)/ sudo setenforce 1(Enforcing)。
  • 永久生效:编辑 /etc/selinux/config,设置 SELINUX=enforcing(或 Permissive/Disabled),保存并重启。
  • 原则:排错阶段可先用 Permissive 观察日志,确认无误后再切回 Enforcing

隔离进程的核心步骤

  • 识别进程与当前域:使用 ps -eZ | grep < 进程名> 查看进程 SELinux 上下文(如 system_u:system_r:httpd_t:s0 中的 httpd_t 即域)。
  • 识别资源与所需权限:使用 ls -lZ /path 查看文件/目录上下文;结合业务确认需要的最小权限(读、写、执行、绑定端口、访问特定目录等)。
  • 纠正或持久化文件上下文:
    • 临时修正:sudo chcon -t < 目标类型> /path
    • 持久修正:sudo semanage fcontext -a -t < 目标类型> “/path(/.*)?” 后执行 sudo restorecon -Rv /path
  • 让进程运行在专有域并收敛权限:
    • 优先使用系统已有策略域(如 Web 服务使用 httpd_t),避免长期停留在 unconfined_t
    • 若默认域权限不足,基于 AVC 日志生成最小策略模块(见下一节)。
  • 验证:在 Enforcing 模式下重启服务并复核日志,确保功能正常且无越权。

从拒绝日志生成最小策略模块

  • 收集 AVC 拒绝:sudo ausearch -m avc -ts recent 或 grep AVC /var/log/audit/audit.log。
  • 生成策略模块:sudo ausearch -m avc -ts recent | audit2allow -M < 模块名> (生成 .pp.te)。
  • 安装与验证:sudo semodule -i < 模块名> .pp,重启服务并再次检查日志是否还有合理拒绝。
  • 原则:仅按需放行,避免过度授权;复杂场景可结合 semanage 持久化文件上下文,逐步收敛权限。

常见问题与最佳实践

  • 避免长期使用 chcon,优先用 semanage fcontext + restorecon 实现持久化上下文。
  • 排错期用 Permissive 观察,定位后再回到 Enforcing;必要时借助 sealert 分析 AVC 提示。
  • 持续监控 AVC 日志,定期审计策略与进程最小权限,防止权限漂移。
  • 若系统难以稳定运行 SELinux,可考虑 Ubuntu 默认的 AppArmor 作为替代方案。

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


若转载请注明出处: Ubuntu SELinux如何隔离进程
本文地址: https://pptw.com/jishu/753487.html
ubuntu编译golang代码需要注意什么 debian readdir如何处理权限不足问题

游客 回复需填写必要信息