1. 课程导论:容器镜像安全现状、eBPF技术简介、课程目标与学习路径

1.1 容器镜像安全现状:从供应链到运行时

容器镜像作为云原生应用的交付单元,其安全性直接决定了生产环境的整体风险水位。然而,当前容器镜像安全面临三大核心挑战:

  • 供应链污染:基础镜像被植入后门、依赖库存在已知CVE、第三方组件版本锁定困难。
  • 配置漂移:镜像构建时的安全基线(如只读根文件系统、非root用户)在运行时被特权容器或挂载覆盖。
  • 运行时逃逸:攻击者利用内核漏洞或错误配置,从容器内部突破隔离,获取宿主机权限。
安全维度 传统检测手段 局限性
镜像扫描 静态CVE数据库匹配 无法检测0-day、配置漂移、运行时行为异常
准入控制 策略引擎(OPA/Kyverno) 仅拦截构建/部署阶段,不覆盖运行态
运行时监控 Seccomp/AppArmor 静态配置 规则固化,无法自适应异常行为
关键洞察:超过 60% 的容器安全事件发生在镜像运行后的前 5 分钟内。静态扫描无法捕获“合法镜像 + 恶意行为”的组合攻击。

1.2 eBPF技术简介:内核可编程观测能力

eBPF(extended Berkeley Packet Filter)是一项允许用户在Linux内核中安全运行沙箱化程序的技术。它无需修改内核源码或加载内核模块,即可动态注入观测、过滤、甚至安全策略逻辑。

eBPF在容器镜像异常定位中的核心价值体现在三个层面:

  • 全量系统调用捕获:通过 tracepoint/syscalls 或 kprobe 拦截所有容器进程的系统调用,包括文件操作、网络连接、进程创建。
  • 上下文关联:利用 bpf_get_current_cgroup_id() 和容器元数据映射,将内核事件精确关联到容器ID、镜像层、Pod标签。
  • 零侵入数据采集:eBPF程序运行在内核态,对用户态容器进程完全透明,无需注入Agent或修改镜像。
eBPF 数据驱动容器镜像异常定位架构 eBPF 数据驱动容器镜像异常定位架构 容器运行时层 Docker / containerd / CRI-O · 容器进程 · 镜像层 · 挂载命名空间 eBPF 探针层(内核态) tracepoint/syscalls · kprobe · uprobe · cgroup 关联 文件操作 · 网络连接 · 进程创建 · 特权系统调用 异常定位引擎(用户态) 行为基线 · 异常检测 · 镜像层溯源 · 告警聚合 核心优势 • 零侵入:无需修改容器镜像或重启容器 • 全量覆盖:捕获所有系统调用,无盲区 • 上下文精确:通过 cgroup id 精确关联到容器和镜像层

1.3 课程目标与学习路径

本课程旨在培养学员具备以下核心能力:

  1. 理解容器镜像异常的攻击面:从镜像构建、分发到运行时的全链路风险模型。
  2. 掌握eBPF数据采集技术:编写eBPF程序捕获容器进程的文件、网络、进程行为。
  3. 构建异常定位流水线:将eBPF事件与容器元数据关联,实现镜像层级的异常溯源。
  4. 实战演练:在真实场景中定位“合法镜像 + 恶意行为”的隐蔽攻击。
模块 核心内容 实践产出
基础篇(第1-5章) 容器镜像安全模型、eBPF基础、系统调用捕获 eBPF探针采集容器文件操作事件
进阶篇(第6-15章) 容器元数据关联、异常检测算法、镜像层溯源 异常定位引擎原型
实战篇(第16-25章) 真实攻击场景复现、告警聚合、性能优化 端到端异常定位系统
扩展篇(第26-30章) 多集群部署、与CIS基准集成、生产级加固 生产环境适配方案
学习建议:建议学员具备基本的Linux内核概念(进程、文件系统、网络栈)和容器操作经验。每章配套的代码示例可在课程仓库中直接运行,推荐使用 Ubuntu 22.04 + Linux 5.15+ 内核环境。
课程学习路径与知识图谱 课程学习路径与知识图谱 基础篇 容器安全模型 eBPF 基础 进阶篇 元数据关联 异常检测算法 实战篇 攻击场景复现 告警聚合 扩展篇 多集群部署 生产级加固 关键技能标签: eBPF 编程 · 容器运行时接口 · 系统调用分析 · 行为基线 · 镜像层溯源 · 告警降噪 · 性能优化 课程最终产出 eBPF 数据驱动容器镜像异常定位系统 支持:实时捕获 → 上下文关联 → 异常检测 → 镜像层溯源 → 告警输出 覆盖:文件篡改 · 网络后门 · 进程逃逸 · 配置漂移 部署:单节点原型 → 多集群生产方案

1.4 课程环境准备

为保障实验顺利进行,请提前准备以下环境:

  • 操作系统:Ubuntu 22.04 LTS 或 CentOS 8+,内核版本 ≥ 5.10(推荐 5.15+)
  • eBPF 工具链:clang ≥ 12、llvm、libbpf-dev、bpftool
  • 容器运行时:Docker 24+ 或 containerd 1.6+
  • 编程语言:C(eBPF 内核态)、Python 3.8+(用户态数据处理)
注意:eBPF 程序需要 root 权限或 CAP_BPF 能力。建议在虚拟机或开发集群中操作,避免在生产环境直接运行实验代码。