SELinux系列专题(一):SELinux是什么?
SELinux的基本概念
SELinux(Security-Enhanced Linux)是一种基于Linux内核的安全机制,由美国国家安全局(NSA)主导开发。它通过强制访问控制(MAC)机制为系统提供更细粒度的安全策略,与传统Linux的自主访问控制(DAC)形成互补。SELinux的核心目标是限制进程和用户的权限,减少潜在攻击面。
SELinux通过为每个进程、文件和用户分配安全上下文(Security Context),定义严格的访问规则。即使某个进程被入侵,其操作也会被限制在最小权限范围内,从而避免系统级的安全风险。
SELinux的三种工作模式
SELinux支持三种运行模式,可通过getenforce命令查看当前状态:
- Enforcing模式:完全启用SELinux,强制执行所有安全策略并记录违规行为。
- Permissive模式:仅记录违规行为而不阻止操作,通常用于调试和策略开发。
- Disabled模式:完全关闭SELinux,系统回退到传统DAC机制。
配置模式需修改/etc/selinux/config文件中的SELINUX参数,重启后生效。
SELinux的核心组件
-
安全上下文(Security Context)
每个对象(文件、进程等)都有唯一的安全标签,格式为:user:role:type:level。例如:ls -Z /etc/passwd输出可能显示:
system_u:object_r:passwd_file_t:s0 -
策略(Policy)
SELinux策略定义主体(如进程)如何访问客体(如文件)。主流策略类型包括:- Targeted:仅保护关键服务(默认)。
- MLS(Multi-Level Security):多级安全策略,适用于军事级场景。
-
策略语言与工具
使用audit2allow可将审计日志转换为策略模块,semanage管理策略规则。例如允许Apache访问非默认目录:semanage fcontext -a -t httpd_sys_content_t "/custom/web(/.*)?" restorecon -Rv /custom/web
SELinux的典型应用场景
-
Web服务器防护
即使Apache进程被入侵,SELinux可阻止攻击者读取/etc/shadow等敏感文件。 -
容器安全
在OpenShift等平台中,SELinux隔离容器进程,防止逃逸攻击。 -
多用户环境
通过RBAC(基于角色的访问控制)限制普通用户的操作范围。
SELinux的常见问题与调试
-
权限拒绝处理
查看审计日志定位问题:ausearch -m avc -ts recent临时解决方案(生产环境慎用):
setenforce 0 -
策略模块管理
安装新模块:semodule -i mypolicy.pp列出已加载模块:
semodule -l
SELinux的性能影响
SELinux会增加一定的系统开销,主要体现在:
- 内核安全检查的频率
- 策略规则的复杂度
现代硬件通常可忽略此开销,但高并发场景建议测试性能损耗。
总结
SELinux为Linux系统提供了超越传统权限模型的安全层,通过强制隔离和最小权限原则有效缓解零日漏洞风险。掌握其核心机制和工具链,是构建高安全性Linux系统的关键步骤。后续专题将深入解析策略编写、故障排查等进阶内容。
1515

被折叠的 条评论
为什么被折叠?



