Kubernetes Hardening
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Kubescape es una herramienta de código abierto para K8s que proporciona una vista única de K8s en múltiples nubes, 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.
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:
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.
Kubei es una herramienta de escaneo de vulnerabilidades y de referencia de 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 recursos de K8s como Pods, ConfigMaps y Secrets.
test-imds-access
: Que intentará ejecutar pods y 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.
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 sobre/infraasignaciones 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:
Binarios preconstruidos para macOS, Linux y Windows
Docker
docker pull zegl/kube-score
(Docker Hub)
Homebrew (macOS y Linux)
brew install kube-score
Krew (macOS y Linux)
kubectl krew install score
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:
Kubernetes SecurityContext(s)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 (whitelist de orígenes para acceder al servidor API y denegar cualquier otra conexión) como la autenticación (siguiendo el principio de mínimos privilegios). 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; Sin 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 lista blanca de IP.
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:
Deberías actualizar tu entorno de Kubernetes con la frecuencia necesaria para tener:
Dependencias actualizadas.
Correcciones de errores y parches 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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)