一、云服务器安全防护的重要性
在云计算时代,Linux服务器安全配置已成为每个运维人员的必修课。根据2023年云安全报告显示,未正确配置安全模块的服务器遭遇攻击的概率要高出47%。SELinux(Security-Enhanced Linux)和AppArmor作为Linux系统的两大强制访问控制(MAC)系统,能够有效限制进程权限,防止恶意程序扩散。
SELinux vs AppArmor核心对比:
- SELinux:基于标签的强制访问控制系统,主要应用于RHEL/CentOS
- AppArmor:基于路径的访问控制系统,常见于Debian/Ubuntu
二、SELinux实战配置详解
2.1 基础状态管理
# 查看当前状态
sestatus
# 临时切换模式
setenforce 0 # 宽容模式
setenforce 1 # 强制模式
# 永久修改配置
vi /etc/selinux/config
SELINUX=enforcing
2.2 策略规则定制
通过布尔值调整策略:
# 列出所有布尔值
getsebool -a
# 允许HTTPD访问用户目录
setsebool -P httpd_enable_homedirs on
专家建议: 生产环境建议保持enforcing模式,通过audit2allow工具分析并添加自定义规则:
grep AVC /var/log/audit/audit.log | audit2allow -M mypolicy
semodule -i mypolicy.pp
三、AppArmor深度配置指南
3.1 配置文件管理
# 查看当前配置
aa-status
# 禁用特定配置
sudo aa-disable /usr/sbin/mysqld
# 开发新模式
aa-genprof /path/to/application
3.2 自定义策略示例
典型的Nginx配置策略:
# /etc/apparmor.d/usr.sbin.nginx
/usr/sbin/nginx {
#include
# 静态文件访问
/var/www/html/** r,
# 日志写入
/var/log/nginx/* w,
# 禁止敏感操作
deny /etc/shadow rwkx,
}
四、云环境最佳实践方案
- 分阶段启用策略:先在permissive/learning模式运行2周
- 结合容器安全:Kubernetes环境下需特别处理容器引擎配置
- 监控与审计:定期检查/var/log/audit日志
- 自动化测试:将策略测试纳入CI/CD流程
| 安全级别 | SELinux配置 | AppArmor配置 |
|---|---|---|
| 基础防护 | targeted策略 | default配置 |
| 中等防护 | 自定义布尔值 | 应用专用配置 |
| 高级防护 | MLS策略 | 全路径限制 |
五、常见问题排查技巧
Q:SELinux导致Nginx无法访问网站文件?
A:使用chcon -R -t httpd_sys_content_t /path/to/webroot修正文件标签
Q:如何临时绕过AppArmor限制?
A:通过aa-complain /path/to/binary进入投诉模式
日志分析黄金命令:
# SELinux
ausearch -m AVC -ts today
# AppArmor
grep 'apparmor="DENIED"' /var/log/syslog
