CKS 题库 12、Sysdig & falco
Task:
使用运行时检测工具来检测 Pod tomcat123 单个容器中频发生成和执行的异常进程。
有两种工具可供使用:
- sysdig
- falco
注: 这些工具只预装在 cluster 的工作节点 node02 上,不在 master 节点。
使用工具至少分析 30 秒 ,使用过滤器检查生成和执行的进程,将事件写到 /opt/KSR00101/incidents/summary 文件中,
其中包含检测的事件, 格式如下:
timestamp , uid/username , processName
保持工具的原始时间戳格式不变。
注: 确保事件文件存储在集群的工作节点上。
请注意,考试时,考题里已表明sysdig在工作节点上,所以你需要ssh到开头写的工作节点上。但在模拟环境,你需要ssh到node02这个工作节点。
解答:
切换集群
kubectl config use-context KSSC00401
切换到 node02 节点 使用root
ssh node02
sudo -i
找到containerd的socket
crictl info | grep sock
使用crictl命令找到容器,题目要求的是tomcat123,则grep tomcat123。
crictl ps | grep tomcat123
注意,考试时,你要通过上面命令grep pod name,然后你要记住的是container name。只是模拟环境里的pod name和container name一样,都是tomcat123。
通过 sysdig 扫描容器30s并输出到指定文件:
sysdig -h 和-l 查看帮助
注:可以使用 sysdig -l |grep time 过滤,确认输出格式字段
sysdig -l | grep time
sysdig -l | grep uid
sysdig -l | grep proc
开始扫描 (我目前想不到别的方法,只能将命令分成2条了,谁有更好的方法,可以分享一下。)
(container.name也可以换成container.id=7cb82fdbc1295。注意要写container name,而不是pod name,只是模拟环境里,pod name和container name一样,都是tomcat123)
sysdig -M 30 -p "%evt.time,%user.uid,%proc.name" --cri /run/containerd/containerd.sock container.name=tomcat123 >> /opt/KSR00101/incidents/summary
sysdig -M 30 -p "%evt.time,%user.name,%proc.name" --cri /run/containerd/containerd.sock container.name=tomcat123 >> /opt/KSR00101/incidents/summary
提示:如果考试时执行sysdig报错“Unable to load the driver”,则执行下面一条命令:(模拟环境里不需要执行)
#启用模块
sysdig-probe-loader
然后再次执行sysdig -M 30 ……
如果还是报错,就重装一下sysdig,命令为 apt install sysdig
查看保存的文件
cat /opt/KSR00101/incidents/summary |head