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.logaudit2allow -a 生成新策略模块。文件标签修复
restorecon -Rv /pathchcon -t httpd_content_t /path/file与 Docker 的兼容性
:Z 标志(如 -v /host/path:/container/path:Z)自动重标签。SELinux 是 Linux 系统的“安全防火墙”,通过强制访问控制弥补传统权限模型的不足。正确配置后,它能显著提升系统安全性,尤其适用于面向公网的服务或对隔离性要求高的环境。初次使用建议从 Permissive 模式开始,逐步调试策略后再切换到 Enforcing。