介绍
bouheki是基于KRSI(eBPF+LSM)的Linux安全审计工具,可以基于进程的容器来审计和阻止安全事件,并且可以对容器环境进行限制。
特征
- 基于进程上下文的限制规则,例如命令名称或UID等
- 仅限于容器的限制
- 网络访问控制
- 文件访问控制
- 限制从主机文件系统绑定挂载到容器
演示版
https://asciinema.org/a/475371
安装
要求
- Linux 内核 >= 5.8.0
CONFIG_DEBUG_INFO_BTF
必须启用BTF( )。- 必须启用BPF LSM(
CONFIG_LSM
带有)。bpf
该参数也可以在启动参数中更改。
内核配置
内核必须使用以下标志集进行编译:
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
CONFIG_BPF_LSM=y
CONFIF_BPF_JIT=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_BPF_EVENTS=y
CONFIG_DEBUG_INTO_BTF=y
通常可以通过查看/proc/config.gz
或 来检查内核编译标志/boot/config-<kernel-version>
。
此外,该CONFIG_LSM
标志必须包含bpf
. 这也可以通过启动参数来控制,如下所示:
$ cat /etc/default/grub
...
GRUB_CMDLINE_LINUX="... lsm=lockdown,yama,apparmor,bpf"
...
最后,跑update-grub2
。
sudo update-grub2
Linux 发行版和支持的内核
发行版名称 | 发行版 | 内核版本 |
---|---|---|
Ubuntu | >= 20.10 | 5.8+ |
Fedora | >= 33 | 5.8+ |
安装
从 https://github.com/mrtc0/bouheki/releases 下载最新发布的二进制文件
$ wget https://github.com/mrtc0/bouheki/releases/download/v0.0.3/bouheki_0.0.3_Linux_x86_64.tar.gz
$ tar xzf bouhki_0.0.3_Linux_x86_64.tar.gz
$ sudo install bouheki /usr/local/bin/bouheki
快速开始
编写配置文件
# example.yml
network:
mode: block
target: host
cidr:
allow:
- 0.0.0.0/0
domain:
deny:
- example.com
command:
allow:
- systemd-resolved
- curl
- bouheki
files:
mode: block
target: host
allow:
- '/'
deny:
- '/etc/passwd'
log:
format: json
该配置文件设置了以下限制:
- 阻止访问 example.com
- 但是,指定命令允许的访问
command.allow
(例如curl
)
- 但是,指定命令允许的访问
- 阻止访问
/etc/passwd
有关配置的更多信息,请参阅此处。
运行
$ sudo bouheki --config example.yml
docker
$ docker run --rm -it --cgroupns=host --pid=host --privileged \
-v /sys/kernel/:/sys/kernel/ \
-v /sys/fs/bpf:/sys/fs/bpf \
-v /path/to/config.yaml:/config.yaml \
--env BOUHEKI_SKIP_COMPATIBLE_CHECK=1 \
ghcr.io/mrtc0/bouheki:latest --config /config.yaml
官方文档
https://mrtc0.github.io/bouheki
执照
bouheki 的用户空间程序是根据 MIT 许可证获得许可的。pkg/bpf 目录
中的 eBPF 程序已获得GNU 通用公共许可证版本 2 的许可。
项目地址:
https://github.com/mrtc0/bouheki#features