Cybereason-Public/owLSM
GitHub: Cybereason-Public/owLSM
基于 eBPF LSM 的 Linux 内核级 Sigma 规则引擎,实现有状态关联的主机入侵防御与阻断能力。
Stars: 67 | Forks: 1
🛡️ owLSM aspires to become the gold standard for prevention and detection for Linux 🛡️
项目简介: owLSM 主要关注三件事:
1) 使用通过 eBPF LSM 实现的 Sigma 规则引擎进行防御。
2) eBPF 探针之间的数据关联,以实现有状态的防御能力。
3) 专注于安全的系统监控,其中每个事件都包含安全专家所需的所有上下文。
适用人群: 防御 Linux 系统的团队、提供 Linux/云安全解决方案的公司,以及寻求复杂 eBPF 解决方案实现示例的开发人员或代理。
应用现状: 安全公司 Cybereason 和 LevelBlue 的客户。
创建原因: 在使用 Falco、Tetragon 和 KubeArmor 等项目多年后,我们总是遇到同样的缺陷。这些解决方案几乎不提供防御(强制执行)能力。那些确实提供强制执行策略的解决方案缺乏基本功能,例如子字符串匹配、完整的进程命令行访问以及恶意进程的父进程终止。
我们决定采用一种完全不同的方法:
1) 使用标准的 Sigma 规则结构,并支持尽可能多的 Sigma 规则功能(不断增加中)。
2) 解决当前 eBPF LSM 项目的核心限制:它们是无状态的。强制执行规则中可用的几乎所有数据仅来自当前的 hook。
我们创建了有状态的 eBPF 程序,它们使用多个连续的 hook 点并在它们之间关联数据,因此在做出防御决策时,用户拥有他们需要的所有数据。我们将这种有状态方法发挥到了极致,例如,在监控写入事件时,您可以根据发起写入的 shell 命令指定防御规则。
## 如何构建 ``` # 构建 Docker 镜像 (一次性设置): docker build -t owlsm-ci-ubuntu20 . # 启动构建容器 docker run -it --rm -v "$PWD":/workspace -w /workspace owlsm-ci-ubuntu20 bash # 构建 owLSM make -j$(nproc) # 构建单元测试 make test -j$(nproc) # 退出容器,无法在 docker 内运行 owlsm 或测试 exit ``` ## 运行 owLSM 请在 docker 外部执行此操作 ``` cd build/owlsm/bin # 不带配置运行 sudo ./owlsm # 带配置运行 sudo ./owlsm -c /config/path.json # 带配置和排除 pid 运行 (通常我们要排除父进程) sudo ./owlsm -c /path/to/config.json -e 123 -e 456 ``` ## 配置与规则 参阅 [Rules/README.md](Rules/README.md) ## 运行单元测试 ``` cd build/unit_tests/bin # 运行单元测试 sudo ./unit_tests ``` ## 自动化测试(集成测试) 有关运行自动化测试的信息,请参阅 [src/Tests/Automation/README.md](src/Tests/Automation/README.md)。 ## 许可证 owLSM 基于 **GNU General Public License v2.0** (GPL-2.0) 授权。 ### 第三方库 本项目包含若干具有自身许可的第三方库 (均与 GPL 兼容)。有关详细信息,请参阅 [THIRD_PARTY_LICENSES](THIRD_PARTY_LICENSES)。