file

Task: 使用运行时检测工具来检测 Pod tomcat123 单个容器中频发生成和执行的异常进程。 有两种工具可供使用:

  • sysdig
  • falco

注: 这些工具只预装在 cluster 的工作节点 node02 上,不在 master 节点。 使用工具至少分析 30 秒 ,使用过滤器检查生成和执行的进程,将事件写到 /opt/KSR00101/incidents/summary 文件中, 其中包含检测的事件, 格式如下: timestamp , uid/username , processName

file

保持工具的原始时间戳格式不变。 注: 确保事件文件存储在集群的工作节点上。

请注意,考试时,考题里已表明sysdig在工作节点上,所以你需要ssh到开头写的工作节点上。但在模拟环境,你需要ssh到node02这个工作节点。 file


解答:

切换集群

kubectl config use-context KSSC00401

切换到 node02 节点 使用root

ssh node02
sudo -i

找到containerd的socket

crictl info | grep sock

file

使用crictl命令找到容器,题目要求的是tomcat123,则grep tomcat123。 crictl ps | grep tomcat123

注意,考试时,你要通过上面命令grep pod name,然后你要记住的是container name。只是模拟环境里的pod name和container name一样,都是tomcat123。 file

通过 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