编译falco
编译二进制falco
按照falco官方文档的编译方法 https://falco.org/docs/install-operate/source/, 根据编译环境执行不同的命令,我的是ubuntu22.04,使用如下命令:
- apt update && apt install git cmake build-essential libelf-dev
- (1) git clone https://github.com/falcosecurity/falco.git
(2) cd falco
(3) mkdir -p build
(4) cd build
(5) cmake -DUSE_BUNDLED_DEPS=On ..
(6) make falco
编译结果会在build/userspace/falco/下生成二进制文件falco.
在cmake时有些东西下载需要配置代理,而在make时有些步骤需要关闭代理,否则会报错“error:0A000126:SSL routines::unexpected eof while reading”,看情况开启代理。
3. 编译内核文件
(1)apt install linux-headers-$(uname -r)
(2)make driver
编译结果会在build/driver/下生成falco.ko,安装该内核模块(insmod falco.ko)即可通过kernel module方式检测事件。这里注意当插入模块后,会自动生成/dev/falco0 1 2...等文件,这些文件是驱动创建的设备文件,就是一个内核系统调用事件数据发送到用户空间的通道。
4. 编译ebpf探针
(1)apt install llvm clang
(2)cmake -DBUILD_BPF=ON ..
(3)make bpf
编译结果会在build/driver/bpf/下生成probe.o文件,把该文件拷贝成/root/.falco/falco-bpf.o 然后用命令 falco -o engine.kind=ebpf
启动。这个目录也可以通过环境变量配置,但是我还没有找到怎么配置。试过了配FALCO_BPF_PROBE可以。但是注意别使用sudo运行,用sudo之后falco程序运行就不在当前terminal环境下,您的export FALCO_BPF_PROBE="/root/.falco/falco-bpf.o"是设置在当前terminal的,可以用sudo export FALCO_BPF_PROBE="/root/.falco/falco-bpf.o" && ./userspace/falco/falco -c ../falco.yaml -r /etc/falco/falco_rules.yaml 启动运行解决这个问题
- 运行编译文件
sudo ./userspace/falco/falco -c ../falco.yaml -r ../rules/falco_rules.yaml
其中-c 指定配置文件,-r指定规则。