如何使用Falco监控Docker镜像?含Ubuntu测试与AWS Fargate部署需求
在Ubuntu上用Falco监控Docker镜像的步骤
1. 安装Falco及Docker插件
- 添加Falco软件源并安装:
curl -fsSL https://download.falco.org/packages/deb/public.key | sudo 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" | sudo tee /etc/apt/sources.list.d/falco.list sudo apt update && sudo apt install falco -y - 安装Docker监控插件:
sudo falcoctl plugin install falcosecurity/docker
2. 配置监控规则
- 编辑Falco主配置文件
/etc/falco/falco.yaml,启用Docker插件:
在plugins段添加:plugins: - name: docker library_path: libdocker.so init_config: {} open_params: "unix:///var/run/docker.sock" - 自定义镜像监控规则,创建
/etc/falco/rules/docker-image-rules.yaml:- rule: 非授权Docker镜像拉取 desc: 检测拉取未批准的Docker镜像行为 condition: evt.type = "pull" and docker.image.repository !~ "^(你的批准仓库/.*|docker.io/ubuntu:.*)$" output: "检测到非授权镜像拉取(用户=%user.name, 镜像=%docker.image.repository:%docker.image.tag)" priority: WARNING tags: [docker, image, compliance] - 重启Falco加载配置:
sudo systemctl restart falco
3. 验证监控效果
- 拉取测试镜像触发规则:
docker pull alpine:latest - 查看Falco告警日志:
sudo journalctl -u falco -f
AWS Fargate部署Falco监控要点
Fargate不支持内核模块,需用eBPF用户态模式部署:
1. 准备Falco容器镜像
- 自定义镜像(可选),Dockerfile示例:
FROM falcosecurity/falco:latest RUN falcoctl plugin install falcosecurity/docker COPY ./docker-image-rules.yaml /etc/falco/rules/ - 构建并推送到AWS ECR:
aws ecr create-repository --repository-name falco-fargate docker build -t falco-fargate . docker tag falco-fargate:latest <你的AWS账号ID>.dkr.ecr.<区域>.amazonaws.com/falco-fargate:latest aws ecr get-login-password | docker login --username AWS --password-stdin <你的AWS账号ID>.dkr.ecr.<区域>.amazonaws.com docker push <你的AWS账号ID>.dkr.ecr.<区域>.amazonaws.com/falco-fargate:latest
2. 配置Fargate任务定义
- 网络模式选择
awsvpc(Fargate默认) - 挂载卷:将主机的
/var/run/docker.sock挂载到容器内同路径 - 环境变量:设置
FALCO_BPF_PROBE=""启用eBPF用户态模式 - IAM角色:赋予Falco访问CloudWatch Logs的权限,用于推送告警日志
- 日志配置:指定CloudWatch Logs作为日志驱动
3. 部署并验证
- 通过CLI启动Fargate任务:
aws ecs run-task --cluster <你的集群名> --task-definition falco-fargate --launch-type FARGATE --network-configuration "awsvpcConfiguration={subnets=[<子网ID>],securityGroups=[<安全组ID>],assignPublicIp=ENABLED}" - 登录CloudWatch Logs查看Falco的告警日志,确认监控正常
内容的提问来源于stack exchange,提问作者RAUL RODRIGUEX
相关产品推荐
相关产品推荐

