《eBPF 云原生安全:原理与实践》书中示例程序的完整源代码。
书籍目录:
- 前言
- 目录
- 第一部分 eBPF 助力云原生安全
- 第 1 章云原生安全概述
- 1.1 云原生安全的挑战
- 1.1.1 云原生平台基础设施的安全风险
- 1.1.2 DevOps 软件供应链的安全风险
- 1.1.3 云原生应用范式的安全风险
- 1.2 云原生安全的演进
- 1.3 云原生安全的理论基础
- 1.3.1 威胁建模
- 1.3.2 坚守安全准则
- 1.3.3 安全观测和事件响应
- 1.4 云原生安全的方法论
- 1.4.1 CNCF 云原生安全架构
- 1.4.2 云原生应用保护平台
- 1.5 本章小结
- 1.1 云原生安全的挑战
- 第 2 章初识 eBPF
- 2.1 eBPF 历史
- 2.2 eBPF 的关键特性和应用场景
- 2.2.1 Linux 内核
- 2.2.2 eBPF 的关键特性
- 2.2.3 eBPF 的应用场景
- 2.3 eBPF 的架构
- 2.4 本章小结
- 第 3 章 eBPF 技术原理详解
- 3.1 eBPF “Hello World” 程序
- 3.2 eBPF 技术原理
- 3.2.1 eBPF Map 数据结构
- 3.2.2 eBPF 虚拟机
- 3.2.3 eBPF 验证器
- 3.2.4 bpf() 系统调用
- 3.2.5 eBPF 程序和附着类型
- 3.3 eBPF 程序的开发模式
- 3.3.1 BCC 模式
- 3.3.2 CO-RE+ libbpf 模式
- 3.4 本章小结
- 第 4 章 eBPF 技术在云原生安全领域的应用
- 4.1 针对云原生应用的攻击
- 4.2 eBPF 和云原生安全的契合点
- 4.2.1 容器中的基础隔离
- 4.2.2 传统安全架构
- 4.2.3 eBPF 提升云原生应用运行时安全
- 4.2.4 eBPF 伴随云原生应用生命周期
- 4.3 eBPF 云原生安全开源项目
- 4.3.1 Falco
- 4.3.2 Tracee
- 4.3.3 Tetragon
- 4.4 双刃剑
- 4.5 本章小结
- 第 1 章云原生安全概述
- 第二部分云原生安全项目详解
- 第 5 章云原生安全项目 Falco 详解
- 5.1 项目介绍
- 5.1.1 功能
- 5.1.2 使用场景
- 5.2 安装
- 5.2.1 使用包管理工具
- 5.2.2 下载二进制包
- 5.2.3 Kubernetes 环境
- 5.3 使用示例
- 5.3.1 规则引擎
- 5.3.2 告警输出
- 5.3.3 事件源
- 5.4 架构和实现原理
- 5.4.1 架构
- 5.4.2 驱动
- 5.4.3 用户态模块
- 5.5 本章小结
- 5.1 项目介绍
- 第 6 章云原生安全项目 Tracee 详解
- 6.1 项目介绍
- 6.2 安装
- 6.3 使用示例
- 6.3.1 事件追踪
- 6.3.2 制品捕获
- 6.3.3 风险探测
- 6.3.4 外部集成
- 6.4 架构和实现原理
- 6.4.1 架构
- 6.4.2 tracee-ebpf 实现原理
- 6.5 本章小结
- 第 7 章云原生安全项目 Tetragon 详解
- 7.1 项目介绍
- 7.2 安装
- 7.3 使用示例
- 7.3.1 事件观测
- 7.3.2 风险拦截
- 7.4 架构和实现原理
- 7.4.1 架构
- 7.4.2 事件观测
- 7.4.3 风险拦截
- 7.5 本章小结
- 第 5 章云原生安全项目 Falco 详解
- 第三部分 eBPF 安全技术实战
- 第 8 章使用 eBPF 技术审计和拦截命令执行操作
- 8.1 审计命令执行操作
- 8.1.1 基于 eBPF Kprobe 和 Kretprobe 实现
- 8.1.2 基于 eBPF Fentry 和 Fexit 实现
- 8.1.3 基于 eBPF Ksyscall 和 Kretsyscall 实现
- 8.1.4 基于 eBPF Tracepoint 实现
- 8.2 拦截命令执行操作
- 8.2.1 基于 bpf_send_signal 实现
- 8.2.2 基于 bpf_override_return 实现
- 8.3 本章小结
- 8.1 审计命令执行操作
- 第 9 章使用 eBPF 技术审计和拦截文件读写操作
- 9.1 审计文件读写操作
- 9.1.1 基于 eBPF Kprobe 和 Kretprobe 实现
- 9.1.2 基于 eBPF Tracepoint 实现
- 9.1.3 基于 eBPF LSM 实现
- 9.2 拦截文件读写操作
- 9.2.1 基于 bpf_send_signal 实现
- 9.2.2 基于 bpf_override_return 实现
- 9.2.3 基于 eBPF LSM 实现
- 9.3 本章小结
- 9.1 审计文件读写操作
- 第 10 章使用 eBPF 技术审计和拦截权限提升操作
- 10.1 审计权限提升操作
- 10.1.1 基于 eBPF LSM 实现
- 10.1.2 基于 eBPF Kprobe 实现
- 10.2 拦截权限提升操作
- 10.3 本章小结
- 10.1 审计权限提升操作
- 第 11 章使用 eBPF 技术审计和拦截网络流量
- 11.1 审计网络流量
- 11.1.1 基于 eBPF 套接字过滤器实现
- 11.1.2 基于 eBPF TC 实现
- 11.1.3 基于 eBPF XDP 实现
- 11.1.4 基于 Kprobe 实现
- 11.2 拦截网络流量
- 11.2.1 基于 eBPF TC 实现
- 11.2.2 基于 eBPF XDP 实现
- 11.3 本章小结
- 11.1 审计网络流量
- 第 12 章为事件关联上下文信息
- 12.1 进程信息
- 12.1.1 进程操作事件
- 12.1.2 网络事件
- 12.2 容器和 Pod 信息
- 12.2.1 进程操作事件
- 12.2.2 网络事件
- 12.3 本章小结
- 12.1 进程信息
- 第 8 章使用 eBPF 技术审计和拦截命令执行操作
- 第四部分 eBPF 安全进阶
- 第 13 章使用 eBPF 技术审计复杂的攻击手段
- 13.1 审计使用无文件攻击技术实现的命令执行操作
- 13.2 审计反弹 Shell 操作
- 13.3 本章小结
- 第 14 章使用 eBPF 技术探测恶意 eBPF 程序
- 14.1 恶意 eBPF 程序
- 14.1.1 常规程序
- 14.1.2 网络程序
- 14.2 防护恶意 eBPF 程序
- 14.3 探测和审计恶意 eBPF 程序
- 14.3.1 文件分析
- 14.3.2 bpftool
- 14.3.3 内核探测
- 14.4 本章小结
- 14.1 恶意 eBPF 程序
- 第 13 章使用 eBPF 技术审计复杂的攻击手段
开发环境如下:
- 系统:Ubuntu 22.04
- 依赖 (安装和配置方法详见 CI,也可以使用 Vagrant 一键创建开发环境):
- Go >= 1.21
- Clang/LLVM 12
- gcc
- libelf-dev
- zlib1g-dev
- libzstd-dev
- pkgconf
- make
- git
- linux-tools-common linux-tools-generic linux-tools-$(uname -r)
- build-essential