MeAkash77/FalconOS-Lightweight-Linux-Container-Runtime-Process-Isolation-Engine
GitHub: MeAkash77/FalconOS-Lightweight-Linux-Container-Runtime-Process-Isolation-Engine
Falco 是一款 CNCF 毕业级的云原生运行时安全工具,通过内核 syscall 监控和自定义规则引擎,实时检测 Linux 容器与 Kubernetes 环境中的异常行为并发出告警。
Stars: 0 | Forks: 0
# Falco
[](https://github.com/falcosecurity/falco/releases/latest) [](https://github.com/falcosecurity/falco/releases/latest) [](COPYING) [](https://falco.org/docs)
[](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#core-scope) [](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md#stable) [](https://scorecard.dev/viewer/?uri=github.com/falcosecurity/falco) [](https://bestpractices.coreinfrastructure.org/projects/2317)
[](https://falco.org)
[Falco](https://falco.org/) 是一款专为 Linux 操作系统设计的云原生运行时安全工具。它旨在实时检测异常行为和潜在的安全威胁并发出警报。
Falco 的核心是一个内核监控和检测代理,它基于自定义规则观察诸如 syscall 之类的事件。Falco 可以通过集成来自容器运行时和 Kubernetes 的元数据来增强这些事件。收集到的事件可以在外部主机上的 SIEM 或数据湖系统中进行分析。
Falco 最初由 [Sysdig](https://sysdig.com) 创建,是 [云原生计算基金会](https://cncf.io) (CNCF) 旗下的一个**毕业项目**,已被多个[组织](https://github.com/falcosecurity/falco/blob/master/ADOPTERS.md)用于生产环境中。
有关 Falco 可以检测到的网络威胁的详细技术信息和见解,请访问 [Falco](https://falco.org/) 官方网站。
有关本项目最新更新和变更的综合信息,请参阅[更新日志](CHANGELOG.md)。
## Falco 项目
Falco 项目代码库在 [falcosecurity GitHub 组织](https://github.com/falcosecurity)下维护。主代码库 [falcosecurity/falco](https://github.com/falcosecurity/falco) 包含了 Falco 二进制文件的源代码,而其他子项目则托管在专门的仓库中。这种将组件隔离到专门仓库的方法增强了模块化并使开发更具专注性。著名的[核心仓库](https://github.com/falcosecurity/evolution?tab=readme-ov-file#core)包括:
- [falcosecurity/libs](https://github.com/falcosecurity/libs):该仓库托管了 Falco 的核心库,它们构成了二进制文件源代码的大部分,并提供了诸如内核驱动等基本功能。
- [falcosecurity/rules](https://github.com/falcosecurity/rules):它包含 Falco 的官方规则集,为各种安全威胁和异常行为提供了预定义的检测规则。
- [falcosecurity/plugins](https://github.com/falcosecurity/plugins):该仓库支持通过插件与外部服务进行集成,这些插件将 Falco 的功能扩展到 syscall 和容器事件之外,并计划在未来的版本中演进出更多专业化功能。
- [falcosecurity/falcoctl](https://github.com/falcosecurity/falcoctl):一个专为管理和与 Falco 交互而设计的命令行工具。
- [falcosecurity/charts](https://github.com/falcosecurity/charts):该仓库提供了用于部署 Falco 及其生态系统的 Helm charts,简化了安装和管理过程。
如需进一步了解我们的仓库以及有关我们治理模式的更多详细信息,请访问 Falco 项目的官方中心:[falcosecurity/evolution](https://github.com/falcosecurity/evolution)。
## Falco 入门指南
如果您是 Falco 的新手,请从我们的[入门](https://falco.org/docs/getting-started/)指南开始您的旅程。对于生产环境的部署,请参阅我们详尽的[安装与配置](https://falco.org/docs/setup/)文档。
在部署 Falco 之前的最终建议:验证环境兼容性,定义您的检测目标,优化性能,选择合适的构建版本,并规划 SIEM 或数据湖的集成,以确保有效的事件响应。
### 演示环境
我们通过 docker-compose 文件提供了一个演示环境,可以在包含 falco、falcosidekick、falcosidekick-ui 及其所需 Redis 数据库的 Docker 主机上启动。有关更多信息,请参阅 [docker-compose 部分](docker/docker-compose/)
## 加入社区
要参与 Falco 项目,请访问[社区](https://github.com/falcosecurity/community)仓库以获取更多信息和参与方式。
如果您对 Falco 或贡献有任何疑问,请随时提交 issue 或联系 Falco 维护者及社区成员寻求帮助。
如何联系我们?
- 加入 [Kubernetes Slack](https://slack.k8s.io) 上的 [#falco](https://kubernetes.slack.com/messages/falco) 频道。
- 加入 [Falco 邮件列表](https://lists.cncf.io/g/cncf-falco-dev)。
- 提交 [issue](https://github.com/falcosecurity/falco/issues) 或提出功能请求。
## 对 Falco 自身安全的承诺
各项安全审计的完整报告可以在[这里](./audits/)找到。
此外,您可以参考 [falco](https://github.com/falcosecurity/falco/security) 和 [libs](https://github.com/falcosecurity/libs/security) 的安全部分,获取有关安全建议和政策的详细更新。
如需报告安全漏洞,请遵循在[此处](https://github.com/falcosecurity/.github/blob/main/SECURITY.md)找到的文档中概述的社区流程。
## 构建
有关从源代码构建 Falco 的全面分步说明,请参阅[官方文档](https://falco.org/docs/developer-guide/source/)。
## 测试
## 如何贡献
请参阅[贡献](https://github.com/falcosecurity/.github/blob/main/CONTRIBUTING.md)指南和[行为准则](https://github.com/falcosecurity/evolution/blob/main/CODE_OF_CONDUCT.md)以获取有关如何贡献的更多信息。
## 常见问题
### 为什么 Falco 使用 C++ 而不是 Go 或 {某种语言}?
### Falco 的下一步是什么?
通过探索 [Falco 路线图](https://github.com/orgs/falcosecurity/projects/5),随时了解 Falco 不断演进的功能,该路线图提供了对目前正在开发及计划在未来版本中推出的功能的见解。
## 许可证
Falco 根据 [Apache 2.0](./COPYING) 开源许可证授权给您。
## 资源
- [治理](https://github.com/falcosecurity/evolution/blob/main/GOVERNANCE.md)
- [行为准则](https://github.com/falcosecurity/evolution/blob/main/CODE_OF_CONDUCT.md)
- [维护者指南](https://github.com/falcosecurity/evolution/blob/main/MAINTAINERS_GUIDELINES.md)
- [维护者列表](https://github.com/falcosecurity/evolution/blob/main/MAINTAINERS.md)
- [仓库指南](https://github.com/falcosecurity/evolution/blob/main/REPOSITORIES.md)
- [仓库列表](https://github.com/falcosecurity/evolution/blob/main/README.md#repositories)
- [采用者列表](https://github.com/falcosecurity/falco/blob/master/ADOPTERS.md)
- [发布流程](RELEASE.md)
- [安装配置文档](https://falco.org/docs/setup/)
- [故障排除](https://falco.org/docs/troubleshooting/)
展开测试说明
Falco 的[从源代码构建 Falco](https://falco.org/docs/developer-guide/source/) 是了解如何从源代码构建 Falco 的首选资源。此外,[falcosecurity/libs](https://github.com/falcosecurity/libs) 仓库提供了有关 Falco 底层库和内核驱动测试与调试的更多宝贵信息。 以下是一个 `cmake` 命令示例,它将为您启用此仓库中所有单元测试所需的一切: ``` cmake \ -DUSE_BUNDLED_DEPS=ON \ -DBUILD_DRIVER=ON \ -DBUILD_FALCO_MODERN_BPF=ON \ -DCREATE_TEST_TARGETS=ON \ -DBUILD_FALCO_UNIT_TESTS=ON ..; ``` 构建并运行单元测试套件: ``` nproc=$(grep processor /proc/cpuinfo | tail -n 1 | awk '{print $3}'); make -j$(($nproc-1)) falco_unit_tests; # 运行 tests sudo ./unit_tests/falco_unit_tests; ``` (可选)构建您选择的驱动并测试运行 Falco 二进制文件,以执行手动测试。 最后,Falco 项目已将其 Falco 回归测试移至 [falcosecurity/testing](https://github.com/falcosecurity/testing)。展开信息
1. Falco 底层的第一批代码是很久以前编写的,当时的 Go 语言还没有像今天这样成熟并被广泛采用。 2. 由于工具对状态的要求,Falco 的执行模型是顺序且单线程的,因此 Go 运行时大多数与并发相关的卖点根本无法发挥作用。 3. Falco 代码在很多地方涉及非常底层的编程,而且我们都清楚,将 Go 与 C 接口是可行的,但这会带来大量的复杂性和权衡。 4. 作为一款旨在处理极高事件吞吐量的安全工具,Falco 需要在运行时的所有热路径中压榨性能,并需要对内存分配进行深度控制,而这是 Go 运行时无法提供的(而且还涉及垃圾回收)。 5. 尽管 Go 不适合 Falco 核心的工程需求,我们仍然认为它可以是编写 Falco 扩展(通过插件系统)的绝佳候选者。这就是我们特别关注并高度重视 plugin-sdk-go 开发的主要原因。 6. Go 并不是获得静态链接二进制文件的必要条件。事实上,我们已经提供了完全静态的 Falco 构建版本有好几年了。唯一的问题是,在我们目前的动态库模型下,无法支持插件系统。 7. 插件系统在设计之初就设想支持多种语言,因此对我们来说,维护一个兼容 C 的代码库是确保最大跨语言兼容性的最佳策略。 8. 通常,插件会有 GLIBC 的要求/依赖,因为它们包含动态加载所需的底层 C 绑定。未来可能的解决方案是,也支持在编译时将插件静态链接,从而作为捆绑包在 Falco 二进制文件中发布。虽然在这个方向上还没有开始任何工作,但这将解决您报告的大部分问题,并提供一个完全静态的二进制文件。当然,这将不再兼容动态加载,但它可能是我们 Falco 静态构建版本的一个可行解决方案。 9. 内存安全绝对是一个受关注的问题,尽管 C++ 很容易出错,但我们尽最大努力保持高水平的代码质量。例如,我们尽可能使用智能指针,在 CI 中使用地址消毒器构建库,在每次发布前通过 Valgrind 运行 Falco,并有办法对其进行压力测试以检测性能回归或奇怪的内存使用情况(例如 https://github.com/falcosecurity/event-generator)。除此之外,我们还不时地让第三方审计代码库。当然,这些都不能构成一个完美的安全立场,但我们努力将我们的胜算最大化。从这个角度来看,Go 绝对会让我们的工作变得更轻松,然而由于上述原因,这些权衡至今从未值得过。 10. 作为 Falco 核心的 falcosecurity/libs C++ 代码库相当庞大且复杂。将所有这些代码移植到另一种语言将是一项巨大的工程,需要大量的开发资源,并且失败和回归的风险很高。因此,到目前为止,我们的方法一直是选择重构和代码打磨,直到我们在那部分代码上达到最佳的稳定性、质量和模块化水平。这将使未来的进一步开发变得更顺畅、更可行。标签:AMSI绕过, API接口, Bash脚本, CCTV/网络接口发现, Chrome Headless, DNS 解析, Docker镜像, Falco, Kubernetes安全, SIEM集成, SQLite数据库, Syscall, Web开发, Web截图, 内核监控, 多包管理, 威胁检测, 子域名字典, 子域名突变, 安全代理, 安全告警, 容器安全, 开源安全工具, 异常行为检测, 敏感词过滤, 时间线生成, 构建工具, 请求响应过滤, 请求拦截, 调试插件, 逆向工程平台