搬瓦工 VPS Falco 运行时安全监控教程
Falco 是由 Sysdig 创建并捐赠给 CNCF 的云原生运行时安全工具。它通过监控 Linux 内核的系统调用来实时检测容器和主机上的异常行为,包括意外的进程执行、可疑的文件访问、异常的网络连接等。与 Trivy 等构建时扫描工具不同,Falco 专注于运行时的行为监控,能够发现镜像扫描无法覆盖的动态攻击行为。
一、安装 Falco
1.1 包管理器安装
# 添加仓库
curl -fsSL https://falco.org/repo/falcosecurity-packages.asc | gpg --dearmor -o /usr/share/keyrings/falco-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/falco-archive-keyring.gpg] https://download.falco.org/packages/deb stable main" > /etc/apt/sources.list.d/falcosecurity.list
apt update
# 安装 Falco(使用现代 eBPF 驱动)
apt install falco -y
# 启动服务
systemctl start falco
systemctl enable falco
1.2 Docker 部署
docker run -d \
--name falco \
--restart always \
--privileged \
-v /var/run/docker.sock:/host/var/run/docker.sock \
-v /proc:/host/proc:ro \
-v /etc:/host/etc:ro \
falcosecurity/falco:latest
二、默认检测规则
Falco 内置了丰富的检测规则,覆盖常见的安全威胁:
- 容器内启动交互式 Shell
- 容器内读取敏感文件(/etc/shadow、/etc/passwd)
- 容器内执行特权操作
- 异常的出站网络连接
- 系统关键目录的写入操作
- 新进程的可疑行为(如挖矿程序特征)
# 查看默认规则文件
cat /etc/falco/falco_rules.yaml
# 查看本地自定义规则
cat /etc/falco/falco_rules.local.yaml
三、自定义规则
cat >> /etc/falco/falco_rules.local.yaml <<'EOF'
# 检测容器内的反弹 Shell
- rule: Reverse Shell in Container
desc: Detect reverse shell connections from containers
condition: >
container and
evt.type=connect and
fd.typechar='4' and
fd.ip != "0.0.0.0" and
proc.name in (bash, sh, dash, zsh, nc, ncat)
output: >
Reverse shell detected (container=%container.name
command=%proc.cmdline connection=%fd.name
user=%user.name image=%container.image.repository)
priority: CRITICAL
tags: [container, network, shell]
# 检测容器内安装软件包
- rule: Package Manager in Container
desc: Detect package manager execution in container
condition: >
container and
spawned_process and
proc.name in (apt, apt-get, yum, dnf, apk, pip, npm)
output: >
Package manager executed in container (container=%container.name
command=%proc.cmdline user=%user.name)
priority: WARNING
tags: [container, process]
# 检测挖矿程序
- rule: Crypto Mining Activity
desc: Detect crypto mining related processes
condition: >
spawned_process and
(proc.name in (xmrig, minerd, cpuminer, minergate) or
proc.cmdline contains "stratum+tcp" or
proc.cmdline contains "pool.mining")
output: >
Crypto mining detected (command=%proc.cmdline
container=%container.name user=%user.name)
priority: CRITICAL
tags: [cryptomining, process]
EOF
# 重新加载规则
systemctl restart falco
四、查看告警
# 实时查看 Falco 告警
journalctl -u falco -f
# 查看日志文件
tail -f /var/log/falco/falco.log
# 以 JSON 格式输出告警
# 编辑 /etc/falco/falco.yaml
# json_output: true
# json_include_output_property: true
五、告警通知集成
5.1 使用 Falcosidekick 转发告警
docker run -d \
--name falcosidekick \
--restart always \
-p 2801:2801 \
-e SLACK_WEBHOOKURL=https://hooks.slack.com/services/xxx \
-e SMTP_HOSTPORT=smtp.gmail.com:587 \
-e SMTP_FROM=falco@example.com \
-e SMTP_TO=admin@example.com \
-e SMTP_USER=your_email@gmail.com \
-e SMTP_PASSWORD=your_app_password \
falcosecurity/falcosidekick:latest
5.2 配置 Falco 输出到 Falcosidekick
# 在 /etc/falco/falco.yaml 中配置
# http_output:
# enabled: true
# url: http://127.0.0.1:2801
六、性能优化
- 使用现代 eBPF 驱动替代传统的内核模块,更稳定也更安全。
- 合理设置规则优先级,避免低优先级规则产生过多告警。
- 使用条件排除可信进程,减少误报。
- Falco 通常占用 100-200MB 内存和少量 CPU。
七、测试检测能力
# 触发"容器内启动 Shell"规则
docker exec -it some-container /bin/bash
# 触发"读取敏感文件"规则
docker exec some-container cat /etc/shadow
# 查看 Falco 是否产生告警
journalctl -u falco --since "1 minute ago"
总结
Falco 填补了容器运行时安全监控的空白,与构建时的 Trivy 扫描和部署时的 Cosign 签名验证一起,构成了完整的容器安全生命周期管理。在搬瓦工 VPS 上部署 Falco 可以实时发现容器中的可疑活动。选购搬瓦工 VPS 请参考 全部方案,购买时使用优惠码 NODESEEK2026 可享受 6.77% 的折扣,通过 bwh81.net 进入官网购买。