Este artículo explora cómo proteger los clústeres de producción de Kubernetes con la ayuda de herramientas de código abierto. Como requisito previo, deberá tener conocimientos básicos de nivel principiante de Docker y Kubernetes.
En pocas palabras, Kubernetes es una herramienta de orquestación de contenedores y Docker es una plataforma de contenedores. Algunos de los clústeres de Kubernetes más famosos administrados por proveedores de la nube incluyen AWS EKS, Azure AKS y Google CKE.
En las siguientes secciones, analizaremos varias herramientas de código abierto que son útiles para proteger los clústeres de Kubernetes incluidos fragmentos de código que ayudarán con el escaneo estático de imágenes de Docker, la auditoría de seguridad, el fortalecimiento de los clústeres de Kubernetes y la implementación de la seguridad en tiempo de ejecución.
Escaneo estático de imágenes Docker
Dockerfile es un archivo de texto sin formato que contiene un conjunto de instrucciones que proporciona las especificaciones para crear una imagen de Docker. Además, los contenedores son las instancias en ejecución de las imágenes de Docker y Kubernetes admite el tiempo de ejecución de Docker.
Se recomienda encarecidamente escanear las imágenes de Docker en busca de vulnerabilidades de seguridad antes de enviarlas a un entorno de tiempo de ejecución de Kubernetes. Esto lo ayudará a evitar ataques a la cadena de suministro y mejorará la seguridad al desplazarse hacia la izquierda.
docker scan
Docker Engine ahora ha integrado las capacidades de escaneo de Synk para identificar vulnerabilidades en las imágenes. El resultado del análisis es la lista de CVE y recomendaciones.
A continuación se encuentran las herramientas de código abierto que se pueden usar para realizar escaneos de seguridad que se pueden integrar en su canalización de CI/CD para escanear las imágenes mientras construye sus aplicaciones:
- Trivy , una herramienta de escaneo que proporciona detección de vulnerabilidades para sistemas operativos
- Clair , una herramienta de análisis de vulnerabilidades estáticas para contenedores
- Kube-bench , una herramienta que determina si Kubernetes se implementa de manera óptima
- kubeaudit , una herramienta que audita las implementaciones de Kubernetes contra los controles de seguridad comunes
- Kubescape , una herramienta que verifica si Kubernetes se implementa de acuerdo con los principales marcos de cumplimiento
- kube-hunter , una herramienta de prueba de penetración que descubre y explota vulnerabilidades
- Sysdig Falco , una solución de seguridad en tiempo de ejecución para la detección de riesgos y amenazas en los clústeres de Kubernetes
1. Detección de vulnerabilidades con Trivy
Trivy es una herramienta de escaneo de código abierto que es una excelente opción para los equipos que buscan implementar pruebas de seguridad de aplicaciones estáticas y escaneos rápidos. Proporciona detección integral de vulnerabilidades para sistemas operativos, infraestructura como archivos de código y paquetes de idioma y también se utiliza para detectar problemas de configuración. Trivy también actualiza automáticamente su base de datos de vulnerabilidades
Después de realizar un análisis Trivy, obtendrá una lista de vulnerabilidades, su gravedad y un número CVE, si existe.
Instalación
Este script descargará e instalará Trivy según su sistema operativo.
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin v0.21.1
Escaneo y salida
trivy image --severity CRITICAL,HIGH apache/airflow:3.4-alpine
El comando anterior analiza las imágenes de Apache Airflow en busca de vulnerabilidades de gravedad CRÍTICA Y ALTA. Una vez completado, el informe de escaneo se ve así:
Para obtener más información sobre el uso de una política OPA con Trivy para manejar las vulnerabilidades de los contenedores, consulte esto .
2. Análisis estático de vulnerabilidad con Clair
Clair es una herramienta de análisis estático de vulnerabilidades de código abierto para contenedores. La herramienta tiene múltiples modos de implementación y es más adecuada para alta escalabilidad y disponibilidad. Clair es compatible con las API REST y proporciona informes de escaneo HTML. Amazon Elastic Container Registry (Amazon ECR) utiliza la base de datos CVE del proyecto Clair y proporciona una lista de hallazgos.
Instalación y escaneo
En este ejemplo, usamos la arminc/clair-db
imagen de Docker que está precargada con datos CVE. clair-scanner
se conectará con el terminal de Clair a través de la red local.
docker run -d --name db arminc/clair-db:latest
docker run -d --link db:postgres --name clair arminc/clair-local-scan:v2.0.6
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock --network=container:clair ovotech/clair-scanner clair-scanner --threshold='Critical' apache/airflow:2.0.2
Una vez que se completa un escaneo de Clair, verá algo como esto:
También puede obtener los informes de salida en formato JSON si lo prefiere.
En la mayoría de las situaciones, la mejor solución para resolver las vulnerabilidades informadas por Clair es actualizar el sistema operativo subyacente con el administrador de paquetes incorporado o actualizar a la última versión de sus imágenes de Docker. Si el volumen de paquetes vulnerables es demasiado para administrar, considere usar una imagen base sin distribución .
Protección y auditoría de su implementación de Kubernetes
Para mejorar la postura de seguridad de Kubernetes, debe auditar regularmente su implementación y realizar escaneos de seguridad en la configuración según los puntos de referencia de seguridad. Esta sección se trata de auditar y asegurar sus clústeres de Kubernetes utilizando varias herramientas de código abierto.
3. Evaluación comparativa de CIS con Kube-bench
Kube-bench es una herramienta de código abierto que verifica si Kubernetes se implementa de manera óptima de acuerdo con CIS Kubernetes Benchmark , que contiene un conjunto de mejores prácticas de seguridad de Kubernetes. Como tal, kube-bench es mejor cuando se requiere escanear solo con fines de evaluación comparativa de CIS.
Puede ejecutar kube-bench dentro de un pod. El repositorio de GitHub contiene job-<cloud_provider>.yaml
archivos específicos de la nube y kube-bench determinará automáticamente qué conjunto de pruebas se ejecutará en función de la versión de Kubernetes que se ejecute en la máquina.
Correr kube-banco
git clone https://github.com/aquasecurity/kube-bench.git
cd kube-bench
kubectl apply -f job.yaml
Para mitigar cualquier problema con los informes de kube-bench, consulte la documentación oficial de evaluación comparativa de Kubernetes CIS , que contiene detalles e instrucciones de corrección para cada hallazgo.
4. Auditoría de Kubernetes con kubeaudit
Creado por Shopify, kubeaudit es una herramienta de código abierto que audita las implementaciones de Kubernetes contra controles de seguridad comunes como:
- ejecutar como no root
- usar un sistema de archivos raíz de solo lectura
- elimine las capacidades aterradoras, no agregue otras nuevas
- no corras privilegiado
Instalación y ejecución
go get -v github.com/Shopify/kubeaudit
Kubeaudit puede ejecutarse en tres modos diferentes: manifiesto, clúster y local. También puede corregir automáticamente el manifiesto, lo que lo diferencia de otros competidores.
Ejecución en modo de manifiesto : en este modo, debe proporcionar el archivo de manifiesto del recurso de Kubernetes relevante.
kubeaudit all -f "/path/to/manifest.yml"
kubeaudit autofix -f "/path/to/manifest.yml"
Una vez hecho esto, verás algo como esto:
Ejecución en modo de clúster : si kubeaudit se ejecuta dentro de un contenedor en un clúster, auditará automáticamente todos los recursos en ese clúster.
kubeaudit all
Ejecución en modo local : cuando kubeaudit se ejecuta en una máquina local, intentará conectarse al clúster de Kubernetes obteniendo detalles del archivo $HOME/.kube/config de forma predeterminada. Además, también puede proporcionar una ruta para la configuración de Kube:
kubeaudit all -f "/path/to/config"
Además, kubeaudit tiene múltiples perfiles de auditoría, incluidos apparmor, capacidades, límites, privilegiados, rootfs, seccomp, netpols y asat.
5. Pruebas de seguridad con Kubescape
Kubescape es una herramienta de código abierto que verifica si Kubernetes se implementa de acuerdo con casi todos los principales marcos de cumplimiento, incluidos NSA-CISA y MITRE ATT&CK®, así como las mejores prácticas de DevSecOps . Kubescape también se puede integrar con herramientas de CI.
Instalación
curl -s https://raw.githubusercontent.com/armosec/kubescape/master/install.sh | /bin/bash
Correr
kubescape scan framework mitre --submit --format json --output results.json
kubescape scan framework nsa --submit --include-namespaces development,staging,production
Después de ejecutar Kubescape, debería ver algo como esto:
6. Pruebas de penetración con kube-hunter
Escrito en Python, kube-hunter es una herramienta de prueba de penetración de código abierto que le permite escribir módulos personalizados que se pueden ejecutar desde máquinas locales, dentro del clúster y de forma remota tanto en modo activo como pasivo.
En modo activo, kube-hunter descubrirá y explotará aún más cualquier vulnerabilidad.
pip install kube-hunter # Installing Kube-hunter.
kube-hunter --remote some.node.com # Running remotely.
kube-hunter --cidr 192.168.0.0/24. # Network Scanning.
kube-hunter --remote some.domain.com --active # Active Mode.
kube-hunter --list --active # List of test cases.
kube-hunter --remote some.node.com --json # Json output
kube-hunter --k8s-auto-discover-nodes --kubeconfig "/path/config"
Además, también puede ejecutar kube-hunter en un entorno de prueba como un módulo malicioso que puede actuar como una simulación de ataque real.
Las tres herramientas anteriores (kubeaudit, Kubescape y kube-hunter) proporcionan cada una un informe detallado sobre configuraciones incorrectas, vulnerabilidades, comprobaciones faltantes, prácticas inseguras y más. Se recomienda encarecidamente seguir algunas pautas de refuerzo de seguridad de Kubernetes para mejorar su postura de seguridad con el tiempo y validarla con estas herramientas. Para obtener más información, consulte la guía de endurecimiento de Kubernetes publicada recientemente por la NSA y la CISA .
7. Seguridad en tiempo de ejecución con Sysdig Falco
Sysdig Falco es una solución de seguridad en tiempo de ejecución de código abierto que se utiliza para la detección continua de riesgos y amenazas en los clústeres de Kubernetes. La herramienta actúa como una cámara de seguridad que detecta continuamente comportamientos inesperados, cambios de configuración, intrusiones y robo de datos en tiempo real. Actualmente, Sysdig Falco es la única solución de código abierto aprobada por CNCF para la seguridad en tiempo de ejecución de Kubernetes.
Falco, que le permite escribir complementos personalizados y tiene todas las características principales que se encuentran en sus competidores comerciales (por ejemplo, Aquasec y Twistlock), consume el flujo sin procesar de información de llamadas al sistema utilizando unidades como un módulo kernel o una sonda eBPF. Falco puede ejecutarse como un demonio en los nodos de Kubernetes, donde puede monitorear y transmitir alertas de seguridad en tiempo real en formato JSON a través de stdout, enlaces HTTP y syslog.
Instalación con HELM
Puede instalar el daemonset Sysdig Falco con parámetros personalizados utilizando un gráfico de Helm :
helm repo add falcosecurity https://falcosecurity.github.io/charts
helm repo update
helm install falco -f values.yaml falcosecurity/falco
Normas de seguridad de Falco
Falco proporciona más de 80 reglas de seguridad predeterminadas para la seguridad del tiempo de ejecución, las auditorías del plano de control de Kubernetes y la seguridad de las aplicaciones. Puede personalizar las reglas basadas en YAML proporcionadas de acuerdo con sus propios requisitos. Aquí hay una tabla que explica algunas de las reglas más comunes:
Nombre de la regla | Etiquetas |
Detección de CryptoJacking | Inglete |
Leer archivo confidencial no confiable | Monitoreo de integridad de archivos |
Lanzamiento de Contenedores Privilegiados | CEI |
Herramienta de red sospechosa en contenedor | Red, Inglete |
Inicie las herramientas de copia de archivos remotos en el contenedor | exfiltración |
Conclusión
Como puede ver, existe un ecosistema muy rico de herramientas de código abierto que puede usar para mejorar la seguridad de Kubernetes. Hay varias herramientas disponibles en GitHub que le permiten realizar escaneos automatizados, integraciones de CI, seguridad en tiempo de ejecución, pruebas de penetración y controles de auditoría. Utilice este artículo como guía de referencia a medida que implementa su programa de seguridad de Kubernetes y mantiene sus aplicaciones, redes y datos seguros.
Entusiasta de la seguridad cibernética. Especialista en seguridad de la información, actualmente trabajando como especialista en infraestructura de riesgos e investigador.
Experiencia en procesos de riesgo y control, soporte de auditoría de seguridad, diseño y soporte de COB (continuidad del negocio), gestión de grupos de trabajo y estándares de seguridad de la información.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/.
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad