返回更新列表
新发布Sep 10, 2026

falco v0.45.0-rc1

实时云原生 Linux 运行时安全代理,通过监控系统调用及容器/Kubernetes 元数据来检测异常行为和威胁。

分享

Falco

Latest release Supported Architectures License Docs

Falco Core Repository Stable OpenSSF Scorecard OpenSSF Best Practices

Falco

Falco 是一款面向 Linux 操作系统的云原生运行时安全工具。它旨在实时检测异常行为和潜在安全威胁,并发出告警。

其核心是,Falco 是一个内核监控与检测代理,根据自定义规则观察事件(如系统调用)。Falco 可以通过集成来自容器运行时和 Kubernetes 的元数据来增强这些事件。收集到的事件可以在 SIEM 或数据湖系统中进行主机外分析。

Falco 最初由 Sysdig 创建,是 云原生计算基金会 (CNCF) 下的一个毕业项目,被众多组织用于生产环境。

有关 Falco 可检测的网络威胁的详细技术信息和见解,请访问官方 Falco 网站。

有关项目最新更新和变更的全面信息,请参阅变更日志

Falco 项目

Falco 项目代码库由 falcosecurity GitHub 组织 维护。主仓库 falcosecurity/falco 保存着 Falco 二进制文件的源代码,而其他子项目则托管在专门的仓库中。这种将组件隔离到专门仓库的做法增强了模块化和聚焦开发。值得关注的核心仓库包括:

  • falcosecurity/libs:该仓库托管 Falco 的核心库,构成二进制文件源代码的大部分内容,并提供诸如内核驱动等关键功能。
  • falcosecurity/rules:它包含 Falco 的官方规则集,为各种安全威胁和异常行为提供预定义的检测规则。
  • falcosecurity/plugins:该仓库通过插件支持与外部服务的集成,将 Falco 的能力扩展到系统调用和容器事件之外,并计划在未来版本中发展专门的功能。
  • falcosecurity/falcoctl:一个用于管理和与 Falco 交互的命令行工具。
  • falcosecurity/charts:该仓库发布用于部署 Falco 及其生态系统的 Helm chart。Falco chart 的源码位于 chart/falco

如需进一步了解我们的仓库以及更多关于治理模型的详细信息,请访问 Falco 项目的官方中心:falcosecurity/evolution

Falco 入门

如果你是 Falco 新手,可以从我们的入门指南开始。对于生产环境部署,请参阅我们全面的安装文档。

在部署 Falco 之前,最后建议:验证环境兼容性、明确检测目标、优化性能、选择合适的构建版本,并规划 SIEM 或数据湖集成,以确保有效的事件响应。

演示环境

通过 docker-compose 文件提供了一个演示环境,可在 Docker 主机上启动,其中包含 falco、falcosidekick、falcosidekick-ui 及其所需的 redis 数据库。更多信息请参阅 docker-compose 部分

加入社区

要参与 Falco 项目,请访问社区仓库以了解更多信息和参与方式。

如果你对 Falco 或贡献有任何疑问,请尽管提交 issue 或联系 Falco 维护者和社区成员寻求帮助。

如何联系我们?

对 Falco 自身安全的承诺

各种安全审计的完整报告可在此处找到。

此外,你可以参阅 falcolibs 的安全部分,了解安全公告和策略的详细更新。

要报告安全漏洞,请遵循此处文档中概述的社区流程。

构建

关于从源码构建 Falco 的全面分步说明,请参阅官方文档

测试

展开测试说明

Falco 的从源码构建 Falco 是了解如何从源码构建 Falco 的首选资源。此外,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;
# Run the tests
sudo ./unit_tests/falco_unit_tests;

也可以选择构建你需要的驱动程序并试运行 Falco 二进制文件以进行手动测试。

最后,Falco 项目已将其 Falco 回归测试迁移至 falcosecurity/testing


如何贡献

有关如何贡献的更多信息,请参阅贡献指南行为准则

常见问题

为什么 Falco 使用 C++ 而不是 Go 或 {language}?

展开信息
  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. falcosecurity/libs 的 C++ 代码库是 Falco 的核心,体量庞大且复杂。将所有代码移植到另一种语言将是一项重大工程,需要大量开发资源,并且失败和回归的可能性很高。因此,我们迄今的做法是选择重构和代码打磨,直到这部分代码达到最佳的稳定性、质量和模块化水平。这将使未来的进一步开发更加顺畅和可行。

Falco 接下来有何计划?

通过浏览 Falco 路线图 了解 Falco 不断演进的能力,该路线图提供了目前正在开发以及计划在未来版本中推出的功能的见解。

许可证

Falco 根据 Apache 2.0 开源许可证授权给你。

资源

分类