主题
SELinux 与 AppArmor
除了传统的 Unix 文件权限控制,Linux 提供了增强型强制访问控制机制(MAC),主要有两种实现:SELinux 和 AppArmor。它们可进一步限制进程行为,保护系统核心资源。
一、什么是 SELinux?
SELinux(Security-Enhanced Linux)由美国 NSA 提出,是基于标签的强制访问控制系统,适用于高安全性场景。
1. SELinux 的三种模式
bash
getenforce- Enforcing:强制执行策略,阻止并记录访问
- Permissive:只记录违规行为,不阻止
- Disabled:完全关闭
切换模式:
bash
# 临时修改
setenforce 0 # 切换到 Permissive
setenforce 1 # 切换到 Enforcing
# 永久修改
vim /etc/selinux/config
SELINUX=permissive2. 常用命令
bash
sestatus # 查看当前状态
ls -Z filename # 查看安全上下文
chcon -t httpd_sys_content_t /var/www/html/index.html
restorecon -Rv /var/www/html/3. 常见用途示例
- 限制 nginx 访问目录
- 防止进程越权访问 socket
- 防止未知程序绑定 80/443 等敏感端口
二、什么是 AppArmor?
AppArmor(Application Armor)是 Ubuntu、Debian 等系统默认使用的 MAC 模块,基于路径控制,配置比 SELinux 更加简单。
1. AppArmor 状态管理
bash
aa-status # 查看状态
sudo systemctl status apparmor2. 配置文件路径
AppArmor 的配置文件一般位于:
txt
/etc/apparmor.d/每个程序有对应的策略文件,例如:
txt
/etc/apparmor.d/usr.sbin.nginx3. 模式管理
- enforce:启用强制控制
- complain:仅记录违规但不阻止
切换模式:
bash
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx
sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx4. 管理工具
bash
aa-logprof # 分析日志,建议新策略
aa-genprof # 生成配置文件三、SELinux 与 AppArmor 的对比
| 特性 | SELinux | AppArmor |
|---|---|---|
| 默认系统 | Red Hat, CentOS, Fedora | Ubuntu, Debian |
| 控制粒度 | 基于标签,精细控制 | 基于路径,配置简单 |
| 配置复杂度 | 较复杂,学习曲线陡峭 | 较易入门 |
| 安全性 | 更高,可部署强策略 | 足够好,适合快速配置 |
| 管理工具 | setools、semanage 等 | apparmor-utils |
四、建议与实践
- 企业服务器建议使用 SELinux,提供强控制策略
- 中小型环境或桌面用户可选用 AppArmor,配置更直观
- 配置前先切换到“宽容模式”(Permissive / complain),观察并修复错误后再启用强制模式
- 配合
auditd或journalctl分析日志,及时修正被拒访问记录
SELinux 与 AppArmor 是构建安全、受控 Linux 系统的重要工具,合理配置能有效减少潜在攻击面,提升系统整体防护能力。
