Falco:服务器上发生的事,它都能看到

📅 2026/6/27 14:56:10
Falco:服务器上发生的事,它都能看到
文章目录Falco服务器上发生的事它都能看到1、 它解决什么问题2、 它怎么工作的3、 为什么不用 Go 写4、 怎么装怎么用5、 项目结构6、 适合谁用Falco服务器上发生的事它都能看到falco 在 GitHub 上有 9,000 多个 Star。这是 CNCF 的毕业项目最初由 Sysdig 团队开发。它干的事情很明确在 Linux 系统运行时实时监控内核级别的系统调用发现异常行为就报警。1、 它解决什么问题服务器被攻破的时候攻击者不会提前通知你。他们可能偷偷起了一个 reverse shell可能在容器里跑了挖矿程序可能往 Kubernetes 集群里注入了恶意 pod。传统的安全扫描是定期检查查的是快照。Falco 盯着内核的系统调用看到可疑行为的那一刻就触发告警。比如一个容器突然开始读/etc/shadow或者某个进程从没出现过却直接连了外网这些都会被它捕获。做过安全运维的人知道日志系统能告诉你发生了什么但前提是有人去翻那些日志。Falco 的逻辑是你不用翻我帮你盯着有问题我喊你。2、 它怎么工作的Falco 的核心是一个内核监控 agent。它通过内核驱动支持传统内核模块和现代 eBPF抓取系统调用事件然后拿用户定义的规则去匹配。规则的写法很直白。比如你想监控容器内有人跑了 shell写一条规则指定条件就行。Falco 自带一套默认规则集覆盖了常见的安全威胁场景异常进程启动、敏感文件读取、网络连接异常、权限提升等等。它还能对接容器运行时和 Kubernetes 的元数据。这意味着你不光知道有个进程读了某个文件还能知道是哪个容器里的、属于哪个 pod、跑在哪个节点上。3、 为什么不用 Go 写很多人好奇 Falco 为什么选 C 而不是 Go。官方给了很详细的解释核心原因有几个Falco 的执行模型是单线程顺序处理Go 的并发优势在这里用不上。它每秒要处理的系统调用事件量非常大需要在内存分配和性能上有深度控制Go 的垃圾回收机制会成为瓶颈。另外Falco 底层要和内核驱动打交道大量低级编程场景下 C 比 Go 更直接。虽然 C 在内存安全上不如 Go 省心但团队通过智能指针、地址消毒器、Valgrind 检测这些手段来弥补。4、 怎么装怎么用Falco 支持多种部署方式。最简单的是用 Helm chart 装到 Kubernetes 集群里helm repoaddfalcosecurity https://falcosecurity.github.io/charts helminstallfalco falcosecurity/falco也可以用 Docker 直接跑。项目提供了一个 docker-compose 配置把 Falco、Falcosidekick告警转发和 Falcosidekick UI 一起启动适合快速体验。本地开发的话从源码编译也不复杂。cmake 配置好依赖make 一下就行。官方文档有详细的构建指南。5、 项目结构Falco 不是一个单体仓库。它的代码分散在几个核心仓库里falcosecurity/libs 是核心库包含内核驱动和大部分底层代码。falcosecurity/rules 是官方规则集。falcosecurity/plugins 是插件系统能让 Falco 的能力扩展到系统调用之外。falcosecurity/falcoctl 是命令行管理工具。这种拆分让每个模块可以独立迭代。规则更新不用等 Falco 主版本发布插件开发也不需要动核心代码。6、 适合谁用在 Kubernetes 集群里跑生产 workload 的团队需要实时知道容器内发生了什么异常。做安全合规的团队需要运行时检测能力来满足审计要求。在用 SIEM 或数据湖做安全分析的团队Falco 的事件可以直接对接进去。它只管运行时正在发生的事静态分析和漏洞扫描不在它的职责范围内。分析的团队Falco 的事件可以直接对接进去。它只管运行时正在发生的事静态分析和漏洞扫描不在它的职责范围内。