eBPF安全检测:零基础玩转 eBPF 安全检测

eBPF 安全检测到底能做什么?

eBPF(扩展的伯克利数据包过滤器)是 Linux 内核的一项强大技术,它允许你安全地插入自定义代码来监控内核事件,而无需修改内核或加载模块。
在安全检测领域,eBPF 常用于实时检测异常进程启动、敏感文件访问、网络连接等行为。
本文不会讲枯燥的理论,而是直接带你动手操作:从零开始安装 eBPF 工具,编写并执行一个实际的检测脚本,最后验证效果。

动手前的准备:确认环境与安装工具

在开始 eBPF 安全检测实操之前,确保你的 Linux 系统满足以下条件:

  • 内核版本:建议 4.4 及以上(推荐 5.0+ 以获得更好支持)。
  • 架构:x86_64 或 ARM64。
  • 权限:需要 root 权限或 sudo 访问。

以 Ubuntu 20.04+ 为例,安装最常用的 eBPF 工具集 bccbpftrace

sudo apt update
sudo apt install -y bpfcc-tools linux-headers-$(uname -r)
sudo apt install -y bpftrace

安装完成后,可以用以下命令快速验证 bpftrace 是否正常工作:

sudo bpftrace -e 'BEGIN { printf("hello eBPF\n"); exit(); }'

若看到输出 hello eBPF,说明环境就绪。

核心玩法:编写一个进程启动监控脚本

安全检测最常用的场景之一是监控系统中有哪些新进程被创建。
下面用 bpftrace 写一个脚本,实时打印新进程的进程名、PID 和命令行参数。
创建一个文件 proc_monitor.bt

#!/usr/bin/bpftrace

tracepoint:syscalls:sys_enter_execve
{
    printf("新进程启动: PID=%d, 命令=%s, 参数=%s\n", pid, comm, str(args->argv[0]));
}

保存后赋予执行权限:

chmod +x proc_monitor.bt

然后以 root 身份运行:

sudo ./proc_monitor.bt

此时控制台会一直等待新进程产生。
你可以另开一个终端窗口随便执行一条命令,比如 lsecho test,第一个终端就会立即打印出类似的信息:

新进程启动: PID=12345, 命令=ls, 参数=ls

这个脚本会监控所有通过 execve 系统调用启动的进程,非常适合检测恶意程序或未知脚本的突然运行。

如何验证检测是否生效?

一种简单可靠的验证方式:自己制造一个安全的测试事件

在运行监控脚本的同时,执行一条无害且特征明显的命令,例如 touch /tmp/eBPF_test
观察监控终端是否输出对应记录。
如果出现类似:

新进程启动: PID=12346, 命令=touch, 参数=touch /tmp/eBPF_test

则证明你的 eBPF 安全检测脚本工作正常。

你也可以扩展脚本,增加监控特定文件路径(如 /etc/shadow)的读取尝试,或者监控短时间内的高频进程创建(可能有挖矿行为)。

避坑指南:新手最容易踩的 3 个问题

  1. 权限不足:eBPF 程序需要内核特权,务必使用 sudo 运行 bpftrace 或 bcc 工具,否则会报 Operation not permitted 错误。
  2. 内核未开启 eBPF 支持:少数定制内核可能没有编译 CONFIG_BPF 或 CONFIG_BPF_SYSCALL,检查方法:
   cat /proc/config.gz | gunzip | grep CONFIG_BPF

如果没有输出或值为 n,需要重新编译内核(推荐直接使用标准发行版内核)。

  1. bpftrace 版本过旧:部分旧版本 bpftrace 不支持某些 tracepoint;建议使用 bpftrace --version 查看,版本至少为 0.9 以上。升级可用 sudo apt upgrade bpftrace

常见问题 FAQ

问:我能监控网络流量进行安全检测吗?
可以。eBPF 同样支持 XDP(eXpress Data Path)和套接字过滤,但涉及更复杂的编程。初学者建议先用 execve 这类系统调用入门。

问:监控脚本会不会严重影响系统性能?
eBPF 数据结构设计为低开销,正常监控下 CPU 占用极低。但如果挂载大量复杂逻辑,仍需做压力测试。建议按需精细化监控,而非全量开启。

问:生产环境如何持久化运行 eBPF 脚本?
可以将脚本写成 systemd 服务或用 nohup 方式后台运行。注意日志输出重定向到文件,避免终端关闭后丢失。

---

如果你正在处理 eBPF 安全检测,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
通过一次实操,你就能理解 eBPF 在安全监控中的强大之处,并具备进一步深度定制的信心。

分享到:
上一篇
SkyWalking链路追踪:从零搭建
下一篇
Linux内核漏洞修复新手教程:从检测到补丁安装完整步骤
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意