首页主机资讯SELinux如何保护Linux系统免受攻击

SELinux如何保护Linux系统免受攻击

时间2025-12-04 21:36:04发布访客分类主机资讯浏览753
导读:SELinux 的防护机制概览 SELinux 是 Linux 内核中的强制访问控制(MAC)安全模块,由NSA与社区共同开发,作为传统自主访问控制(DAC)的有力补充。它为每个进程与资源打上安全上下文,以域-类型模型(domain-typ...

SELinux 的防护机制概览 SELinux 是 Linux 内核中的强制访问控制(MAC)安全模块,由NSA与社区共同开发,作为传统自主访问控制(DAC)的有力补充。它为每个进程与资源打上安全上下文,以域-类型模型(domain-type)和策略规则严格控制“谁(主体)能对什么(客体)做什么”。即使进程以root身份运行,只要不在策略允许范围内,也会被拒绝,从而将受损进程的影响限制在最小范围。常见发行版如 Fedora、RHEL、CentOS、Debian 均内置并支持 SELinux。

核心防护机制

  • 强制访问控制与最小权限:以策略为核心的“白名单”机制,默认拒绝一切未显式允许的操作,遵循最小权限原则,显著降低被攻破后的横向移动与提权风险。
  • 域-类型与类型强制(TE):进程运行在受限的域(domain),文件、目录、端口等资源拥有类型(type);策略以 allow 规则精确描述“域对类型”的访问向量(读、写、创建、绑定等),例如 Web 服务进程 httpd_t 只能读取标记为 httpd_sys_content_t 的内容、绑定 http_port_t(如 80/TCP) 等,越权即被拒绝。
  • 基于角色的访问控制(RBAC):将用户映射到角色(role),再由角色授权到域,实现职责分离与权限最小化;即便root用户,不在相应角色中也难以执行管理域操作。
  • 进程域迁移与入口点控制:通过domain_auto_trans 等机制,确保从特定可执行文件(入口点)启动时自动切换到受限域,避免权限继承滥用。
  • 多策略与多级别支持:除常见的targeted(重点保护网络服务)策略外,还支持更严格的 strict/MLS 策略,可按场景提升隔离强度。

典型攻击场景下的拦截示例

  • Web 服务被入侵但难以越权:即便 httpd 被控制,因运行在 httpd_t,默认不能写入 /var/www/html(内容类型通常为只读的 httpd_sys_content_t),也不能随意连接数据库或绑定非常规端口,从而将破坏面限制在 Web 内容层面。
  • 端口与协议滥用受限:策略仅允许 httpd_t 绑定 http_port_t(80/443 等),尝试绑定 22/TCP 或自定义端口会被拒绝;同理,数据库端口访问需显式策略或布尔值放行。
  • 本地提权与横向移动受阻:非授权域无法读取 shadow_t(密码文件)、访问敏感系统目录或执行特权操作;DAC 被绕过时,MAC 仍可提供第二道屏障。

运维与加固要点

  • 确认与切换模式:使用 sestatus / getenforce 查看状态,setenforce 1/0Enforcing/Permissive 间临时切换;永久配置编辑 /etc/selinux/config(SELINUX=enforcing|permissive|disabled;SELINUXTYPE=targeted)。上线前可在 Permissive 观察,再切回 Enforcing
  • 管理安全上下文与持久化:用 ls -Z / ps -eZ 查看上下文;用 semanage fcontext 定义持久化规则,restorecon -R 应用;避免长期使用 chcon(重启或 relabel 后可能失效)。
  • 细粒度策略调优:通过 getsebool -a 查看布尔值,按需开关功能(如 httpd_can_network_connect_db),优先以最小变更达成兼容;必要时用 audit2allow 生成策略模块并审查后再装载,严禁“一键放行”。
  • 容器与挂载:在 Docker/Podman 中使用卷挂载时配合 :Z / :z 处理 SELinux 标签,避免容器进程越权访问宿主机资源。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: SELinux如何保护Linux系统免受攻击
本文地址: https://pptw.com/jishu/763968.html
SELinux如何限制Linux用户权限 ubuntu分区注意事项

游客 回复需填写必要信息