website/content/zh/docs/tasks/debug-application-cluster/falco.md

9.6 KiB
Raw Blame History

reviewers content_type title
soltysh
sttts
ericchiang
concept 使用 Falco 审计

使用 Falco 采集审计事件

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

安装 Falco

使用以下方法安装 Falco

  • [独立安装 Falco][falco_installation]
  • [Kubernetes DaemonSet][falco_installation]
  • [Falco Helm Chart][falco_helm_chart]

安装完成 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][falco_k8s_audit_rules] 中找到。如果审计规则是作为本机软件包安装或使用官方 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审计事件][falco_ka_docs]。

[auditing-api]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/staging/src/k8s.io/apiserver/pkg/apis/audit/v1/types.go [gce-audit-profile]: https://github.com/kubernetes/kubernetes/blob/{{< param "githubbranch" >}}/cluster/gce/gci/configure-helper.sh#L735 [kubeconfig]: /docs/tasks/access-application-cluster/configure-access-multiple-clusters/ [fluentd]: http://www.fluentd.org/ [fluentd_install_doc]: https://docs.fluentd.org/v1.0/articles/quickstart#step-1:-installing-fluentd [fluentd_plugin_management_doc]: https://docs.fluentd.org/v1.0/articles/plugin-management [logstash]: https://www.elastic.co/products/logstash [logstash_install_doc]: https://www.elastic.co/guide/en/logstash/current/installing-logstash.html [kube-aggregator]: /docs/concepts/api-extension/apiserver-aggregation [falco_website]: https://www.falco.org [falco_k8s_audit_rules]: https://github.com/falcosecurity/falco/blob/master/rules/k8s_audit_rules.yaml [falco_ka_docs]: https://falco.org/docs/event-sources/kubernetes-audit [falco_installation]: https://falco.org/docs/installation [falco_helm_chart]: https://github.com/falcosecurity/charts/tree/master/falco