讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux sysdig 的 falco rules 热加载与自定义 macro/list 编写

大辰姑娘_6293

大辰姑娘_6293

发布时间:2026-02-15 16:15:25

|

679人浏览过

|

来源于php中文网

原创

Falco规则修改后不生效是因为默认不自动重载,需手动SIGHUP或systemctl kill -s SIGHUP;macro中不能用list:字段,须在rules顶部或lists.yaml中定义小写无下划线的list并显式include;driver加载失败会导致启动卡住,应优先检查日志中的“Loaded rules from”和“Rules engine is ready”。

linux sysdig 的 falco rules 热加载与自定义 macro/list 编写

falco rules 文件修改后为什么没生效

默认情况下,falco 不会自动重载规则文件——改完 rules.yaml 或新增 rule,必须手动触发重载或重启进程,否则所有改动静默失效。

常见错误现象:falco 日志里完全不出现新 rule 的匹配记录,甚至用 curl -X POST http://localhost:8765/healthz 检查都正常,让人误以为规则已加载。

  • 最稳妥的做法是发送 SIGHUP:kill -SIGHUP $(pidof falco)(注意不是 kill -9)
  • 如果用 systemd 管理,执行:sudo systemctl kill -s SIGHUP falco
  • 确认是否成功:查看 falco 启动日志末尾是否有 Loaded rules from 和对应文件路径,以及 Rules engine is ready
  • 避免用 systemctl restart falco,它会导致监控空窗期,且可能因配置语法错误直接启动失败

macro 中引用 list 时总报 unknown field 错误

在 macro 定义里写 list: my_list_name 是错的;list 不是合法字段名,正确写法是用 append 或直接内联条件,但更常见的是把 list 名作为 condition 的一部分来引用。

典型错误信息:error: unknown field "list" in ...

  • macro 内不能直接声明 list:,只能通过 condition 引用已定义的 list,例如:condition: (proc.name in my_proc_list)
  • list 必须在 rules 文件顶部或独立 lists.yaml 中定义,且名字要全小写、无下划线(如 my_proc_list 可,MY_PROC_LIST 或 my-proc-list 不行)
  • list 条目值如果是字符串,需加引号;如果是数字或布尔值,不加引号(- "sshd" ✅,- sshd ❌,会被解析成变量名)
  • macro condition 中若含多个 list 引用,建议用括号明确优先级,比如:(proc.name in shell_procs) or (proc.name in service_procs)

自定义 list 放在哪、怎么被 falco 扫到

falco 默认只加载 /etc/falco/falco_rules.yaml 和 /etc/falco/falco_rules.local.yaml,其他文件(包括 lists.yaml)不会自动识别——必须显式 include。

Browser Setup (No-Root Linux)
Browser Setup (No-Root Linux)

在无 root/sudo 权限的环境(云容器、VPS、隔离主机)中安装并配置 OpenClaw 浏览器工具的 headless Chrome。适用场景:...

下载

使用场景:想把 proc 名、路径、用户列表等拆出来单独维护,避免主 rules 文件臃肿。

  • 把 list 定义写进 /etc/falco/lists.yaml,然后在 falco_rules.local.yaml 开头加上:include: lists.yaml
  • include 路径是相对于 falco 配置中 rules_file 所在目录的,不是绝对路径也不是工作目录
  • 同一个 list 名不能在多个文件里重复定义,否则加载失败并报 duplicate key
  • list 内容支持 - value 形式,也支持 - macro: some_macro 这种嵌套引用(只要 macro 已定义)

sysdig driver 加载失败导致 falco 启动卡住

如果 falco 启动日志停在 Loading sysdig driver... 就不动了,大概率是 kernel module 没装好或版本不匹配,和 rules 热加载无关,但常被误判为配置问题。

性能与兼容性影响:driver 缺失时 falco 会 fallback 到 eBPF,但部分事件(如 file open with flags)不可见,且 eBPF 模式对内核版本敏感(5.2+ 较稳)。

  • 先运行:sudo modprobe sysdig_probe,看是否报 Module not found
  • 若未安装 driver,用 sudo /usr/bin/falco-driver-loader bpf 强制走 eBPF(适合容器或 CI 环境)
  • 若坚持用 kernel module,检查 dkms status 是否有 sysdig 条目,没有就重装:sudo apt-get install linux-headers-$(uname -r) && sudo /usr/bin/falco-driver-loader kernel
  • 注意:某些云厂商定制内核(如 AWS AL2、Azure AKS)禁用 module 加载,此时唯一可靠路径是 eBPF + --bpf-probe /root/.falco/bpf/probe.o

falco 的 rules 加载机制本身简单,但 macro/list 的作用域、include 路径解析、driver 依赖这三块容易串在一起出问题。改完规则后第一反应不该是调 condition,而是先看日志里有没有 “Loaded rules from” 和 “Rules engine is ready”。

热门AI工具

更多
Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

Laper
Laper Hot

Laper是专为编剧、导演和制片人推出的 AI 原生剧本创作工具。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

3423

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

735

2023.10.30

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

909

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2500

2023.10.25

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

1598

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

2344

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

5844

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

5029

2023.11.24

LLVM自定义Pass怎么写
LLVM自定义Pass怎么写

本专题聚焦LLVM自定义Pass开发,整理Pass类结构、run()方法、PreservedAnalyses、CMake构建、插件注册、-load-pass-plugin加载和测试用例编写流程。

0

2026.09.30

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn