容器运行时安全监控与攻击检测实战!

213 阅读4分钟

实时“盯梢”你的容器世界,防止未授权操作入侵生产环境!

在现代微服务架构中,容器替代了传统的物理机与虚拟机,承担起越来越多核心系统运行的职责。然而,相比传统环境,容器天生“开放、轻量、灵活”,也为攻击者提供了新的可乘之机。

这篇文章将聚焦在容器运行时的安全监控与威胁检测上,深入讲解如何通过开源工具如 Falco、Sysdig、Auditd 等,实现对容器行为的实时感知与违规行为的即时告警,从而构建一套强有力的 容器运行时安全防线


一、为什么需要运行时安全?

容器构建时做了安全扫描,还需要运行时监控吗?

当然需要!原因如下:

阶段风险类型是否可防御
构建阶段镜像包含漏洞、恶意文件✅ 可扫描
部署阶段镜像未签名、环境变量泄露✅ 可规范
运行阶段容器被提权、非法写入系统目录❌ 需实时监控

一旦镜像进入生产环境,即使是无漏洞的“干净”镜像,也可能被攻击者通过漏洞提权、逃逸、注入等手段破坏主机,甚至横向攻击其他服务。这就必须依靠运行时安全监控工具


二、运行时安全工具全景图

工具功能特点是否开源是否实时是否支持 Kubernetes
FalcoCNCF 项目,基于 syscall 规则监控
Sysdig与 Falco同源,主打商业版
AuditdLinux 原生命令审计工具,稳定可靠⛔(原生不支持 K8s)
AppArmorLinux MAC 控制方案,策略难以维护✅(依赖 Host 支持)

其中,Falco 是目前容器运行时检测的事实标准,由 Sysdig 贡献给 CNCF,其基于 eBPF/syscall 实现系统级行为监控,是最适合生产使用的开源方案。


三、Falco 工作原理与架构

3.1 系统调用层面拦截机制

Falco 会 hook 容器内的系统调用行为,如:

  • 文件访问:如访问 /etc/shadow、修改 /bin/sh
  • 网络行为:如监听端口、尝试外联
  • 用户行为:如创建新用户、执行 shell
  • 权限提升:如 cap_sys_admin 调用

这些行为被规则匹配后生成告警。

3.2 架构图


四、Falco 实战部署(Docker & K8s)

4.1 Docker 环境部署

docker run -d --name falco \
  --privileged \
  -v /var/run/docker.sock:/host/var/run/docker.sock \
  -v /proc:/host/proc:ro \
  -v /boot:/host/boot:ro \
  -v /lib/modules:/host/lib/modules:ro \
  -v /usr:/host/usr:ro \
  falcosecurity/falco:latest

注意:必须以 --privileged 运行,才能拦截 syscall。

4.2 Kubernetes 中部署

可使用 Helm 安装:

helm repo add falcosecurity https://falcosecurity.github.io/charts
helm install falco falcosecurity/falco

输出告警将自动打入容器日志,可通过 ELK、Loki 收集。


五、核心规则示例讲解

Falco 规则配置基于 YAML,具备强大的 DSL(领域特定语言)能力。

规则 1:检测容器内执行 shell

- rule: Shell In Container
  desc: Detect if a shell is run inside a container
  condition: container.id != host and proc.name in (bash,sh,zsh)
  output: "Shell spawned in container (user=%user.name command=%proc.cmdline)"
  priority: WARNING

规则 2:容器内修改敏感目录

- rule: Write Below Etc
  desc: Detect writes to /etc
  condition: evt.type=write and fd.name startswith /etc and container
  output: "Write detected below /etc directory in container"
  priority: CRITICAL

这些规则可自定义,适配业务敏感点。


六、告警输出与集成方案

Falco 支持多种告警方式:

输出方式使用场景
标准输出默认方式,可被收集器采集
文件输出落盘日志,供审计使用
gRPC/HTTP与自定义告警中心联动
Syslog与 ELK、Splunk 对接
Prometheus与 Grafana 可视化安全指标
Slack/Email实时告警推送

示例:Slack 实时推送

program_output:
  enabled: true
  program: "/etc/falco/send-to-slack.sh"

七、结合 Auditd 实现主机+容器的安全审计

Auditd 是 Linux 自带的系统审计工具,能精准记录文件读写、用户登录、系统配置修改等操作。

常用于合规要求较高的系统场景,如:

  • 操作审计
  • 身份权限变更记录
  • 文件访问审计

示例规则:监控 /etc/shadow

auditctl -w /etc/shadow -p wa -k shadow_watch

在 /var/log/audit/audit.log 中可查看日志。


八、最佳实践总结

安全措施推荐做法
运行时行为监控Falco + 自定义规则
敏感文件/路径变更审计Auditd + 持久日志存储
多层防御(host / 容器 / 网卡)AppArmor + Falco + 网络策略
告警集成与 Slack、Prometheus、ELK 等结合
DevSecOps 流程闭环构建阶段扫描 + 运行时告警反馈到开发

运行时安全防御流程图


九、结语

容器安全不只是镜像构建时的扫描,而是全生命周期的防护链条。运行时是最脆弱、最难监控的环节,也是攻击最频繁的目标。借助 Falco、Auditd 等工具,我们可以在不牺牲性能的前提下,最大程度提升容器在运行阶段的可见性与安全性。