Falco 与 Tetragon 最小化 POC 验证指南
Falco 与 Tetragon 最小化 POC 验证指南
本文档旨在提供一份手把手的操作指南,帮助你在本地环境快速构建一个包含 Falco 和 Tetragon 的 Kubernetes 集群,并验证它们的核心功能。
1. 环境准备
在开始之前,请确保你的本地环境(MacOS/Linux)已经安装了以下工具:
- Docker Desktop (或 OrbStack/Podman): 容器运行时。
- Kind: 用于在 Docker 中运行 Kubernetes 集群。
- Kubectl: Kubernetes 命令行工具。
- Helm: Kubernetes 包管理器。
1.1 检查版本
执行以下命令确认工具已就绪:
| |
2. 创建集群
为了支持 eBPF,我们需要使用较新版本的 Kubernetes 节点镜像,并确保节点配置正确。
2.1 编写 Kind 配置文件
创建文件 security-poc/kind-config.yaml:
| |
2.2 启动集群
| |
等待集群启动完毕(约 1-2 分钟)。
3. 部署 Falco (威胁检测)
Falco 是云原生运行时安全的事实标准,我们将使用 Helm 进行安装。
3.1 安装脚本
创建并执行 security-poc/install-falco.sh:
| |
执行安装:
| |
3.2 验证 Falco 状态
| |
确保 Pod 状态为 Running。
4. 部署 Tetragon (内核观测与阻断)
Tetragon 是 Cilium 推出的基于 eBPF 的安全观测与执行平台。
4.1 安装脚本
创建并执行 security-poc/install-tetragon.sh:
| |
执行安装:
| |
4.2 验证 Tetragon 状态
| |
确保 Agent Pods 状态为 Running。
5. POC 验证场景
我们将通过模拟恶意行为来触发这两个工具的反应。
5.1 场景一:触发 Falco 告警 (文件完整性监控)
目标: 模拟攻击者修改 /etc 目录下的文件。
准备测试脚本
security-poc/demo-falco.sh:1 2 3 4 5 6 7 8 9 10#!/bin/bash # 启动一个 Alpine 容器 kubectl run alpine-test --image=alpine --restart=Never -- sh -c "sleep 3600" || true kubectl wait --for=condition=Ready pod/alpine-test --timeout=60s # 触发违规操作:在 /etc 下创建文件 kubectl exec alpine-test -- touch /etc/falco-test # 查看 Falco 日志 kubectl logs -n falco -l app.kubernetes.io/name=falco --tail=100 | grep "File below /etc opened for writing"执行验证:
1 2chmod +x security-poc/demo-falco.sh ./security-poc/demo-falco.sh预期结果: 你将在控制台看到类似如下的 Falco JSON 日志,表明它检测到了对
/etc的写入尝试:
5.2 场景二:触发 Tetragon 观测 (敏感文件读取)
目标: 监控所有对 /etc/passwd 的读取行为。
定义策略
security-poc/tetragon-policy.yaml:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19apiVersion: cilium.io/v1alpha1 kind: TracingPolicy metadata: name: log-etc-access spec: kprobes: - call: "sys_openat" syscall: true args: - index: 1 type: "string" selectors: - matchArgs: - index: 1 operator: "Prefix" values: - "/etc/passwd" matchActions: - action: Post准备测试脚本
security-poc/demo-tetragon.sh:1 2 3 4 5 6 7 8 9 10#!/bin/bash # 应用策略 kubectl apply -f security-poc/tetragon-policy.yaml sleep 5 # 等待策略生效 # 触发操作:读取 /etc/passwd kubectl exec alpine-test -- cat /etc/passwd > /dev/null # 查看 Tetragon 日志 kubectl logs -n tetragon -l app.kubernetes.io/name=tetragon -c export-stdout --tail=100 | grep "/etc/passwd"执行验证:
1 2chmod +x security-poc/demo-tetragon.sh ./security-poc/demo-tetragon.sh预期结果: 你将看到 Tetragon 捕获的
process_exec或sys_openat事件,详细记录了是哪个 Pod、哪个进程执行了该操作。
6. 清理环境
测试完成后,清理所有资源:
| |
7. 常见问题排查
- Falco Pod 启动失败: 检查节点内核版本是否支持 eBPF。
- Tetragon 没有日志: 确认
TracingPolicy是否正确应用,以及 Pod 所在的节点是否运行了 Tetragon Agent。