在 Ubuntu 上,SELinux(Security-Enhanced Linux) 的作用主要是增强系统安全,通过**强制访问控制(MAC,Mandatory Access Control)**来限制进程和用户对系统资源的访问。下面从作用和实际意义两方面说明。
一、SELinux 的核心作用
1. 强制访问控制(MAC)
- 传统 Linux 使用 DAC(自主访问控制):文件所有者决定谁能访问。
- SELinux 在 DAC 之上增加 MAC:
- 即使你是 root,也不一定有权限做某些事
- 每个进程、文件、端口都有“安全标签(context)”
✅ 作用:防止权限滥用和越权访问
2. 最小权限原则
- 每个进程只能访问它“被允许”的资源
- 例如:
- Web 服务器(nginx/apache)不能随便读
/etc/shadow
- 邮件服务不能访问数据库文件
✅ 作用:降低被攻击后的影响范围
3. 防止提权和横向移动
即使攻击者:
SELinux 仍可限制:
✅ 作用:防止“攻破一点,控制全部”
4. 保护关键系统资源
SELinux 可保护:
✅ 作用:防止恶意篡改系统底层
5. 安全策略可审计、可定制
- 策略可记录“谁访问了什么”
- 可作为安全合规依据(等保、ISO、CIS)
✅ 作用:便于安全审计和合规
二、Ubuntu 上 SELinux 的特点
1. Ubuntu 默认情况
- 默认未启用 SELinux
- 默认使用 AppArmor(另一种 MAC 机制)
2. 是否需要在 Ubuntu 用 SELinux?
- 服务器高安全场景 ✅ 可用
- 一般桌面 / 开发环境 ❌ 不推荐(复杂度高)
- 某些企业 / 安全要求场景(如等保)✅ 可能要求
三、SELinux 常见模式
getenforce
Enforcing:强制生效(拦截违规)
Permissive:只记录不拦截(排错用)
Disabled:关闭
四、与 AppArmor 的区别(Ubuntu 常见)
| 项目 |
SELinux |
AppArmor |
| 类型 |
MAC |
MAC |
| 配置方式 |
标签 / 策略 |
路径为主 |
| 学习成本 |
高 |
低 |
| Ubuntu 默认 |
否 |
是 |
五、总结一句话
Ubuntu 上的 SELinux 作用是:通过强制访问控制,限制进程行为,防止权限滥用、提权和系统被全面控制,从而大幅提升系统安全性。
如果你愿意,我也可以:
- 教你 Ubuntu 如何安装和启用 SELinux
- 对比 SELinux vs AppArmor 实战
- 给你 服务器安全加固建议