Kubernetes Hardening

Apoya a HackTricks

Herramientas para analizar un clúster

Kubescape es una herramienta de código abierto para K8s que proporciona una vista única de múltiples nubes de K8s, incluyendo análisis de riesgos, cumplimiento de seguridad, visualizador de RBAC y escaneo de vulnerabilidades de imágenes. Kubescape escanea clústeres de K8s, archivos YAML y gráficos HELM, detectando configuraciones incorrectas de acuerdo con múltiples marcos (como el NSA-CISA, MITRE ATT&CK®), vulnerabilidades de software y violaciones de RBAC (control de acceso basado en roles) en las primeras etapas del pipeline CI/CD, calcula el puntaje de riesgo al instante y muestra tendencias de riesgo a lo largo del tiempo.

kubescape scan --verbose

La herramienta kube-bench es una herramienta que verifica si Kubernetes está desplegado de manera segura al ejecutar las verificaciones documentadas en el CIS Kubernetes Benchmark. Puedes elegir:

  • ejecutar kube-bench desde dentro de un contenedor (compartiendo el espacio de nombres PID con el host)

  • ejecutar un contenedor que instale kube-bench en el host, y luego ejecutar kube-bench directamente en el host

  • instalar los últimos binarios desde la página de Releases,

  • compilarlo desde el código fuente.

La herramienta kubeaudit es una herramienta de línea de comandos y un paquete de Go para auditar clústeres de Kubernetes por diversas preocupaciones de seguridad.

Kubeaudit puede detectar si se está ejecutando dentro de un contenedor en un clúster. Si es así, intentará auditar todos los recursos de Kubernetes en ese clúster:

kubeaudit all

Esta herramienta también tiene el argumento autofix para arreglar automáticamente los problemas detectados.

La herramienta kube-hunter busca debilidades de seguridad en clústeres de Kubernetes. La herramienta fue desarrollada para aumentar la conciencia y visibilidad sobre los problemas de seguridad en entornos de Kubernetes.

kube-hunter --remote some.node.com

Kubei es una herramienta de escaneo de vulnerabilidades y de referencia CIS Docker que permite a los usuarios obtener una evaluación de riesgo precisa e inmediata de sus clústeres de Kubernetes. Kubei escanea todas las imágenes que se están utilizando en un clúster de Kubernetes, incluidas las imágenes de los pods de aplicación y los pods del sistema.

KubiScan es una herramienta para escanear clústeres de Kubernetes en busca de permisos riesgosos en el modelo de autorización de control de acceso basado en roles (RBAC) de Kubernetes.

Mkat es una herramienta diseñada para probar otros tipos de verificaciones de alto riesgo en comparación con otras herramientas. Principalmente tiene 3 modos diferentes:

  • find-role-relationships: Que encontrará qué roles de AWS se están ejecutando en qué pods.

  • find-secrets: Que intenta identificar secretos en los recursos de K8s como Pods, ConfigMaps y Secrets.

  • test-imds-access: Que intentará ejecutar pods y tratar de acceder a los metadatos v1 y v2. ADVERTENCIA: Esto ejecutará un pod en el clúster, ten mucho cuidado porque tal vez no quieras hacer esto.

Auditar Código IaC

Popeye es una utilidad que escanea clústeres de Kubernetes en vivo y informa sobre problemas potenciales con los recursos y configuraciones desplegadas. Sanitiza tu clúster en función de lo que está desplegado y no de lo que está en disco. Al escanear tu clúster, detecta configuraciones incorrectas y te ayuda a asegurar que las mejores prácticas estén en su lugar, evitando así futuros dolores de cabeza. Su objetivo es reducir la sobrecarga cognitiva que uno enfrenta al operar un clúster de Kubernetes en producción. Además, si tu clúster emplea un servidor de métricas, informa sobre posibles sobreasignaciones/subasignaciones de recursos y intenta advertirte si tu clúster se queda sin capacidad.

KICS encuentra vulnerabilidades de seguridad, problemas de cumplimiento y configuraciones incorrectas de infraestructura en las siguientes soluciones de Infraestructura como Código: Terraform, Kubernetes, Docker, AWS CloudFormation, Ansible, Helm, Microsoft ARM y especificaciones OpenAPI 3.0.

Checkov es una herramienta de análisis de código estático para infraestructura como código.

Escanea la infraestructura en la nube provisionada utilizando Terraform, plan de Terraform, Cloudformation, AWS SAM, Kubernetes, Dockerfile, Serverless o ARM Templates y detecta configuraciones incorrectas de seguridad y cumplimiento utilizando escaneo basado en gráficos.

kube-score es una herramienta que realiza análisis de código estático de tus definiciones de objetos de Kubernetes.

Para instalar:

Consejos

Kubernetes PodSecurityContext y SecurityContext

Puedes configurar el contexto de seguridad de los Pods (con PodSecurityContext) y de los contenedores que se van a ejecutar (con SecurityContext). Para más información, lee:

Endurecimiento de la API de Kubernetes

Es muy importante proteger el acceso al servidor API de Kubernetes ya que un actor malicioso con suficientes privilegios podría abusar de él y dañar el entorno de muchas maneras. Es importante asegurar tanto el acceso (blanquear orígenes para acceder al servidor API y denegar cualquier otra conexión) como la autenticación (siguiendo el principio de mínimo privilegio). Y definitivamente nunca permitir solicitudes anónimas.

Proceso común de solicitud: Usuario o K8s ServiceAccount –> Autenticación –> Autorización –> Control de Admisión.

Consejos:

  • Cerrar puertos.

  • Evitar acceso anónimo.

  • NodeRestriction; No acceso desde nodos específicos a la API.

  • Básicamente previene que los kubelets añadan/eliminar/modifiquen etiquetas con un prefijo node-restriction.kubernetes.io/. Este prefijo de etiqueta está reservado para que los administradores etiqueten sus objetos Node con fines de aislamiento de carga de trabajo, y los kubelets no podrán modificar etiquetas con ese prefijo.

  • Y también, permite a los kubelets añadir/eliminar/actualizar estas etiquetas y prefijos de etiquetas.

  • Asegurar con etiquetas el aislamiento seguro de la carga de trabajo.

  • Evitar que pods específicos accedan a la API.

  • Evitar la exposición del ApiServer a Internet.

  • Evitar acceso no autorizado RBAC.

  • Puerto del ApiServer con firewall y blanqueo de IP.

Endurecimiento de SecurityContext

Por defecto, se utilizará el usuario root cuando se inicie un Pod si no se especifica otro usuario. Puedes ejecutar tu aplicación dentro de un contexto más seguro utilizando una plantilla similar a la siguiente:

apiVersion: v1
kind: Pod
metadata:
name: security-context-demo
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
volumes:
- name: sec-ctx-vol
emptyDir: {}
containers:
- name: sec-ctx-demo
image: busybox
command: [ "sh", "-c", "sleep 1h" ]
securityContext:
runAsNonRoot: true
volumeMounts:
- name: sec-ctx-vol
mountPath: /data/demo
securityContext:
allowPrivilegeEscalation: true

Endurecimiento General

Deberías actualizar tu entorno de Kubernetes con la frecuencia necesaria para tener:

  • Dependencias actualizadas.

  • Correcciones de errores y de seguridad.

Ciclos de lanzamiento: Cada 3 meses hay un nuevo lanzamiento menor -- 1.20.3 = 1(Mayor).20(Menor).3(parche)

La mejor manera de actualizar un clúster de Kubernetes es (desde aquí):

  • Actualiza los componentes del nodo maestro siguiendo esta secuencia:

  • etcd (todas las instancias).

  • kube-apiserver (todos los hosts del plano de control).

  • kube-controller-manager.

  • kube-scheduler.

  • cloud controller manager, si usas uno.

  • Actualiza los componentes del nodo trabajador como kube-proxy, kubelet.

Support HackTricks

Last updated