SELinux如何防止Linux漏洞
导读:SELinux 的防护机理概览 SELinux 通过在内核实现强制访问控制 MAC,给系统中的主体(进程、用户)与客体(文件、目录、套接字、端口等)打上安全上下文,并依据策略实施“默认拒绝”的最小权限原则:只有策略明确允许的操作才会放行。与...
SELinux 的防护机理概览 SELinux 通过在内核实现强制访问控制 MAC,给系统中的主体(进程、用户)与客体(文件、目录、套接字、端口等)打上安全上下文,并依据策略实施“默认拒绝”的最小权限原则:只有策略明确允许的操作才会放行。与传统 **DAC(rwx、属主/属组)**不同,即便进程以 root 身份运行,只要策略未授权相应访问,也会被拒绝。访问控制决策流程为:先进行 DAC 检查,再进行 SELinux MAC 检查,两者都通过才放行。SELinux 支持 Type Enforcement(TE) 作为核心模型,并可选 MLS(多级安全) 等策略形态。
它如何在漏洞利用链上阻断攻击
- 进程隔离与最小权限:服务被放入受限域(如 httpd_t),只能按策略对特定类型对象执行有限操作;即便存在代码缺陷或被控制,也难以越权访问无关资源。
- 路径遍历与越权读取:以 Apache 目录遍历漏洞为例,攻击者构造 %2F… 试图读取 /home/niki/secret.txt。当系统处于 Enforcing 模式时,httpd_t 对 home_root_t 类型没有读取权限,访问被拒绝并记录 AVC 拒绝日志;而在 Permissive/Disabled 下可被读取。这说明 SELinux 能将漏洞影响限制在“不可达”的资源范围。
- 权限提升抑制:即便出现NULL 指针解引用等缺陷导致异常控制流,若策略未授予相应能力(如特定文件、进程、能力类),攻击者也难以借此获得持久化或横向移动所需的高危权限。
- 细粒度资源约束:策略可区分对文件、目录、设备、套接字、进程、Binder等不同对象类的权限,避免“一权在手、天下皆可达”的问题。
防护边界与注意事项
- SELinux 并非“漏洞免疫”:它无法修复应用逻辑缺陷,但能在多数场景下显著降低权限提升、信息泄露、横向移动的风险,属于“缓解而非根除”。例如路径遍历被阻断,但并不意味着应用不存在漏洞。
- 策略需与业务匹配:过于宽松的策略会削弱防护,过于严格会导致应用异常;应通过审计日志与工具持续校准,而非简单禁用。
快速上手与运维要点
- 检查与切换模式
- 查看状态:getenforce、sestatus
- 临时切换:setenforce 1(Enforcing)/ setenforce 0(Permissive)
- 永久配置:编辑 /etc/selinux/config 的 SELINUX=enforcing|permissive|disabled
- 上下文查看与修复
- 查看:ls -Z、ps -eZ
- 临时修复:chcon -t httpd_sys_content_t /data/web
- 永久修复:semanage fcontext -a -t httpd_sys_content_t “/data/web(/.*)?” 后执行 restorecon -Rv /data/web
- 策略与端口
- 管理模块:semodule -l、semodule -i mypolicy.pp
- 端口标签:如 semanage port -a -t http_port_t -p tcp 8080
- 审计与排障
- 查看拒绝:ausearch -m avc -ts recent、dmesg | grep avc
- 辅助生成规则:audit2allow -a、audit2allow -a -M mypolicy 再 semodule -i mypolicy.pp
- 常用策略类型
- targeted:仅保护关键网络服务,易用性好
- mls:多级安全,适合高保密场景
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: SELinux如何防止Linux漏洞
本文地址: https://pptw.com/jishu/777252.html
