0.理论

1. 概念

1.1. BPF/eBPF/Seccomp-BPF

BPF 是一种灵活的、低开销的虚拟机,最初用于网络数据包过滤。

eBPF: 进一步扩展了 BPF,为其提供了更多功能和灵活性,通常需要 4.4 内核版本以上。(主要提供可观测性

Note

eBPF 起源于 Linux 内核,可以在操作系统的内核中运行沙盒程序。它被用来安全和有效地扩展内核的功能,而不需要改变内核的源代码或加载内核模块。eBPF 通过允许在操作系统内运行沙盒程序,应用程序开发人员可以在运行时,可编程地向操作系统动态添加额外的功能。

云原生容器防护力eBPF,它提供了一种便利的可基于系统或程序事件高效安全执行特定代码的通用能力,并且它可检测的事件覆盖了系统的各个方面

Seccomp-BPF: 用于沙箱进程,限制其系统调用,是 Seccomp 的一个扩展。

 

2. LSM

LSM(Linux Security Module) 可译为内核安全模块。截止到内核 5.7 版本,共有 9 个 LSM 安全模块

实现
Pasted image 20250420133046

3. LSM BPF

Linux 5.7 引入在 LSM 中提供了对于 BPF 的支持(简称LSM BPF)
(与传统BPF相比,LSMBPF是专门针对内核安全的)

在 LSM BPF 出现之前,能够实现实施安全策略目标的方式有两种选择:配置现有的 LSM 模块(如AppArmor、SELinux),或编写自定义内核模块。LSM BPF 则提供了第三种实现的方案 ,灵活且安全,具有可编程性。

使用 LSM BPF,开发人员能够在无需配置或加载内核模块的情况下编写精细策略,LSM BPF 程序会在加载时进行验证,然后在调用路径中到达 LSM hook 时执行
需要注意的是,编写 LSM BPF 程序之前,请确保:

  1. 内核版本至少为 5.7 (5.7之前通常用SELinux APPArmor实现安全功能)
  2. LSM BPF 已启用

4. 内核版本对照表

4.1. RedHat/CentOS

Pasted image 20250420133147

4.2. Debian

Pasted image 20250420133202
Pasted image 20250420133215

4.3. Ubuntu

Pasted image 20250420133231