ubuntu中selinux的权限管理
导读:Ubuntu 中 SELinux 权限管理实战指南 一 背景与前置说明 Ubuntu 默认启用的是 AppArmor,并非 SELinux。若要在 Ubuntu 上使用 SELinux,需要安装并启用相关组件,且通常建议先以 Permis...
Ubuntu 中 SELinux 权限管理实战指南
一 背景与前置说明
- Ubuntu 默认启用的是 AppArmor,并非 SELinux。若要在 Ubuntu 上使用 SELinux,需要安装并启用相关组件,且通常建议先以 Permissive(宽容) 模式完成标签与策略调优,再切回 Enforcing(强制) 模式。SELinux 有三种模式:Enforcing(拒绝违规访问并记录)、Permissive(仅记录不拒绝)、Disabled(不加载策略);在 Disabled 与 其他模式之间切换必须重启系统。首次启用或大规模变更时,系统可能需要进行 relabel(重打安全标签)。
二 安装与启用 SELinux
- 安装基础工具与策略包(以 Ubuntu 20.04 为例):
- 安装组件:
sudo apt update & & sudo apt install policycoreutils selinux-utils selinux-basics auditd - 激活 SELinux:
sudo selinux-activate - 首次启用建议设为宽容模式并重启:
sudo reboot
- 安装组件:
- 验证状态:
getenforce(查看当前模式)、sestatus(查看详细状态) - 持久化配置:编辑 /etc/selinux/config
- 示例:
SELINUX=permissive(调试阶段),SELINUXTYPE=default(对应 targeted 策略)
- 示例:
- 重要提示:
- 从 Disabled → Enforcing/Permissive 必须重启;在 Enforcing/Permissive 间切换可用
setenforce 0/1临时调整。 - 若系统曾禁用 SELinux,首次启用后建议创建 /.autorelabel 并重启,以完成全量重打标签:
touch /.autorelabel & & reboot。
- 从 Disabled → Enforcing/Permissive 必须重启;在 Enforcing/Permissive 间切换可用
三 日常权限管理操作
- 模式切换与查询
- 临时切换:
sudo setenforce 0(宽容)、sudo setenforce 1(强制) - 查询:
getenforce、sestatus
- 临时切换:
- 文件与目录上下文(标签)
- 查看:
sudo semanage fcontext -l - 添加规则:
sudo semanage fcontext -a -t < type> "/path(/.*)?" - 应用标签:
sudo restorecon -Rv /path - 示例(将目录设为 httpd 可读内容):
sudo semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?" & & sudo restorecon -Rv /var/www/html
- 查看:
- 端口类型
- 查看端口策略:
sudo semanage port -l | grep < svc> - 修改端口类型:
sudo semanage port -m -t < svc> _port_t -p tcp < port>
- 查看端口策略:
- 日志与排错
- 查看 AVC 拒绝:
sudo ausearch -m avc -ts recent - 生成 AVC 报告:
sudo aureport -m avc - 辅助分析:
sealert -a /var/log/audit/audit.log(若未安装,可先sudo apt install setroubleshoot-server)
- 查看 AVC 拒绝:
- 自定义策略模块(进阶)
- 安装开发工具:
sudo apt install selinux-policy-dev - 生成模板:
sepolgen --init - 编译与安装:`make -f /usr/share/selinux/devel/Makefile & & sudo semodule -i .pp。
- 安装开发工具:
四 常见问题与处理建议
- 服务无法启动或访问被拒,如何快速判定是 SELinux 问题
- 将模式临时切到 Permissive:
sudo setenforce 0,若恢复正常,多半是 SELinux 策略限制;再切回 Enforcing 做精调。 - 检查 /var/log/audit/audit.log 的 AVC 记录,配合
ausearch/aureport/sealert定位。
- 将模式临时切到 Permissive:
- 更改服务端口或文档根目录
- 端口:使用
semanage port将端口加入对应服务的类型(如ssh_port_t)。 - 目录:使用
semanage fcontext为目标路径设置正确的类型(如httpd_sys_content_t),并用restorecon应用。
- 端口:使用
- 从 Disabled 切换到 Enforcing 后服务异常
- 可能原因:缺少标签或策略。建议回到 Permissive 排查并用
restorecon/自定义策略修复,必要时创建 /.autorelabel 并执行一次全量重打标签后重启。
- 可能原因:缺少标签或策略。建议回到 Permissive 排查并用
五 与 AppArmor 的关系与取舍
- Ubuntu 默认使用 AppArmor,它同样提供强制访问控制(MAC),但与 SELinux 的模型与工具链不同。若你的系统已深度使用 AppArmor 并稳定运行,通常不建议贸然替换为 SELinux;若希望使用 SELinux,需按上文步骤安装、启用并维护策略。生产环境变更前务必在测试环境验证,并做好备份与回滚方案。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu中selinux的权限管理
本文地址: https://pptw.com/jishu/777698.html
