Skip to content

Latest commit

 

History

History

cloud-native-security-with-ebpf

eBPF 云原生安全:原理与实践

《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 本章小结
    • 第 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 本章小结
  • 第二部分云原生安全项目详解
    • 第 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 本章小结
    • 第 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 本章小结
  • 第三部分 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 本章小结
    • 第 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 本章小结
    • 第 10 章使用 eBPF 技术审计和拦截权限提升操作
      • 10.1 审计权限提升操作
        • 10.1.1 基于 eBPF LSM 实现
        • 10.1.2 基于 eBPF Kprobe 实现
      • 10.2 拦截权限提升操作
      • 10.3 本章小结
    • 第 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 本章小结
    • 第 12 章为事件关联上下文信息
      • 12.1 进程信息
        • 12.1.1 进程操作事件
        • 12.1.2 网络事件
      • 12.2 容器和 Pod 信息
        • 12.2.1 进程操作事件
        • 12.2.2 网络事件
      • 12.3 本章小结
  • 第四部分 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 本章小结

开发环境

开发环境如下:

  • 系统: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

源码目录

章节 源代码
第8章 使用 eBPF 技术审计和拦截命令执行操作 chapter08
8.1 审计命令执行操作
8.1.1 chapter08/kprobe
8.1.2 chapter08/fentry
8.1.3 chapter08/ksyscall
8.1.4 chapter08/tracepoint
8.2 拦截命令执行操作
8.2.1 chapter08/bpf_send_signal
8.2.2 chapter08/bpf_override_return
第9章 使用 eBPF 技术审计和拦截文件读写操作 chapter09
9.1 审计文件读写操作
9.1.1 chapter09/kprobe
9.1.2 chapter09/tracepoint
9.1.3 chapter09/lsm
9.2 拦截文件读写操作
9.2.1 chapter09/bpf_send_signal
9.2.2 chapter09/bpf_override_return
9.2.3 chapter09/lsm-block
第10章 使用 eBPF 技术审计和拦截权限提升操作 chapter10
10.1 审计权限提升操作
10.1.1 chapter10/lsm-file_open, chapter10/lsm-bprm_check_security
10.1.2 chapter10/kprobe
10.2 拦截权限提升操作
10.2 chapter10/lsm-block
第11章 使用 eBPF 技术审计和拦截网络流量 chapter11
11.1 审计网络流量
11.1.1 chapter11/socket-filter, chapter11/socket-filter-userspace-parse
11.1.2 chapter11/tc, chapter11/tc-userspace-parse
11.1.3 chapter11/xdp-userspace-parse
11.1.4 chapter11/kprobe
11.2 拦截网络流量
11.2.1 chapter11/tc-block
11.2.2 chapter11/xdp-block
第12章 为事件关联上下文信息 chapter12
12.1 进程信息
12.1.1 chapter12/process-context
12.1.2 chapter12/net-context
第13章 使用 eBPF 技术审计复杂的攻击手段 chapter13
13.1 审计使用无文件攻击技术实现的命令执行操作
13.1 chapter13/memfd-create, chapter13/lsm-bprm_creds_from_file
13.2 审计反弹 Shell 操作
13.2 chapter13/reverse-shell
第14章 使用 eBPF 技术探测恶意 eBPF 程序 chapter14
14.1 恶意 eBPF 程序
14.1.1 chapter14/read-file, chapter14/add-sudo, chapter14/execve-hijack, chapter14/hide-pid
14.1.2 chapter14/pipe-hijack, chapter14/modify-incoming-traffic, chapter14/hide-incoming-traffic, chapter14/hijack-tcp-to-send-data
14.3 探测和审计恶意 eBPF 程序
14.3.2 chapter14/inspect-ebpf-helpers
14.3.3 chapter14/check-helper-call