CKS考试实战:用Falco揪出K8s集群里偷偷改/etc/passwd的Pod(附排查命令)
1. 容器运行时安全的核心挑战
在Kubernetes安全领域,运行时安全监控是防御纵深体系中的最后一道防线。当攻击者突破网络策略、镜像扫描、Pod安全策略等多重防护后,实时行为检测成为关键的安全兜底手段。Falco作为CNCF孵化的开源运行时安全工具,能够通过内核模块或eBPF程序捕获系统调用事件,实现以下核心能力:
- 敏感文件监控:检测对/etc/passwd、/etc/shadow等关键文件的修改
- 异常进程行为:识别容器内包管理操作、特权提升等可疑行为
- 网络活动分析:监控非常规端口监听、DNS查询等网络活动
# Falco默认规则示例(监控/etc/passwd写入) - rule: Modify password file desc: Detect attempts to modify password files condition: > open_write and container and (fd.name startswith /etc/passwd or fd.name startswith /etc/shadow) output: > Sensitive file modified (user=%user.name file=%fd.name) priority: CRITICAL2. CKS考试中的Falco实战场景
2.1 攻击场景还原
在CKS认证考试中,通常会模拟以下攻击场景:
- 横向移动攻击:攻击者通过漏洞获取容器shell后,尝试修改/etc/passwd添加后门账户
- 供应链攻击:被篡改的镜像在运行时执行apt-get等包管理操作
- 权限提升攻击:容器内进程尝试挂载宿主机目录
# 攻击者常用命令示例(考试中需检测) echo "hacker:x:0:0:root:/root:/bin/bash" >> /etc/passwd apt-get update && apt-get install nmap -y mount /dev/sda1 /mnt2.2 Falco日志分析流程
当考试题目要求调查可疑活动时,应按以下步骤操作:
SSH登录目标节点:
ssh cluster1-worker1检查Falco服务状态:
systemctl status falco journalctl -u falco -n 50 --no-pager过滤关键事件:
# 查找/etc/passwd修改事件 cat /var/log/syslog | grep falco | grep passwd # 查找包管理操作 cat /var/log/syslog | grep falco | grep "Package management"格式化输出日志(考试常见要求):
# 提取时间、容器ID、容器名、用户名(逗号分隔) falco | grep "File below /etc" | awk '{print $1,$2,$3,$15,$17}' | sed 's/ /,/g' > /opt/course/2/falco.log
3. 应急响应与威胁处置
3.1 定位问题Pod
通过Falco日志获取容器ID后,需要关联到具体Pod:
# 根据容器ID查找对应Pod docker ps | grep <container_id> kubectl get pods -A -o wide | grep <pod_name>3.2 快速处置方案
CKS考试中通常要求通过调整副本数终止恶意Pod:
# 找到控制Pod的Deployment kubectl get deploy -A | grep <pod_prefix> # 将副本数降为0 kubectl -n <namespace> scale deploy <deployment> --replicas=03.3 根本解决方案
在实际生产环境中,还需实施以下加固措施:
Pod安全策略:
apiVersion: policy/v1beta1 kind: PodSecurityPolicy metadata: name: restricted spec: readOnlyRootFilesystem: true allowedHostPaths: - pathPrefix: "/tmp"网络策略限制:
apiVersion: networking.k8s.io/v1 kind: NetworkPolicy metadata: name: deny-metadata-access spec: podSelector: {} policyTypes: - Egress egress: - to: - ipBlock: cidr: 0.0.0.0/0 except: - 169.254.169.254/32 # 阻止访问云元数据
4. Falco高级配置技巧
4.1 自定义规则开发
针对考试特殊需求,可能需要修改Falco规则:
# 自定义规则示例(监控特定命名空间) - rule: Suspicious Activity in Production desc: Detect sensitive operations in prod namespace condition: > container.image.repository contains "prod" and (spawned_process or open_write) output: > Prod namespace suspicious activity (user=%user.name cmd=%proc.cmdline) priority: WARNING4.2 性能优化建议
在大规模集群中需注意:
# 限制Falco事件速率 sysctl -w falco.rate_limit=50 sysctl -w falco.rate_limit_interval=15. 考试实用命令速查表
| 场景 | 命令 |
|---|---|
| 检查Falco安装 | `rpm -qa |
| 查看内核模块 | `lsmod |
| 测试规则语法 | falco -V -c /etc/falco/falco.yaml |
| 实时事件监控 | falco -A -o json |
| 查找恶意容器 | docker inspect --format '{{.Name}}' <container_id> |
注意:考试时需严格按题目要求的格式输出结果,避免因格式错误失分
6. 典型错误排查案例
问题现象:Falco无事件输出
排查步骤:
- 检查内核头文件是否匹配:
uname -rvs/lib/modules/ - 验证驱动加载:
dmesg | grep falco - 测试简单规则:临时添加
- rule: Test Rule触发已知事件
解决方案:
# 重新编译内核模块 falco-driver-loader bpf systemctl restart falco通过掌握这些实战技巧,考生能够在CKS考试中快速定位容器安全事件,并按照最佳实践进行有效处置。Falco作为Kubernetes安全生态中的重要组件,其熟练使用是认证考试的关键得分点之一。