土法炼钢 · 系统与基础设施

【Falco】排障坐标系:五轴否证与双引擎证据包

文章导航

分类入口
kubernetessecurity
标签入口
#falco#troubleshooting#five-axes#dual-engine#libscap#rules#drops#v0.44.1

目录

「DaemonSet Ready,为什么没有告警?」与「规则能 -L 列出,为什么生产静默?」很少落在同一层。前者可能是驱动没挂上、auto 换了引擎、或 API/Schema 错配;后者可能是富化字段空、异常过宽、或 sink / drop。一上来重装 chart 或随机改规则,会把可恢复的轴 2 问题放大成双故障。

本文是系列第 13 篇:按第 1 篇五轴做症状 → 轴映射。口诀不变:先点名轴,再下钻模块。升级门见第 12 篇。无 Falco 节点则不粘贴伪造 Driver 行 / 命中日志 / drop 计数。

本篇在系列中的位置

篇目 核心内容
第 12 篇 · 运维与升级 成对换驱动与破坏面
第 13 篇 · 排障坐标系 五轴否证;双引擎证据包
第 14 篇 · 对照替代路径 Tetragon / auditd / seccomp
系列目录 全部篇目

版本锚定:Falco 0.44.1;驱动 10.2.0+driver。metrics / 配置键以该 tag 为准。Tetragon 排障五轴见 tetragon/13——同名「五轴」不是同一坐标系


一、口诀:先点名轴;双引擎分列证据包

轴 1 Driver 加载     — engine.kind / driver.kind / auto 回退 / 权限与签名
轴 2 libscap 协商    — API Version / Schema Version / 打开会话 / 无原始事件
轴 3 libsinsp 富化   — FD→路径、进程树、container/k8smeta 字段
轴 4 规则引擎        — 条件、优先级、异常、规则是否加载
轴 5 输出与丢事件    — sink、背压、drop、BPF iterators 门

双引擎在轴 1–2、部分轴 5 分列证据包:标题必须写明 modern_ebpfkmod(以及是否由 auto 回退而来)。轴 3–4 共享用户态语义,但仍要标注事件是否曾进入 scap。

flowchart TD
  symptom["Symptom"]
  symptom --> name["Name Falco axis first"]
  name --> a1["Axis1 driver load"]
  name --> a2["Axis2 scap negotiate"]
  name --> a3["Axis3 sinsp enrich"]
  name --> a4["Axis4 rule engine"]
  name --> a5["Axis5 output drops"]
  a1 --> split["Split evidence by engine"]
  a2 --> split
症状(入口) 优先轴 先查 不要先做
进程起不来 / Driver 行与 values 不符 1 driver.kindauto 回退、特权/签名 改规则条件
进程在跑,完全无 syscall 事件 2(或 1) 驱动是否真加载;API/Schema 是否匹配 10.2.0+driver 断定「没有攻击」
有事件,带 container.* 的规则永不响 3 plugin 元数据、富化字段是否空 只加更多 OR 条件
falco -L 有规则,生产无告警 4(先否证 1–3) 条件/异常/优先级;规则文件是否即运行集 重装 DaemonSet
引擎已命中,SIEM 无;或 drop 涨 5 sink 是否仍指向 gRPC;缓冲/iterators 当成规则未命中

默认顺序:轴 1 引擎身份 → 轴 2 协商与原始事件 → 轴 3 字段 → 轴 4 求值 → 轴 5 出口与丢弃。一次否证一轴。


二、Driver 加载失败

表象:CrashLoop;Running 但 Driver 不是预期引擎;least-privileged 容器在 attach 阶段失败;auto 后权限模型与排障假设不一致。

分列

引擎 证据包要点
modern_ebpf BTF / ringbuf 可用性;CAP_SYS_BPFCAP_SYS_PERFMONCAP_SYS_RESOURCECAP_SYS_PTRACE;sysfs/tracefs 挂载;paranoid 策略
kmod .ko 是否加载、签名/DKMS、完整特权(不可套用上列 CAP 故事)
auto loader 生成的实际 engine.kind;回退是否在事故节点发生

展开见第 2 篇第 10 篇


三、协商与无原始事件

表象:升级后「什么都没有」;用户态已是 0.44.x,驱动仍是 0.43 世代;打开会话失败。

先否证:用户态与驱动是否成对第 12 篇)。Kernel Events Architecture 要求协商 API Version 与 Schema Version;错配不是规则语法问题。无环境时只保留检查项,不伪造 falco --version 输出——语义上该输出用于核对 Libs / Driver API / Schema / Default driver。

若引擎身份正确且协商成功仍无事件,再查缓冲与 drop(轴 5 / 第 5 篇),而不是跳到轴 4。


四、富化与规则未命中

表象:同一规则在实验机响、在集群不响;条件依赖 fd.name / container.id 等但字段空;异常吞掉真阳性。

子问题 动作
字段空、上下文缺失 3 查 libsinsp 状态与 plugin(第 4、9 篇)
条件永假、异常过宽、优先级阴影 4 查规则求值与加载集(第 6–7 篇)
规则文件未进入进程 4 falcoctl / 挂载路径 / 热加载边界

-L 看得到」只否证「文件完全没加载」,否证不了富化与异常。


五、输出与丢事件

表象:值班说「命中过」,下游没有;或威胁情报空窗但 drop 相关信号在涨。

子问题 核对
已删 gRPC sink 0.44 起 gRPC output/server 不存在;改 HTTP/file 等
背压 / 配置错误 输出配置与下游可达性(第 8 篇)
驱动/用户态丢事件 buf_size_preset 等;勿把 drop 写成「无威胁」
iterators 0.44.1 可禁用;容器非 host PID 下可能自动关

轴 5 与轴 4 的分界:引擎侧已形成告警对象,还是事件在进入规则前就丢了。


六、不要与 Tetragon 五轴混因果

项目 Falco 本系列 Tetragon 系列
轴含义 Driver → scap → sinsp → 规则 → 输出/丢 血缘 / Hook / 策略加载 / 过滤分层 / 强制执行
主问题 检测告警为何缺失或噪声 策略/Override/导出为何不符合预期
交叉阅读 选型见第 14–16 篇 tetragon/13

同节点可同时跑两者,但证据包不可混贴:Falco 的「无告警」不能用 Tetragon collectionKey 撞名解释;Tetragon 的 JSON allow/deny≠gRPC 也不能用来解释 Falco HTTP sink。需要强制执行(Override)时,坐标在 Tetragon,不在本篇五轴里「加一条阻断」。


参考资料

本系列(A)

对照(勿混因果)

官方(A)


上一篇运维与升级

下一篇对照替代路径

读完这篇,下一步读什么

优先读同系列或同问题的下一篇,把单篇消费变成主题集群。

2026-08-21 · kubernetes / security

【Falco】观测税与误报面:成本归因到五轴

把 Falco 0.44.1 的权限/部署成本、规则噪声与已文档化的缓冲/base_syscalls 旋钮归因到五轴;区分误报与漏报落格;禁止未测 CPU% 排行榜与照抄站内对照数字。

2026-08-21 · kubernetes / security

Falco / 运行时检测:从双引擎驱动到规则引擎

补齐站内 Tetragon 排除树与产品对照之上的 Falco 检测内核:modern_ebpf 与 kmod 双引擎、libscap/libsinsp、规则引擎与输出,并以排障与相对 Tetragon/auditd/seccomp 的选型收束。

2026-08-21 · kubernetes / security

【Falco】libscap:捕获会话与 API/Schema 协商

钉清 libscap 如何把驱动事件送入用户态:打开会话、ring/缓冲、API Version 与 Schema Version 协商,以及与 modern_ebpf / kmod 的接口差;说明 0.43→0.44 大 bump 的失败表象。


By .