介绍Falco Rule的系列 -创建敏感装置支架

在本系列中,我们将在一篇文章中简要介绍Falco作为运行时威胁检测的事实标准的检测规则。
如果你想了解运行时安全或Falco本身的概述,请参考这篇博客文章。
这次要介绍的检测规则是“创建敏感挂载Pod”。

规则描述

- rule: Create Sensitive Mount Pod
  desc: >
    Detect an attempt to start a pod with a volume from a sensitive host directory (i.e. /proc).
    Exceptions are made for known trusted images.
  condition: kevt and pod and kcreate and sensitive_vol_mount and not ka.req.pod.containers.image.repository in (falco_sensitive_mount_images)
  output: Pod started with sensitive mount (user=%ka.user.name pod=%ka.resp.name ns=%ka.target.namespace resource=%ka.target.resource images=%ka.req.pod.containers.image volumes=%jevt.value[/requestObject/spec/volumes])
  priority: WARNING
  source: k8s_audit
  tags: [k8s]

规则概述

通过安装 Kubernetes Audit Events Plugin 插件可以使用的规则。
大多数 Kubernetes 的安全问题都源自集群(包括控制平面和API、基础节点和Linux内核、以及网络)在多个租户之间共享。
容器能够访问宿主机的文件系统,这意味着能够获得对宿主机本身的控制权,也能够访问可能包含与其他容器相关数据的宿主机数据。这使恶意用户有可能操纵宿主环境,并有可能访问、篡改或删除文件系统中的数据。换句话说,这可能被利用于容器逃逸或对集群的其他部分发起攻击。
因此,保持容器与主机之间的隔离边界非常重要。使用此规则可以检测到Pod在主机上挂载了敏感目录(例如/proc)的情况。

Condition(条件)

Kevt和Pod以及Kcreate

敏感文件夹已挂载到主机上。 ​sì​ ​​

如果容器镜像不是允许挂载敏感目录的镜像

sensitive_vol_mount宏的内容如下。

- macro: sensitive_vol_mount
  condition: >
    (ka.req.pod.volumes.hostpath intersects (/proc, /var/run/docker.sock, /, /etc, /root, /var/run/crio/crio.sock, /run/containerd/containerd.sock, /home/admin, /var/lib/kubelet, /var/lib/kubelet/pki, /etc/kubernetes, /etc/kubernetes/manifests))

如果 Pod 的音量的主机路径属于以下任何一个目录:
(/proc,/var/run/docker.sock,/,/etc,/root,/var/run/crio/crio.sock,/run/containerd/containerd.sock,/home/admin,/var/lib/kubelet,/var/lib/kubelet/pki,/etc/kubernetes,/etc/kubernetes/manifests)

输出

挂载了敏感目录的Pod已经启动。

%ka.user.name

%ka.resp.name = K8s回应对象名称

K8s目标命名空间名称:%ka.target.namespace

Kubernetes Pod的容器映像名称是%ka.req.pod.containers.image。

%jevt.value[/requestObject/spec/volumes] 的卷名

广告
将在 10 秒后关闭
bannerAds