Ubuntu SELinux策略配置指南
导读:Ubuntu SELinux策略配置指南 一 前置说明与准备 Ubuntu 默认启用的是 AppArmor,并非 SELinux。若你确有合规或统一安全基线需求,可在 Ubuntu 上安装并启用 SELinux;否则建议优先使用 AppA...
Ubuntu SELinux策略配置指南
一 前置说明与准备
- Ubuntu 默认启用的是 AppArmor,并非 SELinux。若你确有合规或统一安全基线需求,可在 Ubuntu 上安装并启用 SELinux;否则建议优先使用 AppArmor。启用 SELinux 前请先备份数据与配置,并在测试环境验证。为获得完整的策略与审计能力,建议安装:selinux-basics、selinux-policy-default、selinux-utils、auditd、policycoreutils、audit2allow。这些包提供启用、策略管理、审计日志与模块加载等基础能力。
二 安装与启用 SELinux
- 安装组件
- 执行:
sudo apt update - 安装:
sudo apt install selinux-basics selinux-policy-default selinux-utils auditd policycoreutils audit2allow
- 执行:
- 初次启用与重启
- 检查状态:
getenforce(应返回 Disabled) - 启用检查:
sudo selinux-activate(由 selinux-basics 提供,完成策略与文件标签初始化) - 设置模式:
sudo setenforce 1(临时为 Enforcing;如失败可先用sudo setenforce 0切到 Permissive 排查) - 永久生效:编辑 /etc/selinux/config,设置
SELINUX=enforcing(或先用SELINUX=permissive观察),保存后重启:sudo reboot
- 检查状态:
- 验证
sestatus应显示 SELinux status: enabled 且 Current mode: enforcing/permissive- 如从 Disabled 切换到 Enforcing,首次启动会进行文件系统重标记,耗时与磁盘大小相关。
三 常用策略配置与管理
- 状态与模式
- 查看:
getenforce、sestatus - 切换:
sudo setenforce 0|1(临时);永久通过 /etc/selinux/config 配置并重启
- 查看:
- 端口标签(semanage)
- 示例:允许 Nginx/Apache 使用 TCP 8080
sudo semanage port -a -t http_port_t -p tcp 8080
- 示例:允许 Nginx/Apache 使用 TCP 8080
- 布尔值(setsebool)
- 示例:允许 httpd 访问用户主目录
sudo setsebool -P httpd_enable_homedirs 1
- 示例:允许 httpd 访问用户主目录
- 自定义策略模块(最小权限示例)
- 创建文件 myapp.te:
policy_module(myapp, 1.0) require { type myapp_t; type myapp_exec_t; class file { read write open } ; } init_daemon_domain(myapp_t, myapp_exec_t) allow myapp_t myapp_exec_t:file { read write open execute } ; - 编译与加载:
- 方式A(推荐):
make -f /usr/share/selinux/devel/Makefile myapp.pp - 方式B(等价):
checkmodule -M -m -o myapp.mod myapp.te & & semodule_package -o myapp.pp -m myapp.mod - 加载:
sudo semodule -i myapp.pp
- 方式A(推荐):
- 创建文件 myapp.te:
- 文件上下文与重标记
- 设置默认上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/myapp(/.*)?" - 应用:
sudo restorecon -Rv /var/www/myapp
- 设置默认上下文:
- 模块管理
- 列出模块:
semodule -l - 卸载模块:
sudo semodule -r myapp。
- 列出模块:
四 审计与问题排查
- 查看拒绝事件
- 最近 AVC:
sudo ausearch -m avc -ts recent - 统计:
sudo aureport -m avc
- 最近 AVC:
- 分析并生成策略
- 解释原因:
sudo ausearch -m avc -ts recent | audit2why - 生成模块:
grep avc /var/log/audit/audit.log | audit2allow -M myfix - 加载修复:
sudo semodule -i myfix.pp
- 解释原因:
- 排错建议
- 先将系统切到 Permissive 验证是否为 SELinux 导致,再回到 Enforcing 并细化策略
- 对新增目录/文件使用
restorecon恢复正确上下文 - 对端口、布尔值与文件类型务必使用对应的管理工具(semanage/setsebool/restorecon),避免直接修改文件标签。
五 生产部署建议与注意事项
- 采用渐进式启用:先 Permissive 收集 AVC 日志并生成最小必要策略,再切回 Enforcing;变更前在测试环境验证。
- 变更风险控制:重要变更前备份策略与关键配置;对业务影响面进行灰度与回滚预案。
- 默认安全基线:Ubuntu 默认使用 AppArmor,如无强制要求,优先评估 AppArmor 是否满足需求;确需 SELinux 时再启用。
- 审计与合规:保持 auditd 运行,集中采集与分析 /var/log/audit/audit.log,定期审计策略命中与拒绝事件。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu SELinux策略配置指南
本文地址: https://pptw.com/jishu/761992.html
