Ubuntu SELinux如何定制策略
导读:Ubuntu 上定制 SELinux 策略的实用流程 一 准备与启用 SELinux 安装所需软件包(含策略工具与基础策略): sudo apt update sudo apt install selinux-basics selin...
Ubuntu 上定制 SELinux 策略的实用流程
一 准备与启用 SELinux
- 安装所需软件包(含策略工具与基础策略):
- sudo apt update
- sudo apt install selinux-basics selinux-policy-default selinux-utils auditd audispd-plugins
- 检查与切换模式:
- 查看状态:getenforce、sestatus
- 临时切换:sudo setenforce 1(Enforcing)/ 0(Permissive)
- 持久化配置(/etc/selinux/config):
- SELINUX=enforcing 或 permissive
- SELINUXTYPE=targeted
- 重要提示:
- 从 disabled 切换到 enforcing/permissive 需要重启;首次进入 enforcing 前建议先 permissive 并做一次文件系统重标记(fixfiles -F onboot 或重启后自动进行),以避免因标签错误导致服务异常。
二 策略定制路径与工具
-
方式一 从拒绝日志自动生成模块(最快)
- 收集 AVC 并生成可编译模块:
- grep avc /var/log/audit/audit.log | audit2allow -M mypol
- 编译并加载:
- make -f /usr/share/selinux/devel/Makefile
- sudo semodule -i mypol.pp
- 分析拒绝原因:ausearch -m avc -ts recent;audit2why 解释策略冲突。
- 收集 AVC 并生成可编译模块:
-
方式二 手写模块(.te)与文件上下文(.fc)
- 模块骨架示例(myapp.te):
- policy_module(myapp, 1.0)
- require { type httpd_t; class file { read open } ; }
- allow httpd_t httpd_sys_content_t:file { read open } ;
- 文件上下文示例(myapp.fc):
- /var/www/myapp(/.*)? system_u:object_r:httpd_sys_rw_content_t:s0
- 编译与加载:
- checkmodule -M -m -o myapp.mod myapp.te
- semodule_package -o myapp.pp -m myapp.mod
- sudo semodule -i myapp.pp
- 使新上下文生效:
- sudo restorecon -Rv /var/www/myapp
- 说明:
- 常见类型与布尔值可先用 audit2allow 观察,再按需收紧为最小权限;必要时用 setsebool 调整布尔开关(如 httpd 相关)。
- 模块骨架示例(myapp.te):
三 调试与验证
- 实时监控拒绝事件:
- ausearch -m avc -ts recent;tail -f /var/log/audit/audit.log | grep avc
- 解释与定位:
- audit2why 输出为何被拒与可行修复方向
- 策略生效验证:
- sestatus 查看当前模式与策略
- 重放触发操作,确认 AVC 消失且功能正常
- 回滚与清理:
- 卸载模块:sudo semodule -r mypol
- 临时放行:sudo setenforce 0(排查期间),修复后恢复 enforcing。
四 常见注意事项与最佳实践
- 先 permissive 验证、再 enforcing 上线;变更前备份关键配置与业务数据。
- 优先用 audit2allow 生成“最小可用”规则,再人工收敛权限,避免 grant 过度。
- 涉及路径权限时同步修正文件上下文(restorecon),否则规则生效也会因标签不符被拒。
- 对 Web、数据库等常见服务,先检查是否存在对应布尔值(如 httpd_enable_homedirs),能不动策略就不动策略。
- 生产环境不建议长期 permissive;Ubuntu 对 SELinux 的支持以社区为主,若需更完善的策略生态可考虑 RHEL/CentOS。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SELinux如何定制策略
本文地址: https://pptw.com/jishu/764201.html
