概述
Falco 最初由 Sysdig 于 2016 年创建,是 Kubernetes 的运行时威胁检测引擎。Falco 附带一组默认规则,用于检查内核是否存在意外行为。例如,可能会触发警报以响应名称空间更改、权限升级或意外网络连接。
Kubernetes 审计事件现在也出现在 Falco 支持的事件源列表中。这意味着,一旦 Kubernetes 集群配置为启用审计日志,它就可以将审计日志作为事件发送给 Falco。您可以编写灵活的 Falco 规则来读取这些事件并检测任何类型的主机/容器行为或活动的恶意或其他值得注意的活动。这些警报可以集成到您的事件响应工作流程中,以减少您的响应时间并通过现有流程管理一切。
Falco 可以检测到什么?
Falco 可以检测并警告涉及进行 Linux 系统调用的任何行为。Falco 警报可以通过使用特定系统调用、它们的参数以及调用进程的属性来触发。例如,Falco 可以轻松检测事件,包括但不限于:
- shell 在 Kubernetes 的容器或 pod 中运行。
/proc
容器以特权模式运行,或者正在挂载来自主机的敏感路径,例如。
- 服务器进程正在生成意外类型的子进程。
- 意外读取敏感文件,例如
/etc/shadow
.
- 将非设备文件写入
/dev
.
- 标准系统二进制文件(例如
ls
)正在建立出站网络连接。
- 特权 pod 在 Kubernetes 集群中启动。
[hidecontent type="logged" desc="隐藏内容:登录后可查看"]
Falco 官方规则在falcosecurity/rules中维护和发布。该存储库还包含 Falco 规则清单文档,其中提供了有关 Falco 附带的默认规则的更多详细信息。
安装Falco
安装
在 Linux 系统上设置 Falco
Falco 是一种 Linux 安全工具,它使用系统调用来保护和监控系统。
Falco 可用于 Kubernetes 运行时安全。运行 Falco 最安全的方式是将 Falco 直接安装在主机系统上,这样 Falco 在被攻破的情况下与 Kubernetes 隔离开来。然后可以通过在 Kubernetes 中运行的只读代理使用 Falco 警报。
您还可以使用 Helm 在 Kubernetes 中将 Falco 作为 Daemonset 直接运行,请参阅
第三方集成
在主机上安装 Falco 有两种主要方法:
- Falco 包 (
.deb
, .rpm
)
- 法尔科二进制 (
.tar.gz
)
Falco包
Falco 软件包
Falco 0.34
首次支持内核模块以外的其他驱动程序。新的 systemd 单元的名称是:
falco-bpf.service
falco-kmod-inject.service
falco-kmod.service
falco-modern-bpf.service
falco-custom.service
falcoctl-artifact-follow.service
(与Falcoctl工具相关,请参阅下一节)
这仍然是一个实验性解决方案,因此我们的建议是避免依赖 Falco systemd 单元名称,因为它们可能会在不同版本之间发生变化。最终的想法是
falco.service
通过通常的 systemd 逻辑进行单一配置,但由于 Falco 今天的工作方式,该解决方案不可行。
即使有不同的单元可用,您也不应同时运行多个 Falco!我们的单元不应该并行运行!
如果您想了解如何运行 Falco,请查看官方安装指南。
插件
Falco 带有一个插件框架,可以将其扩展到潜在的任何云检测场景。插件是符合文档化 API 的共享库,并允许:
- 添加可在规则中使用的新事件源;
- 添加定义新字段和从事件中提取信息的能力。
Falco 项目维护各种插件并提供用于插件开发的 SDK。
文档
官方文档是了解 Falco 的最佳资源。
[/hidecontent]