Kubernetes Goat Scenario 18:在集群内部署 Falco 实现运行时安全监控与事件检测

Kubernetes Goat Scenario 18:在集群内部署 Falco 实现运行时安全监控与事件检测 Kubernetes Goat Scenario 18在集群内部署 Falco 实现运行时安全监控与事件检测【免费下载链接】kubernetes-goatKubernetes Goat is a Vulnerable by Design cluster environment to learn and practice Kubernetes security using an interactive hands-on playground 项目地址: https://gitcode.com/GitHub_Trending/ku/kubernetes-goat本篇基于 Kubernetes Goat 的 Scenario 18 实战文档讲解如何在一个 Kubernetes 集群中通过 Helm 部署开源运行时安全引擎 Falco利用其预定义规则集对容器与 Kubernetes 资源做近实时的安全监控并通过模拟读取敏感文件/etc/shadow的攻击行为完整体验从部署、日志观测到安全事件检测的全流程。读完本文你将掌握 Falco 的部署方式、其基于系统调用的检测原理以及如何在 Kubernetes Goat 环境中复现和验证一次真实的运行时告警。场景背景为什么需要运行时安全监控Kubernetes Goat 是一个Vulnerable by Design设计上即脆弱的 Kubernetes 集群环境供读者以动手实践的方式学习和练习 Kubernetes 安全。Scenario 18 对应其中的运行时安全主题完整文档见 Scenario 18 文档。容器及其基础设施是不可变的immutable应用打包为镜像后传统的安全工具和技术在运行期间很难及时发现特定的攻击行为、漏洞利用与异常活动。这正是运行时安全监控的价值所在——不依赖静态分析而是在系统调用层面持续观察行为流。本场景选择的工具是 Falco一个流行的开源云原生运行时安全项目用于在集群内完成监控 规则检测 告警的闭环。从项目文档 K8s OWASP Top 10 映射表 可以看到Kubernetes Goat 将本场景连同 Scenario 21 的 Cilium Tetragon归入K05: Inadequate Logging and Monitoring日志与监控不足类别说明其定位正是补齐集群运行时的可观测性与威胁检测能力。本场景完成后的学习目标是将 Falco 的 Helm Chart 部署到 Kubernetes 集群对 Falco 日志进行分析观察 Kubernetes 集群中的安全事件检测过程使用 Falco 以近实时near real-time的方式发现并分析安全问题。部署前置条件Helm v3:::note 提示本场景的所有部署步骤依赖Helm v3执行前请确认本机已安装 Helm 3 且kubectl可正常连接目标集群。:::Kubernetes Goat 环境本身通过仓库根目录的 setup-kubernetes-goat.sh 脚本一键部署各类脆弱场景RBAC 配置、metadata-db 等 Helm Chart而 Scenario 18 的 Falco 属于防御方组件由读者在已建好的集群上手动安装这也符合攻防演练中先有攻击面、再上监控的真实节奏。使用 Helm 部署 Falco按照 Scenario 18 文档 给出的官方 Chart 仓库方式执行以下三条命令# 1. 添加 Falcosecurity 官方 Helm 仓库 helm repo add falcosecurity https://falcosecurity.github.io/charts# 2. 更新本地仓库索引 helm repo update# 3. 安装 Falco helm install falco falcosecurity/falco部署成功后Falco 会以 Pod 的形式运行在集群中。接下来分两步验证部署状态并进入日志观测。查看 Falco 部署状态与日志先用标签选择器确认 Falco Pod 已就绪kubectl get pods --selector appfalco再手动抓取并跟随 Falco 的日志流这是后续观察安全事件的核心入口kubectl logs -f -l appfalco-f参数让终端持续输出新日志因此这一步建议保持挂起状态等攻击行为发生后回到该终端查看告警输出。Falco 的工作原理系统调用 → 规则引擎 → 告警按原文档的说明Falco 是一个云原生运行时安全项目被广泛视为 Kubernetes 威胁检测的事实标准引擎。它由 Sysdig 于 2016 年创建也是首个加入 CNCF 并达到孵化incubation级别的运行时安全项目。其核心定位是检测意外的应用行为并在运行时对威胁发出告警。具体到实现机制Falco 通过系统调用system calls来保护并监控系统工作流程分为三步在运行时解析内核发出的 Linux 系统调用Parsing the Linux system calls from the kernel at runtime将该事件流断言到一个强大的规则引擎上Asserting the stream against a powerful rules engine当规则被违反时发出告警Alerting when a rule is violated。这种内核行为流 规则匹配的架构意味着即使攻击者未留下明显的文件痕迹或日志记录只要其行为触发了内核中的敏感系统调用就会被规则集捕获——这正弥补了上一节提到的容器不可变导致传统工具失效的问题。Falco 默认规则集的检测范围Falco 自带一套默认规则用于检查内核层面是否出现异常行为。根据 Scenario 18 文档 的枚举默认规则覆盖的场景包括使用特权容器进行权限提升Privilege escalation using privileged containers使用setns等工具进行命名空间变更Namespace changes using tools likesetns对知名目录的读/写操作如/etc、/usr/bin、/usr/sbin等创建符号链接Creating symlinks文件属主Ownership与权限模式Mode的变更意外的网络连接或 socket 变更Unexpected network connections or socket mutations通过execve派生的进程Spawned processes using execve执行 shell 类二进制如sh、bash、csh、zsh等执行 SSH 类二进制如ssh、scp、sftp等篡改 Linux coreutils 可执行文件篡改登录login二进制篡改 shadowutils / passwd 类可执行文件如shadowconfig、pwck、chpasswd、getpasswd、change、useradd等。可以推断这套默认规则集恰好覆盖容器内最常见的后渗透动作读影子文件、起 shell、建外连、改系统工具这也是后文实验中读/etc/shadow能够被命中的原因。实验启动 hacker-container 模拟攻击行为Kubernetes Goat 提供了统一的攻击载体madhuakula/hacker-container一个基于 Alpine、内置常见安全评估工具的容器详见 Scenario 14 文档。在本场景中先启动一个临时的 hacker 容器kubectl run --rm --restartNever -it --imagemadhuakula/hacker-container -- bash参数说明--rmPod 结束退出后自动清理资源--restartNever容器退出后不重启保持一次性实验 Pod 的语义-it分配 TTY 并保持 stdin 打开进入交互式 shell末尾的bash是容器启动命令直接进入 bash。进入容器后执行本场景的攻击触发点——读取密码影子文件cat /etc/shadow/etc/shadow存放系统用户密码哈希属于典型的高敏感文件。在正常业务负载下容器进程几乎不会去读它因此某个容器执行了对/etc/shadow的读取这一行为本身就是一次值得告警的异常事件。验证结果Falco 的实时告警执行cat /etc/shadow后回到此前挂着kubectl logs -f -l appfalco的终端可以看到 Falco 已经在近实时时间内捕获到该行为并输出了检测告警——即原文档中HoorayFalco 检测到了这次事件并发出通知的结果。从源码结构看本场景的检测链路可以归纳为事件源hacker-container 内cat进程触发open/read等系统调用采集层Falco 在内核层捕获该 syscall 事件流规则匹配默认规则集中对知名目录/etc敏感文件的读取规则被违反告警输出事件经kubectl logs可见的 Falco 日志输出供安全人员分析。由于整个流程无需额外配置规则文件读者可以直接体验开箱即用的运行时检测能力若要进一步定制规则如按容器标签放行白名单可参考原文档提示查阅 Falco 官方文档进行深入学习。小结本场景完整走通了 Kubernetes 运行时安全监控的一条主线用Helm v3三条命令完成 Falco 的部署helm repo add→helm repo update→helm install falco falcosecurity/falco用kubectl get pods --selector appfalco与kubectl logs -f -l appfalco完成部署验证与日志跟随理解了 Falco 内核系统调用 → 规则引擎断言 → 违反即告警 的三段式检测原理及其默认规则集对特权容器、命名空间变更、敏感目录读写、shell/SSH 执行、系统工具篡改等行为的覆盖范围通过madhuakula/hacker-container容器执行cat /etc/shadow成功触发并观察到了 Falco 的近实时告警。作为 Kubernetes Goat 攻防演练体系中的一环Scenario 18 回答的问题是当集群里已经存在各种脆弱配置和攻击面时如何在运行时看见它们。结合项目内 K8s OWASP Top 10 映射该场景补齐了 K05日志与监控不足这一环节读者可在此基础上继续探索自定义规则与告警集成把能看见进一步升级为能响应。【免费下载链接】kubernetes-goatKubernetes Goat is a Vulnerable by Design cluster environment to learn and practice Kubernetes security using an interactive hands-on playground 项目地址: https://gitcode.com/GitHub_Trending/ku/kubernetes-goat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考