Linux SELinux如何防止越权访问
导读:SELinux防止越权访问的原理与关键机制 强制访问控制 MAC 叠加在 DAC 之上:即便进程以 root 身份运行或被赋予传统的 rwx 权限,仍受 SELinux 策略约束,形成“默认拒绝、显式允许”的安全态势。 类型强制 TE 是...
SELinux防止越权访问的原理与关键机制
- 强制访问控制 MAC 叠加在 DAC 之上:即便进程以 root 身份运行或被赋予传统的 rwx 权限,仍受 SELinux 策略约束,形成“默认拒绝、显式允许”的安全态势。
- 类型强制 TE 是核心模型:将进程标记为域(domain),将资源标记为类型(type),策略以 allow 规则精确描述“哪个域对哪类客体在何种对象类别上允许何种操作”,不匹配即拒绝。
- 最小权限原则:进程仅被赋予完成其功能所必需的最小权限集合,被攻破后也只能在受限域内活动,显著降低横向移动与提权风险。
- 细粒度客体覆盖:除文件/目录外,还可对端口、消息、网络接口、文件描述符等客体实施访问控制。
运行机制与访问控制流程
- 每个主体(进程)与客体(文件/目录/端口等)都带有安全上下文,常见形式为 user:role:type:level,其中 type 在 TE 模型中起决定性作用。
- 当进程访问资源时,内核的 SELinux 模块依据策略进行匹配:若策略中存在匹配的 allow 规则则放行;否则拒绝,并记录 AVC(Access Vector Cache) 拒绝日志(通常位于 /var/log/audit/audit.log)。
- 通过这种“主体域 × 客体类型 × 操作”的判定链,SELinux 实现对敏感资源的精细化隔离与越权拦截。
落地配置与运维步骤
- 运行模式管理
- 查看与切换:使用 getenforce/setenforce 0|1 查看/临时切换;在 /etc/selinux/config 中设置 SELINUX=enforcing|permissive|disabled 作为持久化配置(重启生效)。生产建议长期保持 enforcing。
- 上下文查看与修正
- 查看标签:ls -Z(文件)、ps -Z(进程)。
- 修复标签:使用 restorecon -Rv /path 按策略默认规则恢复;对自定义路径用 semanage fcontext -a -t 类型 “/path(/.*)?” 新增持久化映射,再执行 restorecon 生效。
- 拒绝排查与策略优化
- 定位 AVC:使用 ausearch -m avc -ts recent 或检索 /var/log/audit/audit.log 中的 denied 记录;必要时用 sealert -l * 获取可读化分析与修复建议。
- 精准放行:确认是合理需求后,可用 audit2allow -M 模块名 生成自定义策略模块,再用 semodule -i 模块名.pp 加载,避免粗暴地改为 permissive 或 disabled。
典型场景示例
- Web 服务读取非标准目录
- 现象:Apache 访问 /var/www/custom_site 返回 403,但文件系统权限正确;将 SELinux 临时切到 permissive 后恢复,判定为 SELinux 拦截。
- 处置:
- 查看与确认标签:
- ls -ldZ /var/www/custom_site(可能显示为 user_home_t 等非 HTTPD 类型)
- ausearch -m avc -ts recent(可见 scontext=httpd_t,tcontext=user_home_t 等关键信息)
- 正确做法(保持 enforcing):
- semanage fcontext -a -t httpd_sys_content_t “/var/www/custom_site(/.*)?”
- restorecon -Rv /var/www/custom_site
- 如涉及用户家目录读取,可评估启用相应布尔值(如 httpd_enable_homedirs),但更推荐为服务使用专用目录与类型。
- 查看与确认标签:
最佳实践与风险提示
- 始终保持 SELinux 为 enforcing,仅在排障时短时切到 permissive;严禁长期 disabled。
- 优先通过“正确的安全上下文 + 最小权限布尔值”解决问题,其次再考虑生成自定义策略模块;任何策略变更都应评估对安全边界的影响。
- 对关键目录、端口与进程建立标签与基线清单,变更前后用 ausearch/sealert 复核 AVC,确保未引入越权路径。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux SELinux如何防止越权访问
本文地址: https://pptw.com/jishu/788772.html
