Ubuntu SELinux权限设置方法
导读:Ubuntu 启用与配置 SELinux 的实用步骤 一 前置说明与准备 Ubuntu 默认启用的是 AppArmor,并非 SELinux。如确需使用 SELinux,需先安装并启用相关组件,再按需调整策略与模式。 建议准备:可回滚的快...
Ubuntu 启用与配置 SELinux 的实用步骤
一 前置说明与准备
- Ubuntu 默认启用的是 AppArmor,并非 SELinux。如确需使用 SELinux,需先安装并启用相关组件,再按需调整策略与模式。
- 建议准备:可回滚的快照/备份、一台测试环境、对业务影响的可维护时间窗。
二 安装与启用 SELinux
- 安装基础与策略包(含工具链):
- sudo apt update
- sudo apt install selinux-basics selinux-policy-default selinux-utils auditd policycoreutils selinux-policy-dev
- 启用 SELinux 并首次重打标签:
- sudo selinux-activate
- 重启系统:sudo reboot
- 说明:
- 初次启用会对文件系统重新打标签(relabel),耗时与数据量相关。
- 在 Ubuntu 20.04 等版本上,上述流程已验证可行。
三 模式切换与持久化配置
- 查看当前模式:
- getenforce(返回 Enforcing/Permissive/Disabled)
- sestatus(查看更详细状态)
- 临时切换(无需重启):
- 宽容模式(仅告警不阻断):sudo setenforce 0
- 强制模式:sudo setenforce 1
- 永久配置(重启后生效):
- 编辑 /etc/selinux/config,设置:
- SELINUX=enforcing | permissive | disabled
- 注意:
- 在 enforcing/permissive 与 disabled 之间切换需要重启。
- 从 disabled 改为启用时,系统会触发重新打标签。
- 编辑 /etc/selinux/config,设置:
四 常见权限设置与排错流程
- 文件与目录上下文(Label)
- 查看:ls -Z /path
- 持久化添加 fcontext:sudo semanage fcontext -a -t “/path(/.*)?”
- 应用标签:sudo restorecon -Rv /path
- 示例(Web 内容):sudo semanage fcontext -a -t httpd_sys_content_t “/var/www/html(/.*)?” & & sudo restorecon -Rv /var/www/html
- 查看与分析拒绝日志
- 实时/近期 AVC:sudo ausearch -m avc -ts recent
- 生成报表:sudo aureport -m avc
- 图形/辅助分析:sudo sealert -a /var/log/audit/audit.log
- 布尔值与策略开关
- 列出布尔:getsebool -a
- 设置持久布尔:sudo setsebool -P on|off
- 示例(允许 httpd 访问用户主目录):sudo setsebool -P httpd_enable_homedirs 1
- 自定义策略模块(最小权限示例)
- 场景:为自定义程序 myapp 创建最小策略
- 生成模板:mkdir myapp & & cd myapp & & sepolgen --init
- 编辑 myapp.te(示例片段,按需增删):
- module myapp 1.0;
- require { type unconfined_t; class file { read write getattr } ; class process transition; }
- type myapp_t;
- allow myapp_t self:process transition;
- allow myapp_t unconfined_t:process transition;
- allow myapp_t myapp_exec_t:file { read execute getattr } ;
- allow myapp_t myapp_log_t:file { write append getattr } ;
- 编译与加载:
- make -f /usr/share/selinux/devel/Makefile
- sudo semodule -i myapp.pp
- 为可执行文件打类型标签(示例):sudo chcon -t myapp_exec_t /usr/local/bin/myapp
- 排错要点
- 优先在 Permissive 模式下验证策略变更,确认无阻断后再切回 Enforcing。
- 使用 ausearch/aureport/sealert 精确定位被拒的源/目标类型与权限,按“最小权限”逐步放行。
五 实用建议与替代方案
- 生产环境建议保持 SELinux 为 Enforcing,并通过布尔值与细化 fcontext 逐步收敛权限,避免一次性大幅放宽策略。
- 若 SELinux 配置与维护成本过高,可考虑 AppArmor(Ubuntu 默认安全模块)作为替代:
- 状态:sudo aa-status
- 启用:sudo systemctl enable --now apparmor。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SELinux权限设置方法
本文地址: https://pptw.com/jishu/753489.html
