eBPF入门系列:工具及重点项目
工具
bpftool
bpftool安装
依赖包安装
ubuntu 20.04 linux 5.4.169
# apt install pkg-config libelf-dev zlib1g-devubuntu 21.10 linux 5.13.0
# sudo apt install linux-tools-common linux-tools-5.13.0-51-generic linux-cloud-tools-5.13.0-51-genericUbuntu 22.04
# sudo apt install pkgconf build-essential libelf-dev linux-tools-common linux-tools-`uname -r` linux-tools-genericbpftool 安装
# git clone --recurse-submodules https://github.com/libbpf/bpftool.git
# cd bpftool/src
# make && make V=1 install
# bpftool version
bpftool v7.0.0
using libbpf v1.0
features: libbpf_strictbpftool 常见命令
其他命令
加载程序到内核
检查加载到内核的程序
挂载到内核事件
XDP类型
查看 trace 输出
如果两种trace输出都没有内容,则需要检查 /sys/kernel/debug/tracing/tracing_on 配置是否开启,1表示开启 trace。
Map常见操作
卸载程序
删除内核加载的程序
eBPF 项目
入门必看,这个项目下有各种场景的ebpf小工具,该项目刚开始都是使用 Python 调用 eBPF 程序实现的工具,后面又用 libbpf 重写了之前的工具。
BCC依赖安装
https://github.com/iovisor/bcc/blob/master/INSTALL.md#ubuntu---source
Install and compile BCC
编译libbpf-tools
常见报错:
1、编译过程出现以下报错:
解决方式:
通过脚本语言写eBPF程序,方便写一些简单的demo程序
安装
ubuntu 20.04 linux 5.4.169
ubuntu 21.10/22.04
bpftrace常见命令
使用bpftrace跟踪短时进程
eCapture
eCapture 是一款基于 eBPF 技术实现的用户态数据捕获工具,其主要功能包括:
不需要 CA 证书,即可捕获 HTTPS/TLS 通信数据的明文。
在 bash 审计场景,可以捕获 bash 命令。
数据库审计场景,可以捕获 mysqld/mariadDB的SQL 查询。
Cilium
Cilium 是一个基于 eBPF 的高性能容器网络方案。其主要功能特性包括:
安全上,支持 L3/L4/L7 安全策略,这些策略按照使用方法又可以分为:
基于身份的安全策略。
基于 CIDR 的安全策略。
基于标签的安全策略。
网络上,支持三层平面网络(flat layer 3 network),如:
覆盖网络(Overlay),包括 VXLAN 和 Geneve 等。
Linux 路由网络,包括原生的 Linux 路由和云服务商的高级网络路由等。
提供基于 BPF 的负载均衡。
提供便利的监控和排错能力。
eBPF Exporter
eBPF Exporter 是一个将自定义 eBPF 跟踪数据导出到 Prometheus 的工具,它实现了 Prometheus 获取数据的 API,Prometheus 可以通过这些 API 主动拉取到自定义的 eBPF 跟踪数据。
libbpf-bootstrap
Last updated