0

0

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

舞夢輝影

舞夢輝影

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

|

659人浏览过

|

来源于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_LISTmy-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。

AISEO
AISEO

AI创作对SEO友好的文案和文章

下载

使用场景:想把 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工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
curl_exec
curl_exec

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

452

2023.06.14

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

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

180

2023.10.30

scripterror怎么解决
scripterror怎么解决

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

351

2023.10.18

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

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

330

2023.10.25

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

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

551

2023.08.03

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

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

214

2023.09.04

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

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

1552

2023.10.24

字符串介绍
字符串介绍

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

640

2023.11.24

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

139

2026.02.13

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.1万人学习

Git 教程
Git 教程

共21课时 | 3.6万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号