Skip to content

《eBPF 云原生安全:原理与实践》书中示例程序的完整源代码

License

Notifications You must be signed in to change notification settings

mozillazg/cloud-native-security-with-ebpf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

f8e08d5 · Oct 20, 2024

History

55 Commits
Mar 15, 2024
Aug 31, 2024
Aug 31, 2024
Aug 31, 2024
Aug 31, 2024
Sep 8, 2024
Aug 31, 2024
Sep 8, 2024
Aug 11, 2024
Jun 12, 2023
Mar 12, 2023
Mar 10, 2024
Oct 20, 2024
Oct 20, 2024
Mar 15, 2024
Aug 11, 2024
Aug 31, 2024
Sep 7, 2024
Sep 7, 2024

Repository files navigation

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

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

About

《eBPF 云原生安全:原理与实践》书中示例程序的完整源代码

Topics

Resources

License

Stars

Watchers

Forks