SELinux(Security-Enhanced Linux)是 Linux 的一个强制访问控制(MAC)安全子系统,由美国国家安全局(NSA)主导开发,主要目的是通过更细粒度的权限控制来增强系统安全性。以下是它的核心作用、工作原理和实际应用:
最小权限原则
rwx
权限),用户/进程可能因配置错误获得过高权限。root
运行,也只能访问明确允许的资源(文件、端口等)。防止提权攻击
多层级安全模型
httpd_t
)只能访问标记为 httpd_sys_content_t
的文件。mysqld_t
)无法直接访问用户家目录。三种运行模式
# 查看当前模式
getenforce
# 临时切换模式
setenforce 0 # Permissive
setenforce 1 # Enforcing
策略(Policy)
httpd
, sshd
),默认策略。保护网络服务
/etc/shadow
,因为 Nginx 进程的上下文(nginx_t
)无权访问 shadow_t
类型的文件。控制文件访问
777
,SELinux 类型不匹配也会拒绝访问:
bash
# 查看文件/进程的 SELinux 上下文
ls -Z /var/www/html/index.html
ps -eZ | grep httpd
限制端口绑定
bash
semanage port -a -t mysqld_port_t -p tcp 8080
权限被拒绝?检查日志
audit2why
分析 SELinux 日志:
bash
grep "avc: denied" /var/log/audit/audit.log | audit2why
快速修复工具
restorecon
恢复文件默认标签:
bash
restorecon -Rv /var/www/html
bash
audit2allow -a -M mypolicy && semodule -i mypolicy.pp
Enforcing
并学会调试,而非直接禁用!)SELinux 是 Linux 系统的“安全加固层”,通过强制访问控制减少漏洞影响范围。虽然初期可能需要适应,但掌握其基本操作(查看上下文、分析日志、调整策略)能显著提升系统安全性。对于生产环境,保持 Enforcing
模式并针对性配置策略是最佳实践。