rock5b上运行tracee监控容器与进程的行为
Tracee 是一个用于 Linux 的运行时安全和取证工具。 它使用 Linux eBPF 技术在运行时跟踪系统和应用程序,并分析收集的事件以检测可疑的行为模式。 Tracee 以 Docker 镜像的形式交付,监控操作系统并根据预定义的行为模式集检测可疑行为。
最新版本的 Tracee 支持 x86_64 与 arm64。于是 rock5b 上试了一下。
1
安装
首先,安装 Docker 并拖 Tracee 镜像到本地:
$ docker pull aquasec/tracee:$(uname -m)
aarch64: Pulling from aquasec/tracee
Digest: sha256:73b03702d34e415f23922347024dc61b7abe2927d41d60bbd00126b042a2d382
Status: Image is up to date for aquasec/tracee:aarch64
docker.io/aquasec/tracee:aarch64
2
启动
尝试启动安卓容器环境。再次执行监控命令:
$ docker run --name tracee --rm -it --pid=host --cgroupns=host --privileged -v /etc/os-release:/etc/os-release-host:ro -v /boot/config-$(uname -r):/boot/config-$(uname -r):ro -e LIBBPFGO_OSRELEASE_FILE=/etc/os-release-host aquasec/tracee:$(uname -m)
可见,Tracee 监控行为输出的粒度比较大,是基于事件,不是基于系统调用。
3
问题
另外,发现一个 Tracee 的问题。Tracee 启动好关闭后,再次启动会报如下错误:
$ docker run --name tracee --rm -it --pid=host --cgroupns=host --privileged -v /etc/os-release:/etc/os-release-host:ro -v /boot/config-$(uname -r):/boot/config-$(uname -r):ro -e LIBBPFGO_OSRELEASE_FILE=/etc/os-release-host aquasec/tracee:$(uname -m)
INFO: probing tracee capabilities...
INFO: starting tracee...
End of events stream
Stats: {EventCount:0 EventsFiltered:0 NetCapCount:0 BPFLogsCount:0 ErrorCount:0 LostEvCount:0 LostWrCount:0 LostNtCapCount:0 LostBPFLogsCount:0}
{"level":"fatal","ts":1681015065.7672682,"msg":"App","error":"cmd.Runner.Run: error initializing Tracee: ebpf.(*Tracee).Init: ebpf.(*Tracee).NewKernelSymbols: invalid ksymbol table"}