SELinux(Security-Enhanced Linux)是 Linux 系统的强制访问控制(MAC)安全机制,由美国国家安全局(NSA)主导开发,主要解决传统 Linux 自主访问控制(DAC)的权限管理缺陷。以下是它的核心作用、原理和典型场景:
最小权限原则
/etc/shadow
,即使 Apache 以 root 身份运行。防止提权攻击
精细化资源控制
合规性支持
标签机制(Labeling)
user_u:role_r:httpd_t:s0
)。ls -Z
或 ps -Z
可查看标签。策略规则(Policy)
targeted
策略)规定哪些标签的进程可以访问哪些标签的资源。允许 httpd_t 域的进程读取标记为 httpd_content_t 的文件
。强制执行
/var/log/audit/audit.log
)。Web 服务器防护
/home
或数据库文件。数据库隔离
/var/lib/mysql
),无法扫描系统其他文件。容器安全
container_t
域限制)。多用户系统
sudo
也不会破坏系统。setenforce 1|0
或修改 /etc/selinux/config
。权限问题排查
grep "avc:" /var/log/audit/audit.log
audit2allow -a
生成新策略模块。文件标签修复
restorecon -Rv /path
chcon -t httpd_content_t /path/file
与 Docker 的兼容性
:Z
标志(如 -v /host/path:/container/path:Z
)自动重标签。SELinux 是 Linux 系统的“安全防火墙”,通过强制访问控制弥补传统权限模型的不足。正确配置后,它能显著提升系统安全性,尤其适用于面向公网的服务或对隔离性要求高的环境。初次使用建议从 Permissive
模式开始,逐步调试策略后再切换到 Enforcing
。