我使用 minikube 创建了一个本地测试环境来测试自定义 falco 规则。
目标是在命名空间和 pod 名称中搜索关键字,并为其设置 Info 优先级,以便可以在 Kibana 中过滤掉它们。
以下是我编写的自定义宏和规则:
- macro: ns_contains_whitelist_terms
condition: k8s.ns.name = monitoring or k8s.ns.name = jenkins
- macro: pod_name_contains_whitelist_terms
condition: >
(k8s.pod.name startswith meseeks or
k8s.pod.name startswith jenkins or
k8s.pod.name startswith wazuh)
- rule: priority_whitelist_ns_alert
desc: add an Info priority to the monitoring and jenkins namespaces
condition: ns_contains_whitelist_terms
output: "Namespace is jenkins or monitoring findme1"
priority: INFO
tag: whitelist
- rule: priority_whitelist_pod_name_alert
desc: add an Info priority to pods that start with wazuh, jenkins or meseeks
condition: pod_name_contains_whitelist_terms
output: "Pod name starts with wazuh, jenkins or meseeks findme2"
priority: INFO
tag: whitelist
我已经创建了命名空间和 pod 来测试规则,它们会在我期望的时候触发(例如,当 falco 启动时,当我生成 shell 或与 pod 交互时)。
但是,警报会反复触发,有时一次有数百个,因此当我 grep 日志时的输出类似于此示例。
出于好奇,当不同事件发生时,我计算了不同规则警报的行数,并注意到它们并不相同。见下表:
事件 | 命名空间规则已触发 #: | 已触发 Pod 名称规则 #: |
---|---|---|
启动 | 6 | 4 |
产卵壳 | 106 | 55 |
适当的更新 | 943 | 23 |
安装 wget | 84 | 26 |
我能想到这些规则会被多次触发的唯一两个原因是
- 我写错了规则,或者
- 后台发生的事件(不是我直接触发的)导致规则重复触发。
我相信 2 的可能性更大,但如果任何人能够确认我写的规则看起来不错或有任何其他见解,我将不胜感激。