En este artículo, se detalla la instrumentación y las herramientas que se usan en el análisis forense de las apps implementadas en Google Kubernetes Engine (GKE).
La creación y el mantenimiento de un entorno seguro para el código, las apps y la infraestructura es una prioridad alta para cualquier organización. Si se produce un incidente de seguridad, es fundamental saber cómo investigarlo y responder ante él.
Google Cloud simplifica la protección de las apps de GKE, ya que proporciona funciones de seguridad avanzadas para proteger el clúster y el entorno de Google Cloud. Los registros de auditoría de Cloud proporcionan registros detallados que puedes usar en análisis forenses. En conjunto, las funciones y los registros de seguridad avanzados proporcionan una plataforma sólida que ayuda a proteger las apps de GKE de tu organización.
El objetivo de este artículo es ayudarte a proteger tu infraestructura de Google Cloud y el código basado en contenedores en GKE, y a prepararte para un incidente de seguridad.
Proteger tu entorno y prepararte para el análisis forense con Google Cloud requiere varios pasos fundamentales:
- Proteger tu entorno de Google Cloud. Configura Google Cloud y, luego, implementa las cargas de trabajo mediante los controles y la configuración de seguridad adecuados.
- Preparar un plan de respuesta ante incidentes. Planifica cómo responder ante un incidente de seguridad.
- Recopilar todos los registros y fuentes de datos relevantes. Recopila los registros y los datos adecuados sobre el entorno de Google Cloud con anticipación y aprende cómo acceder a ellos.
- Usar la detección de eventos automática. Configura el análisis proactivo para alertarte sobre posibles eventos de seguridad, opciones de configuración incorrectas y vulnerabilidades.
- Usar herramientas de análisis para el análisis forense. Usa las herramientas de análisis para descubrir y documentar un incidente de seguridad.
Protege tu entorno de Google Cloud
Google Cloud proporciona una variedad de opciones de configuración y herramientas que puedes usar para proteger tu organización y tus proyectos de Google Cloud.
- A nivel de la infraestructura, las políticas de administración de identidades y accesos (IAM), las reglas de firewall, Workload Identity de GKE y PodSecurityPolicies de GKE pueden ayudarte a crear un entorno de Google Cloud con menos privilegios y con seguridad mejorada.
- A nivel del clúster de GKE, puedes usar herramientas enfocadas en contenedores, como la autorización binaria y Container Analysis en un enfoque de seguridad en capas.
- En la capa de la red, las funciones como VPC, balanceadores de cargas y Google Cloud Armor proporcionan controles de seguridad en el tráfico de red.
- A nivel de la app, las herramientas como Cloud Endpoints y Identity-Aware Proxy (IAP) proporcionan herramientas para mejorar la seguridad de las apps de GKE.
Modelo de responsabilidad compartida
La seguridad en la nube es una responsabilidad compartida entre el proveedor de servicios en la nube y el cliente. Google Cloud proporciona la encriptación en reposo de forma predeterminada y proporciona capacidades que puedes usar para proteger tus cargas de trabajo, como los controles de acceso de IAM y Cloud Audit Logging, a fin de proteger la infraestructura subyacente. Para GKE, Google Cloud ayuda a proteger el plano de control y los clientes son responsables de proteger las cargas de trabajo. Si deseas obtener un análisis más detallado del modelo de seguridad compartido, consulta la entrada de blog Explora la seguridad de los contenedores: el modelo de responsabilidad compartida en GKE.
Seguridad de GKE
Kubernetes y GKE proporcionan varios mecanismos para ayudar a proteger un clúster y sus cargas de trabajo. Si creas un entorno con acceso de mínimo privilegio y controles de seguridad adecuados, se reduce la superficie de ataque. En varias guías se proporciona información detallada sobre cómo proteger un clúster y sus cargas de trabajo:
- En la descripción general de seguridad de GKE, se describen los mecanismos de seguridad disponibles en GKE para ayudar a proteger un clúster y sus cargas de trabajo.
- Endurece la seguridad del clúster es una guía prescriptiva que contiene nuestras recomendaciones actuales para endurecer un clúster de GKE.
- En la serie de blog de seguridad de contenedores, se describen las formas de compilar y ejecutar cargas de trabajo con seguridad mejorada.
Prepara un plan de respuesta ante incidentes
Una respuesta eficaz ante incidentes es fundamental a fin de administrar y recuperarse de incidentes, así como para evitar incidentes futuros. Si deseas obtener ideas sobre cómo crear o mejorar el plan de respuesta ante incidentes, consulta el plan de respuesta ante incidentes de Google Cloud.
Las siguientes fases proporcionan una vista de alto nivel del proceso:
- Identificación. La identificación temprana y exacta de incidentes es clave para lograr una administración de incidentes sólida y efectiva. El enfoque de esta fase está en la supervisión de los eventos de seguridad para detectar y denunciar los posibles incidentes de datos.
- Coordinación. Cuando se informa un incidente, el experto en respuestas de guardia revisa y evalúa la naturaleza del informe del incidente a fin de determinar si representa un posible incidente de datos y comienza el proceso de respuesta.
- Solución. En esta etapa, el enfoque está en investigar la causa raíz, limitar el impacto del incidente, resolver cualquier riesgo de seguridad inmediato, implementar las correcciones necesarias como parte de la solución y recuperar los sistemas, datos y servicios afectados.
- Mejora continua. Con cada incidente nuevo, obtienes estadísticas nuevas que pueden ayudarte a mejorar las herramientas, el entrenamiento y los procesos.
Sigue el plan y aprende cuándo llamar a los expertos
Antes de iniciar cualquier código en un clúster de producción, es fundamental comprender el modelo de seguridad de tu app y la infraestructura (incluido Google Cloud), y crear un plan de respuesta ante incidentes. En el plan, asegúrate de incluir una ruta de derivación que describa qué equipos deben participar en cada fase de la respuesta.
Por ejemplo, una respuesta ante un incidente podría comenzar con el equipo de operaciones que envía un posible incidente que, luego, se clasifica como un incidente de seguridad. El incidente se asigna a los miembros del equipo de seguridad correspondiente. El plan de respuesta ante incidentes define cuándo llamar a profesionales de seguridad externos y cómo involucrarlos. El desarrollo de un proceso como este es fundamental para preparar una respuesta ante incidentes eficaz.
Recopila todos los registros y fuentes de datos relevantes
Después de implementar los mecanismos de protección de seguridad necesarios para el entorno de Kubernetes y redactar un plan de respuesta ante incidentes, debes asegurarte de poder acceder a toda la información necesaria para el análisis forense. Debes comenzar por recopilar los registros en cuanto implementes una app o configures un proyecto de Google Cloud. Capturar los registros ayuda a garantizar que estén disponibles si los necesitas para el análisis. En general, algunas fuentes de datos son exclusivas de los entornos de Google Cloud; otras son comunes de los contenedores. Es fundamental conservar ambas fuentes y ponerlas a disposición para el análisis.
Registros de seguridad
Los registros proporcionan un conjunto de datos enriquecido que permiten identificar eventos de seguridad específicos. Cada una de las siguientes fuentes del archivo de registro podría proporcionar detalles que se pueden usar en el análisis.
Registros de auditoría de Cloud
Los servicios de Google Cloud escriben registros de auditoría llamados registros de auditoría de Cloud. Estos registros te ayudan a responder las preguntas “¿Quién hizo qué, dónde y cuándo?”. Existen tres tipos de registros de auditoría para cada proyecto, carpeta y organización: actividad del administrador, acceso a los datos y eventos del sistema. Estos registros, en conjunto, te ayudan a comprender qué llamadas administrativas a la API se realizaron, a qué datos se accedió y qué eventos del sistema se produjeron. Esta información es fundamental para cualquier análisis. Para obtener una lista de los servicios de Google Cloud que proporcionan registros de auditoría, consulta Servicios de Google con registros de auditoría.
Los registros de auditoría de Cloud para GKE también exponen registros de auditoría de Kubernetes, que proporcionan un registro cronológico de las llamadas realizadas al servidor de la API de Kubernetes. Estos registros también se recopilan en los registros de auditoría de Cloud.
Registros de apps
Cloud Logging recopila tus registros de errores y de salida estándar del contenedor. Puedes agregar otros registros mediante el enfoque de sidecar.
Para los clústeres con Istio y Cloud Logging habilitados, el adaptador stackdriver
de Istio recopila y, luego, informa sobre los registros específicos de Istio a fin de enviarlos a Cloud Logging.
Registros de infraestructura
Los registros de infraestructura ofrecen estadísticas sobre las actividades y los eventos a nivel del SO, del clúster y de las redes.
Registros de auditoría de GKE
GKE envía dos tipos de registros de auditoría: los registros de auditoría de GKE y los registros de auditoría de Kubernetes. Kubernetes escribe registros de auditoría en los registros de auditoría de Cloud de las llamadas realizadas al servidor de la API de Kubernetes. Las entradas de registro de auditoría de Kubernetes son útiles a fin de investigar solicitudes sospechosas a la API, recopilar estadísticas y crear alertas de supervisión para llamadas no deseadas a la API. Además, GKE escribe sus propios registros de auditoría que identifican lo que ocurre en un clúster de GKE.
Registros de auditoría de Cloud de Compute Engine para nodos de GKE
GKE se ejecuta sobre los nodos de Compute Engine, que generan sus propios registros de auditoría. Además, puedes configurar auditd para capturar los registros del sistema Linux. auditd proporciona información valiosa, como mensajes de error, intentos de acceso y ejecuciones de objetos binarios para los nodos del clúster. Los registros de auditoría de Compute Engine y los registros de auditoría de auditd proporcionan estadísticas sobre las actividades que ocurren a nivel de la infraestructura del clúster subyacente.
Registros de contenedores
Para los registros del contenedor y del sistema, GKE implementa un agente de registros por nodo que lee los registros del contenedor, agrega metadatos útiles y, luego, almacena los registros. El agente de registros busca registros de contenedores en las siguientes fuentes:
- Registros de salida y de error estándar de procesos en contenedores
- Registros de entorno de ejecución de contenedores y kubelet
- Registros para los componentes del sistema, como las secuencias de comandos de inicio de VM
Para los eventos, GKE usa una implementación en el espacio de nombres kube-system
que recopila eventos de forma automática y los envía a Cloud Logging.
Los registros se recopilan para los clústeres, los nodos, los Pods y los contenedores.
Istio en Google Kubernetes Engine
Para los clústeres con Istio, el adaptador stackdriver
de Istio se instala durante la creación del clúster; este envía datos de métricas, registros y seguimiento de la malla a Google Cloud's operations suite.
Auditd para Container-Optimized OS en GKE
Para los sistemas Linux, el daemon auditd proporciona acceso a comandos a nivel del sistema del SO y puede proporcionar estadísticas valiosas sobre los eventos dentro de los contenedores. En GKE, puedes recopilar registros de auditd y enviarlos a Cloud Logging.
Registros de flujo de VPC
Los registros de flujo de VPC registran una muestra de flujos de red enviados y recibidos por instancias de VM. Esta información es útil para analizar la comunicación de red. Los registros de flujo de VPC incluyen todo el tráfico de Pod a Pod a través de la función Visibilidad dentro de los nodos en un clúster de Kubernetes.
Otros servicios de Google Cloud
Los servicios de Google Cloud generan registros de auditoría de Cloud; además, algunos servicios (como Cloud Load Balancing) generan registros adicionales. Después de habilitar un servicio, Cloud Logging comienza a generar registros. Para los registros de auditoría de Cloud, solo los registros de actividad del administrador están habilitados de forma predeterminada. Puedes habilitar los registros de auditoría para los otros servicios cuando esos servicios estén habilitados.
Instantáneas
Las instantáneas pueden ser útiles para analizar el contenido del almacenamiento en un punto determinado. Puedes tomar instantáneas del almacenamiento adjunto a un nodo del clúster de Google Kubernetes Engine y programarlas a intervalos regulares. Debido a que las instantáneas operan a nivel del nodo del clúster y los nodos del clúster pueden cambiar con el tiempo, debes automatizar la toma de instantáneas cada vez que se crea un nodo con almacenamiento nuevo. Tener una instantánea actualizada del almacenamiento del nodo ayuda a garantizar que tengas datos de almacenamiento disponibles para el análisis.
Usa la detección automática de eventos
La automatización, junto con las alertas, es clave para supervisar cualquier entorno a gran escala. Puedes usar las herramientas de Google Cloud y Kubernetes para identificar posibles amenazas y opciones de configuración incorrectas.
Security Command Center
Security Command Center es una plataforma de seguridad y riesgo para Google Cloud. Security Command Center puede facilitar la tarea de prevenir y detectar amenazas, además de responder a estas, mediante la recopilación de datos, la identificación de amenazas y la recomendación de acciones. Muchas herramientas de análisis de seguridad disponibles en Google Cloud brindan resultados a Security Command Center, lo que hace que esta plataforma sea útil para la detección automática. Security Command Center es una herramienta importante para tus equipos SecOps o DevSecOps.
Event Threat Detection
Event Threat Detection está diseñada para detectar de forma automática las amenazas más graves que enfrentan las organizaciones y publicar resultados en Security Command Center. Entre los ejemplos de amenazas, se incluyen la adición de cuentas de servicio y usuarios potencialmente maliciosos, las instancias de Compute Engine vulneradas y el tráfico de red malicioso. Event Threat Detection cuenta con la tecnología de inteligencia de amenazas de código abierto y de software propietario de Google, y funciona mediante la detección de amenazas en los registros disponibles en Cloud Logging.
Estadísticas del estado de la seguridad
Las estadísticas del estado de la seguridad son un servicio de Google Cloud que busca vulnerabilidades comunes y opciones de configuración incorrectas de forma automática en las ofertas de Google Cloud. Las estadísticas del estado de la seguridad pueden detectar vulnerabilidades relacionadas con los contenedores. Las vulnerabilidades incluyen la inhabilitación del registro o la supervisión, además de la habilitación del panel de la IU web en la administración de Kubernetes. Los resultados se escriben en Security Command Center.
Seguridad de Foresti
Forseti es un proyecto de código abierto que puede crear un inventario de los recursos de Google Cloud, analizar el entorno y establecer políticas para aplicar. Forseti está integrado y puede informar los hallazgos a Security Command Center. Puedes usar Forseti para verificar los valores de configuración arbitrarios en tus clústeres de GKE a fin de asegurarte de que sean coherentes con tus especificaciones. Si usas Anthos, puedes usar Anthos Config Management para definir opciones de configuración comunes, aplicarlas y supervisar el desvío de la configuración.
kube-hunter
kube-hunter analiza las debilidades de seguridad en los clústeres de Kubernetes mediante el análisis remoto, interno y de red. kube-hunter se puede usar en modo interactivo o como prueba de penetración remota automática para un clúster.
Usa herramientas de análisis para el análisis forense de contenedores
Muchas herramientas del ecosistema de Google Cloud y Kubernetes son útiles para el análisis forense. En esta sección, se incluyen tres herramientas de referencia.
Análisis de registros de Google Cloud mediante BigQuery
Los registros de auditoría de Cloud se pueden exportar a Cloud Storage, Pub/Sub o BigQuery para analizarlos en detalle. Por ejemplo, es posible que desees consultar todos los cambios de las reglas de firewall en tus proyectos de Google Cloud durante un período determinado. Para ello, puedes exportar los registros de auditoría de Cloud a BigQuery. Luego, con BigQuery, puedes construir una consulta de SQL para mostrar esa información.
Docker-explorer
Docker-explorer es un proyecto para ayudar a un analista forense a explorar sistemas de archivos de Docker sin conexión. Este enfoque puede ser útil cuando un contenedor de Docker está comprometido.
Kubectl Sysdig Capture + Sysdig Inspect
Kubectl Sysdig Capture es un complemento de código abierto de kubectl que activa una captura de la actividad del sistema en un Pod. Sysdig hace que la información del Pod esté disponible para Sysdig Inspect, una herramienta de código abierto que se usa a fin de realizar investigaciones de seguridad y solucionar problemas de contenedores. Sysdig Inspect organiza de manera visual la actividad detallada del sistema, de la red y de la app de un sistema Linux, y correlaciona las actividades dentro de un Pod.
¿Qué sigue?
- Obtén más información en la descripción general de seguridad de GKE.
- Consulta la serie de blog sobre seguridad de contenedores.
- Mira la charla Cloud Forensics 101 (Análisis forense básico de Cloud) de Next '18.
- Mira la charla de Container Forensics (Análisis forense de contenedores) de KubeCon EU 2019.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.