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或修改镜像。
1.3 课程目标与学习路径
本课程旨在培养学员具备以下核心能力:
- 理解容器镜像异常的攻击面:从镜像构建、分发到运行时的全链路风险模型。
- 掌握eBPF数据采集技术:编写eBPF程序捕获容器进程的文件、网络、进程行为。
- 构建异常定位流水线:将eBPF事件与容器元数据关联,实现镜像层级的异常溯源。
- 实战演练:在真实场景中定位“合法镜像 + 恶意行为”的隐蔽攻击。
| 模块 | 核心内容 | 实践产出 |
|---|---|---|
| 基础篇(第1-5章) | 容器镜像安全模型、eBPF基础、系统调用捕获 | eBPF探针采集容器文件操作事件 |
| 进阶篇(第6-15章) | 容器元数据关联、异常检测算法、镜像层溯源 | 异常定位引擎原型 |
| 实战篇(第16-25章) | 真实攻击场景复现、告警聚合、性能优化 | 端到端异常定位系统 |
| 扩展篇(第26-30章) | 多集群部署、与CIS基准集成、生产级加固 | 生产环境适配方案 |
学习建议:建议学员具备基本的Linux内核概念(进程、文件系统、网络栈)和容器操作经验。每章配套的代码示例可在课程仓库中直接运行,推荐使用 Ubuntu 22.04 + Linux 5.15+ 内核环境。
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 能力。建议在虚拟机或开发集群中操作,避免在生产环境直接运行实验代码。