Edit This Page

使用 Falco 审计

使用 Falco 采集审计事件

Falco是一个开源项目,用于为云原生平台提供入侵和异常检测。本节介绍如何设置 Falco、如何将审计事件发送到 Falco 公开的 Kubernetes Audit 端点、以及 Falco 如何应用一组规则来自动检测可疑行为。

安装 Falco

使用以下方法安装 Falco :

安装完成 Falco 后,请确保将其配置为公开 Audit Webhook。为此,请使用以下配置:

webserver:
   enabled: true
   listen_port: 8765
   k8s_audit_endpoint: /k8s_audit
   ssl_enabled: false
   ssl_certificate: /etc/falco/falco.pem

此配置通常位于 /etc/falco/falco.yaml 文件中。如果 Falco 作为 Kubernetes DaemonSet 安装,请编辑 falco-config ConfigMap 并添加此配置。

配置 Kubernetes 审计

  1. kube-apiserver webhook 审计后端创建一个kubeconfig文件。

     cat <<EOF > /etc/kubernetes/audit-webhook-kubeconfig
     apiVersion: v1
     kind: Config
     clusters:
     - cluster:
         server: http://<ip_of_falco>:8765/k8s_audit
       name: falco
     contexts:
     - context:
         cluster: falco
         user: ""
       name: default-context
     current-context: default-context
     preferences: {}
     users: []
     EOF
    
  1. 使用以下选项启动 kube-apiserver

    --audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig
    

审计规则

专门用于 Kubernetes 审计事件的规则可以在 k8s_audit_rules.yaml 中找到。如果审计规则是作为本机软件包安装或使用官方 Docker 镜像安装的,则 Falco 会将规则文件复制到 /etc/falco/ 中以便使用。

共有三类规则。

第一类规则用于查找可疑或异常活动,例如:

-未经授权或匿名用户的任何活动。 -创建使用未知或不允许的镜像的 pod。 -创建特权 Pod,从主机安装敏感文件系统的 Pod 或使用主机网络的 Pod。 -创建 NodePort 服务。 -创建包含私有证书(例如密码和云提供商 secrets )的 ConfigMap。 -在正在运行的 Pod 上附加或执行命令。 -在一组允许的名称空间之外创建一个名称空间。 -在 kube-system 或 kube-public 命名空间中创建 pod 或服务帐户。 -尝试修改或删除系统 ClusterRole。 -创建一个 ClusterRoleBinding 到 cluster-admin 角色。 -创建 ClusterRole 时在动词或资源中使用通配符。 例如,过度赋权。 -创建具有写权限的 ClusterRole 或可以在 Pod 上执行命令的 ClusterRole。

第二类规则跟踪正在创建或销毁的资源,包括:

  • Deployments
  • Services
  • ConfigMaps
  • Namespaces
  • Service accounts
  • Role/ClusterRoles
  • Role/ClusterRoleBindings

最后一类规则仅负责显示 Falco 收到的所有审核事件。默认情况下,此规则是禁用的,因为它可能会很吵。

有关更多详细信息,请参阅 Falco 文档中的Kubernetes审计事件