Falco
2 分钟阅读
简要概述
TODO;
规则
falco rules 使用 yaml 格式编写,有 “Rules”、“Lists”、“Macros” 三种类型:
Rules
在什么条件下会生成一个警报。一条规则通常伴随着一个描述性的输出字符串,该字符串会随着警报一起发送,示例规则如下:
- rule: shell_in_container
desc: notice shell activity within a container
condition: >
evt.type = execve and
evt.dir = < and
container.id != host and
(proc.name = bash or
proc.name = ksh)
output: >
shell in a container
(user=%user.name container_id=%container.id container_name=%container.name
shell=%proc.name parent=%proc.pname cmdline=%proc.cmdline)
priority: WARNING
参数 | 必须 | 默认值 | 描述 |
---|---|---|---|
rule | 是 | - | 规则名称,全局唯一 |
condition | 是 | - | 应用于事件的过滤表达式,用于检查它们是否与规则匹配 |
desc | 是 | - | 这个规则用途描述 |
output | 是 | - | 如果匹配到该规则,则对外输出内容 |
priority | 是 | - | 告警级别取值:emergency, alert, critical, error, warning, notice, informational, debug |
exceptions | 否 | - | TODO; |
enabled | 否 | true | 是否启用规则,默认启用 |
tags | 否 | - | 关联到该规则的标签 |
warn_evttypes | 否 | true | 如果设置为 false 将抑制与规则没有事件类型相关的警告 |
skip-if-unknown-filter | 否 | false | 如果设置为true,如果规则条件包含一个过滤检查,例如fd.some_new_field,而该版本的Falco不知道这个字段,Falco会默默接受这条规则但不执行它;如果设置为false,Falco在发现未知的过滤检查时会报告错误并退出。 |
source | 否 | syscall | 这个规则应该被评估的事件来源。典型的值包括syscall、k8s_audit,或者由源插件提供的来源。 |
Macros
宏提供了一种以可重用的方式定义规则常见子部分的方法,可以在规则内部甚至其他宏中重复使用。
参数 | 必须 | 默认值 | 描述 |
---|---|---|---|
macro | 是 | - | 规则名称,全局唯一 |
condition | 是 | - | 应用于事件的过滤表达式,用于检查它们是否与规则匹配 |
如上 “Rules” 的 “condition” 示例中以下两个语句,被大量使用:
evt.type = execve and evt.dir = <
container.id != host
这两个条件将被许多其他规则频繁使用,因此为了简化工作,我们可以为它们分别定义宏:
- macro: container
condition: container.id != host
- macro: spawned_process
condition: evt.type = execve and evt.dir = <
此时更改后的规则如下:
- rule: shell_in_container
desc: notice shell activity within a container
condition: >
spawned_process and
container and
proc.name = bash
output: >
shell in a container
(user=%user.name container_id=%container.id container_name=%container.name
shell=%proc.name parent=%proc.pname cmdline=%proc.cmdline)
priority: WARNING
Lists
列表是命名的项目集合,你可以在规则、宏,甚至其他列表中使用这些项目,与规则和宏不同,列表不能被解析为过滤表达式。
参数 | 必须 | 默认值 | 描述 |
---|---|---|---|
list | 是 | - | 规则名称,全局唯一 |
items | 是 | - | 数组格式,列表的值 |
- list: shell_binaries
items: [bash, csh, ksh, sh, tcsh, zsh, dash]
- list: userexec_binaries
items: [sudo, su]
- list: known_binaries
items: [shell_binaries, userexec_binaries]
- macro: safe_procs
condition: proc.name in (known_binaries)
最后修改 2024.01.05: docs: add falco (74e143a)