在 Ubuntu 上开启 SELinux(Security-Enhanced Linux) 的主要原因,和其安全设计目标有关。下面从“为什么要用”以及“Ubuntu 上的特殊情况”两方面说明。
一、为什么要开启 SELinux(通用原因)
SELinux 是 强制访问控制(MAC) 机制,相比传统的 Linux 权限(DAC)有更强的安全能力:
1. 防止权限滥用
- 即使用户/进程是 root,也受 SELinux 策略限制
- 防止“一个服务被攻破 → 控制整台机器”
2. 最小权限原则
- 每个进程只能访问它被允许的资源
- 例如:Web 服务器不能随便读
/etc/shadow
3. 遏制漏洞影响范围
- 即使程序有 0day 漏洞,SELinux 也能限制其破坏范围
- 常用于:
4. 满足合规要求
- 等保、金融、政务系统常要求 MAC 控制
- SELinux 是常见合规方案之一
二、Ubuntu 上开启 SELinux 的特殊背景
Ubuntu 默认使用的是 AppArmor,不是 SELinux
- Ubuntu 官方支持并默认启用 AppArmor
- SELinux 在 Ubuntu 上 可用但不默认
为什么有人在 Ubuntu 上开启 SELinux?
常见原因包括:
-
统一安全策略
- 公司其他系统用的是 RHEL / CentOS(SELinux)
- 想在 Ubuntu 上保持一致性
-
从 RHEL 迁移
-
特定安全需求
- 需要 SELinux 特有的策略粒度
- AppArmor 无法满足
-
测试 / 学习 SELinux
三、Ubuntu 开启 SELinux 的代价
⚠️ 需注意:
- Ubuntu 对 SELinux 的 支持不如 RHEL 完善
- 可能出现:
一般流程:
安装 selinux 软件包
修改 grub / kernel 参数
切换 enforcing / permissive
排错
四、总结一句话
Ubuntu 开启 SELinux,主要是为了更强的安全隔离和策略控制,但通常只在有特殊需求或跨平台一致性要求时才会这么做。
如果你愿意,我可以:
- 对比 SELinux vs AppArmor
- 给你 Ubuntu 开启 SELinux 的具体步骤
- 或说明 什么场景不推荐在 Ubuntu 用 SELinux
你想看哪一个?