使用 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 并添加此配置。 <!—
Configure Kubernetes Audit
-->
配置 Kubernetes 审计
为 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
<!—
Start kube-apiserver with the following options:
--audit-policy-file=/etc/kubernetes/audit-policy.yaml --audit-webhook-config-file=/etc/kubernetes/audit-webhook-kubeconfig
--> 2. 使用以下选项启动 kube-apiserver:
```shell
--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审计事件。